서블릿
* JSP 표준이 나오기 전에 만들어진 표준으로 Java 웹 어플리케이션을 개발할 수 있도록 만들어졌다.
* 서블릿을 이용해 Java 클래스를 이용해 웹 어플리케이션을 개발한다.
* MVC 패턴을 지워나는 프레임워크를 만들어야 하는 경우 서블릿 기반 코드를 개발하는 경우가 많다.
서블릿 개발 과정
1) 서블릿 규약에 따라 자바 코드를 작성한다.
2) 자바 코드를 컴파일하여 클래스 파일을 생성한다.
3) 클래스 파일을 /WEB-ONF/classes 폴더에 패키지에 알맞게 위치시킨다.
4) web.xml 파일에 서블릿 클래스를 설정한다.
5) 톰캣 등의 컨테이너를 실행한다.
6) 웹 브라우저에서 확인한다.
서블릿 구현 (자바 코드 작성)
- NowServlet.java
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; // 1. HttpServlet 클래스를 상속받는 클래스 작성 public class NowServlet extends HttpServlet { // 2. 처리하고자 하는 HTTP 방식(method)에 따라 알맞은 메소드를 재정의해서 구현한다. 아래 예제는 GET방식 @override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // GET 방식 요청을 처리하는 doGet 메소드는 HttpServletRequest, HttpServletResponse 두 파라미터를 갖음. // 3. 응답을 전송하려면 (Response) response.setContentType() 메소드를 이용해 응답 컨텐츠 타입을 지정해야 한다. response.setContentType("text/html; charset=utf-8"); >// 4. 응답 결과를 웹 브라우저에 전송, getWriter() 메소드로 문자열 데이터를 출력할 수 있는 PrintWriter를 구한다. PrintWriter out = response.getWriter(); out.println("<html>"); //PrintWriter가 println() 메소드를 제공한다. out.println("<head><title> NowServlet </title></head>"); ... ... }
web.xml 매핑
* 서블릿 클래스 생성 후 WEB-INF 폴더의 web.xml 파일에 서블릿 클래스를 등록한다.
<?xml version="1.0" ...>
<web-app....>
<servlet> // 서블릿 클래스 등록
<servlet-name> 해당 서블릿을 참조할 때 사용할 이름 </servlet-name>
<servlet-class> 서블릿으로 사용할 클래스의 완전한 이름 </servlet-class>
</servlet>
<servlet-mapping> // 해당 서블릿이 어떤 URL을 처리할 것인지 매핑 정보 등록
<servlet-name> 매핑할 서블릿의 이름, 위에 등록한 이름 <servlet-name>
<url-pattern> 매핑할 URL 패턴 지정 </url-pattern> //위에 등록한 서블릿이 해당 URL을 처리한다. 서블릿의 url 지정
</servlet-mapping>
</web-app>
애노테이션을 사용한 매핑
* 서블릿 3.0부터 지원하는 @WebServlet 애노테이션을 사용하여 web.xml 파일에 따로 등록하지 않아도 서블릿으로 등록된다.
* 서블릿 3.0을 지원하는 웹 컨테이너는 @WebServlet이 적용된 클래스를 검색하여 자동으로 서블릿으로 등록한다.
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.annotation.WebServlet; // @WebServlet 애노테이션 (urlPattern 속성을 같는다. URL 패턴 지정) @WebServlet(urlPatterns = "/hello")
public class NowServlet extends HttpServlet { @override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=utf-8"); PrintWriter out = response.getWriter(); out.println("<html>"); //PrintWriter가 println() 메소드를 제공한다. out.println("<head><title> Hello </title></head>"); out.println("<body>"); out.println("안녕하세요,"); out.println(request.getParameter("name")); out.println("님"); >out.println("</body></html>"); }
* 웹 브라우저에 http://localhost:8080/hello?name=hong URL을 이용해서 위 서블릿을 실행 할 수 있다.
HTTP 방식별 구현 메소드
* HTTP는 GET, POST, HEAD, PUT, DELETE 방식을 지원한다.
* GET 방식
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
* POST 방식
protected void doPost(HttpServletRequest req, HttpServletPesponse resp) throws ServletException, IOException
'WEB > JSP Servlet' 카테고리의 다른 글
MVC 패턴과 모델 (0) | 2016.11.22 |
---|---|
서블릿 : 초기화 (0) | 2016.11.22 |
JDBC : 기초 (0) | 2016.11.21 |
커스텀 태그 : 기초, 태그 파일 (0) | 2016.11.05 |
JDBC : 기초 (0) | 2016.11.05 |