[WEB] Servlet
Java Web Application
WAS에 설치되어 동작하는 어플리케이션.
자바 웹 어플리케이션에는 HTML, CSS, 이미지, Java로 작성된 Class(Servlet, package, interface 등), 각종 설정 파일 등이 포함된다.
Servlet이란?
Java Web Application의 구성요소 중 동적인 처리를 하는 프로그램의 역할을 한다.
WAS에서 동작하는 Java Class로 HttpServlet을 상속받아야 한다.
웹 페이지를 구성하는 화면(HTML)은 JSP로 표현하고, 복잡한 프로그래밍은 Servlet으로 구현한다.
URL요청을 처리하는 프로그램이다.
Servlet 작성방법
1. Servlet 3.0 이상
web.xml 파일을 사용하지 않고, Java Annotation을 사용한다.
2. Servlet 3.0 미만
Servlet을 web.xml 파일에 등록하여 사용한다.
1. web.xml에서 요청 URL에 대한 url-pattern을 찾는다.
(web.xml파일에 등록된 url-pattern이 없는 경우 HTTP Status 404 - Not Found를 리턴한다.)
2. 해당 url-pattern이 있으면 servlet-name을 확인한다.
3. servlet 태그 안에 있는 똑같은 이름의 servlet-name이 있는지를 확인한다.
4. 해당 servlet이 있으면, servlet-class에 적힌 실제 실행해야 할 클래스를 찾는다.(exam 패키지 안의 TenServlet 클래스)
5. 찾은 클래스를 실행한다.
Servlet 버전 설정방법
Eclipse에서 Web Project 생성시, Dynamic web module version에서 Servlet 버전을 설정할 수 있다.
URL Mapping
클래스가 WAS에 배포될 때 사용할 이름을 지정하는 것으로 기본은 클래스명과 동일하다.
아래는 Eclipse에서 Servlet을 생성했을 때 보이는 화면이다.
이클립스는 런타임으로 설정된 WAS에 http://localhost:8080{프로젝트이름}/{URL Mapping값}와 같은 규칙의 URL로 서블릿을 실행하게 한다.
doGet()
웹 브라우저가 서버에 GET method 방식으로 요청을 보내면, Servlet의 doGet()이 호출된다.
클라이언트(브라우저)가 요청하게 되면 서버는 요청을 받는 객체(HttpServletRequest)와 응답을 하기 위한 객체(HttpServletResponse)를 자동으로 만들어낸다.
1 2 3 4 5 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("<h1>Hello Servlet</h1>"); } | cs |
response.setContentType() : 응답객체의 타입을 지정해준다. 브라우저가 응답을 받았을 때, 받은 내용이 무엇인지를 알려주기 위해 사용한다.
text/html : 응답 결과는 text이며, 이 text는 html임을 의미.
PrintWriter : IO 객체. 여기서는 응답 결과인 text를 쓸 수 있는 통로를 만들어 주기 위해 사용한다.
getWriter() : response객체의 getWriter() 메서드를 호출하면 PrintWriter 객체를 반환해 준다.
out.close() : 다 사용한 out 객체는 close()를 통해 닫아준다.
참고 자료