728x90

이 강의는 JSP를 다루는 방법에 대해서 강의를 하지만 웹서버(tomcat이나 glassfish 등)를 어떻게 다루는지나 IDE(Eclipse,IntelliJ 등)를 어떻게 사용하는지는 거의 다루지 않는다. 이 JSP강의 시리즈들은 JSP를 어떻게 다루는지에 대한 서술이 주로 이루어져있다. 그런 자료들이 필자의 블로그에 Usage-Java-JSP카테고리에 소개되어있으므로 이를 참고해주면 되겠다. 중간 중간에 꼭 필요한 부분에서 링크를 걸어서 진행하니 큰 걱정은 할 필요는 없다. 그러니 강의를 보다가 정보가 나오지 않는다면 반드시 위 카테고리를 참고하자. 그래도 모르는게 있으면 쪽지나 답글로 질문하라.


또한 JSP는 웹을 다루는 기술이다보니 html,css,js등이 사용이 되는 경우가 있다. 이러한 부분을 필자가 일일히 가르키면서 진행할 수 없다. html,css의 경우 마크업언어이지만 마크업언어라고 단순히 치부하기에는 너무나도 기능이 많고 속성이 많다. 또한 js는 그냥 하나의 프로그래밍 언어라서 이걸 가르치려면 아예 Java수준으로 가르쳐야된다는 문제점이 있다. 필자 블로그에서 이들에 대한 포스팅역시 제공하고 있다. 찾아서보면 된다.


그러나 만약 찾는게 없다면 구글링에 의존하라.


서블릿은 JSP를 배울때 가장 근간이 되는 것이다.

서블릿의 기본적인 가장 간단한 형태는 다음과 같다.


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "HelloServlet", urlPatterns = {"/hello", "/hello-servlet"})
public class HelloServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}
}


서블릿은 HttpServlet을 상속받은 형태이다.

애너테이션도 @WebServlet()안을 채우면된다.

여기서 name속성은 사족이다. 사실 없어도 크게 무방하긴하다. 물론 해주는게 좋다.

그러나 urlPatterns은 반드시 정해줘야한다. 왜냐하면 이 지정한 url로 접근할 것이기 때문이다.


만약 name속성을 안쓰고 urlpatterns만 쓸거라면 아래와 같은 코드도 가능하다.

@WebServlet({"/hello", "/hello-servlet"})



아직 안의 내용이 하나도 없다. 안의 내용을 만들어줘야한다.

안의 내용을 만들려면 http에 대한 조금의 이해가 필요하다.



http통신은 요청과 응답으로 이루어진다.

정확히말하면 모든 http통신은 요청이 있어야 응답을 해주는것이다.

우리가 웹사이트에서 http://www.naver.com라고 치는것은 바로 http통신으로 호출할건데 url주소 www.naver.com을 request한다. 라는 뜻이다.

그러면 서버에서는 그 응답으로 html소스를 넘겨 주는 것이다.


무슨말인지 모르겠다면 그냥 하다보면 이해가 될것이다.


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet({"/hello", "/hello-servlet"})
public class HelloServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet NewServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("나의 서블릿");
out.println("</body>");
out.println("</html>");
}
}


해당 예제는 "나의 서블릿"이라는 문자열이 출력되는 예제이다.

위의 코드에서 doGet만 수정을 했는데 우리가 get으로 호출했기 때문이다.

일반적으로 호출할시 아무짓도 하지않는다면 자동으로 get을 호출한다.

즉 일반적으로 url로 호출하게되면 무조건 적으로 get으로 호출된다는것이다.

만약 get이 아니라 post등의 다른방식으로 호출하고 싶다면 그에 맞게 추가적인 장치를 해줘야한다.



예제는 크롬에서 확인하자. 단축키로 F12를 눌러준다(맥이라면 cmd+i)



위와같이 창이뜨는데 Sources를 눌러서 우리가만든 url을 확인하자.


이제 어떻게 돌아가는지 좀알겠는가? 우리가 localhost:8080/hello를 request를 하면 우리는 hello라는 html을 response해주는 것이다.


'Programming > Java-JSP' 카테고리의 다른 글

[JSp-06]Declaration(선언문)  (0) 2017.10.15
[JSP-05]Expression(표현식)  (0) 2017.10.15
[JSP-04]Screptlet(스크립트릿)  (0) 2017.10.11
[JSP-03]JSP  (0) 2017.10.11
[JSP-02]form과 get, post  (0) 2017.10.10

+ Recent posts