19.04.30 서블릿 기초 문법

Back-End/JSP 2019. 4. 30. 22:40
728x90
반응형

-서블릿 이란?-


웹 프로그래밍을 제공하기 위해서 JSP보다 먼저 나온기술로 JSP와 마찬가지로 웹페이지에서 호출을 하여 실행 결과를

브라우저를 통해 제공합니다.



서블릿의 장점

 서블릿의 단점

 

 JSP에는 없는 서버 측 프로그램의 기능이 있다.


대기업에서 사용하는 프레임워크의 기초 기술로 사용 된다.

 HTML, CSS 및 자바스크립트 그리고 웹디자인과 연동하기에는 어렵다.



 

-서블릿 예제 및 출력-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package ch08;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class ExampleServlet01
 */
@WebServlet("/ch08/exampleServlet01"// 서블릿이 호출될 이름을 선언합니다.
public class ExampleServlet01 extends HttpServlet { // 블릿으로 만들기 위해서는 반드시 상속해야할 클래스 입니다.
    private static final long serialVersionUID = 1L;
 
    /**
     * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
 
        response.setContentType("text/html; charset=EUC-KR"); // 브라우저로 응답 할 때의 타입과 문자셋 설정입니다.
        PrintWriter out = response.getWriter(); // 브라우저에 출력하기 위한 스트림 입니다.
        // html 시작
        out.println("<html>");
        out.println("<body>");
        out.println("<h1>이클립스로 서블릿 만들기</h1>");
        out.println("</body>");
        out.println("</html>");
        // html 끝
 
    }
 
}
 
cs

 

 

-서블릿 맵핑 방식-

 

서블릿을 실행하기 위해서는 브라우저에서 ul상에 표시되는 서블릿의 가상의 이름을 설정 해야 합니다.

서블릿 맵핑을 만드는 이유는 클래스 이름으로 실행하기 위한 이름은 너무 길고 그리고 보안에 노출되어 있는 경로를 간단하게

표시하기 위해서 입니다.

서블릿 맵핑은 2가지 방법이 제공됩니다.

첫 번째는 web.xml에서 설정하는 방법이고 두 번째는 서블릿 코드에 @WebServlet(어노테이션)으로 설정하는 방법이 제공 됩니다.

 

 

 

-서블릿의 주요 클래스-

 

 

  *HttpServlet

 

  *HttpServletRequest

 

  *HttpServletResponse

 

  *HttpSession

 

 

 

 

-HttpServlet-

 

HttpServlet 클래스는 서블릿을 만들기 위해 반드시 상속해야 할 필수 클래스입니다.

존재 목적 자체가 서블릿을 만들기 위해서 제공되는 클래스 입니다.

 

 

  Servlet(인터페이스) - GenericServlet(추상클래스) - HttpServlet

 

 

메소드

설명 

 

void init( )

 

서블릿의 객체가 생성 될 때 호출되는 메소드 

 

void destroy( )

 

서블릿의 객체가 메모리에서 사라질 때 호출되는 메소드 

 

void service(request, response)

 

서블릿의 요청이 있을 때 호출되는 메소드 

 

void doGet(request, response)

 

html에서 form의 메소드가 get일 때 호출되는 메소드 

 

void doPost(request, response)

 

html에서 form의 메소드가 pst일 때 호출되는 메소드 

 

 

 

-HttpServletRequest-

 

클라이언트가 데이터를 입력하거나 또는 클라이언트의 정보에 대한 요청 값을 가지고 있는 클래스

 

 메소드

 설명

 

String getParameter(name)

 

 name에 할당된 값을 반환하며 지정된 파라미터 값이 없으면 null 값을 반환합니다.

 

String[] getParameterValues(name)

 

 name의 모든 값을 String 배열로 반환합니다. 

 

Enumeration getParameterNames( ) 

 

 요청에 사용된 모든 파라미터 이름을 java.util.Enumeration 타입으로 반환합니다.

 

void setCharacterEncoding(env)

 

 post 방식으로 요청된 문자열의 character encoding을 설정합니다.

 

 

 

-HttpServletResponse-

 

클라이언트가 요청한 정보를 처리하고 다시 응답하기 위한 정보를 담고 있는 클래스 입니다.

 

 

메소드

 

 설명

 

void setHeader(name, value)

 

 응답에 포함될 Header를 설정합니다.

 

void setContentType(type)

 

 출력되는 페이지의 contentType를 설정합니다.

 

String getCharacterEncoding( )

 

 응답 페이지의 문자 인코딩 Type을 반환합니다.

 

void sendRedirect(url)

 

 지정된 URL로 요청을 재전송 합니다.

 

 

 

-HttpSession-

 

클라이언트가 세션에 정보를 저장하고 세션 기능을 유지 하기 위해서 제공되는 클래스입니다.

 

 메소드

 설명

 

 String getld( )

 

 해당 세션의 세션 ID를 반환합니다.

 

long getCreationTime( )

 

 세션의 생성된 시간을 반환합니다.

 

long getLastAccessedTime( )

 

 클라이언트 요청이 마지막으로 시도된 시간을 반환합니다.

 

void setMaxInactiveInterval(time)

 

 세션을 유지할 시간을 초단위로 설정합니다.

 

int getMaxInactiveInterval( )

 

 setMaxInactiveInterval(time)로 지정된 값을 반환합니다. 기본값은 30분으로 지정됩니다.

 

boolean isNew( )

 

 클라이언트 세션 ID를 할당하지 않은 경우 true 값을 반환합니다.

 

void invalidate( )

 

 해당 세션을 종료 시킵니다.

 

 

 

-서블릿의 라이프 사이클-

 

서블릿은 클라이언트가 브라우저에서 서블릿으로 요청을 하면 해당 서블릿은 언제 객체가 만들어지고,

언제 기존의 객체를 재활용하고 언제 종료가 되는지에 따른 라이프 사이클이 존재한다.

 

 

  * init( ) : 서블릿이 처음으로 요청이 되어 객체가 생성될 때 호출되는 메소드

 

  * service( ) : 클라이언트의 요청이 있을 때마다 호출되는 메소드

 

  * destroy( ) : 서블릿 서비스의 종료 및 재시작 그리고 서블릿 코드가 수정이 될 때 호출되는 메소드

 

  * doGet( ) : 클라이언트 요청 할 때 form의 method가 get 방식일 때 호출되는 메소드

 

  * doPost( ) : 클라이언트 요청 할 때 form의 method가 post 방식일 때 호출되는 메소드

 

 

 

 

  클라이언트 서블릿 요청 -> init (최초 한번 호출) -> service, doGet, doPost(반복적 호출) -> destroy(마지막 한번 호출)

 

 

 

-예제 및 출력결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package ch08;
 
import java.io.IOException;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@SuppressWarnings("serial")
@WebServlet("/ch08/ExampleServlet02"// <-서블릿 맵핑 이름을 선언
public class ExampleServlet02 extends HttpServlet {
 
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init 호출"); // 톰캣 서버 콜솔 화면에 출력 (서블릿의 객체가 생성이 될때 한번만 호출되는 메소드)
    }
 
    @Override
    public void destroy() {
        System.out.println("destroy 호출"); // 톰캣 서버 콜솔 화면에 출력 (서블릿의 서비스가 종료되거나 재시작될때 호출되는 메소드)
    }
 
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("service 호출"); // 톰캣 서버 콜솔 화면에 출력 (서블릿을 호출 할 때 마다 반복되어 호출되는 메소드)
    }
}
 
cs

 

 

 

 

-서블릿의 요청 방식-

 

get 방식 

 post 방식

 *일반적으로 검색이나 조건을 다른 페이지로 전송할 때 사용하는 방식.

 

*get 방식은 url에 노출이 되는 특징이 있기 때문에 보안적인 내용은 사용금지

 

 

 *브라우저에서 게시판에 글을 입력하거나 또는 회원가입을 하는

기능으로 다른 페이지로 전송할 때 사용하는 방식

 

*url 상에 노출이 되지 않고 html 헤더 값에 같이 전송되는 방식

 

 

 

 

 

 

 

 

 

 

728x90
반응형
: