본문 바로가기

JSP(Java Server Page)/Servlet

서블릿 작성 방법

■ 서블릿 작성 방법

   ο 서블릿 클래스 작성

     1. 다음의 한가지 방법을 이용하여 서블릿 클래스를 작성 한다.

        1) 첫번째 방법

   GenericServlet abstract 클래스를 상속 받는 서블릿 클래스를 작성하여 

   abstract void service(ServletRequest req, ServletResponse res) 메소드를 재정의 한다.


        2) 두번째 방법

             HttpServlet 클래스를 상속 받는 서블릿 클래스를 작성하여 다음의 메소드를 재정의 한다.

    - GET 방식을 처리하는 경우

               void doGet(HttpServletRequest req, HttpServletResponse resp)


    - POST 방식을 처리 하는 경우

                void doPost(HttpServletRequest req, HttpServletResponse resp)



   ο 디플로이먼트 디스크립터(deployment descriptor, 배포 설명자) 파일인 WEB-INF/web.xml 파일에서 환경 설정하거나 @WebServlet 어노테이션을 이용한 url 매핑

    1) WEB-INF/web.xml

      <servlet> 과 <servlet-mapping> 태그를 이용하여 서블릿을 uri와 매핑 한다.


       <servlet>

           <servlet-name>서블릿이름</servlet-name> 

           <servlet-class>패키지명을 포한한 서블릿 클래스 파일명</servlet-class>

       </servlet>


       <servlet-mapping>

           <servlet-name>서블릿이름</servlet-name>

          <url-pattern>경로패턴</url-pattern>

      </servlet-mapping>



   2) @WebServlet 어노테이션

    서블릿 클래스 윗부분에


     @WebServlet("경로패턴")

           또는

     @WebServlet(urlPatterns = {"경로패턴"})

           또는

     @WebServlet(name = "서블릿이름", urlPatterns = {"경로패턴"})



■ 클라이언트 요청 처리

   ο GET 방식

      - http header 에 정보를 실어 보내는 방식

      - default 전송방식으로 start-line 의 URL 뒤에 붙여 보내며 전달속도가 POST 보다 빠름

      - 256byte 까지 만 전송 가능하다.

      - get 방식 전송 예

         http://웹주소?이름1=값1&이름2=값2



   ο POST 방식

     - http body에 정보를 실어 보내는 방식으로 데이터 사이즈의 제한이 없으며 보안에  좋다.

     - form 테그에서 method="post" 속성을 이용하여 post 방식으로 처리를 요청 한다.



■ 서블릿 기본 코드

public class DemoServlet extends HttpServlet {

private static final long serialVersionUID = 1L;


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

process(req, resp);

}


@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

process(req, resp);

}


protected void forward(HttpServletRequest request, HttpServletResponse response, String path)

throws ServletException, IOException {

// 서블릿에서 포워딩(path로 포워딩). // 포워딩에서의 /는  cp 까지를 의미한다.

RequestDispatcher rd=request.getRequestDispatcher(path);

rd.forward(request, response);

}

protected void process(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

        }

}