Servlet 및 JSP를 이용한 게시판, 하이브리드 웹개발
1. 반드시 알고있어야 하는 API
가. HttpServlet
==> 서블릿을 만들때 상속 받는다.
==> 클라이언트가 요청가능하다.
==> 한번만 생성
나. HttpServletRequest
==> 클라이언트가 요청시 매번 생성한다.
- 폼데이터 얻기(파라미터) request.getParameter(key)
- 한글로 인코딩 request.setCharacterEncoding("euc-kr");
- 바인딩
- 포워드
RequestDispatcher dis = request.getRequestDispatcher(target);
dis.forward(requset, response);
다. HttpServletResponse
==> 클라이언트가 요청시 매번 생성한다.
- MIME 설정 response.setContentType("text/html;charset="euc-kr")
- IO 얻기 PrintWriter out = response.getWriter();
- redirect 얻기 rsponse.sendRedirect(target);
라. ServletConfig
==> 서블릿당 한개씩 생성 ( 서블릿을 관리 )
- 초기화 파라미터 얻기 getInitParameter(key)
- ServletContext 얻기 getServeltContext()
마. ServletContext
==> 웹어플리케이션(컨텍스트)당 한개씩 생성
( 컨텍스트 관리 )
- 컨텍스트 파라미터 얻기 getInitParameter(key) - 중요
- 바인딩 ctx.setAttribute(key,value) - 중요
- 파일읽기접근 ctx.getResourceAsStream(path):InputStream
- 로그기능 ctx.log(값)
바. HttpSession
=> 로그인, 장바구니 정보를 관리하기 위한 매커니즘이다.
=> 기본적으로 웹 브라우저와 동일하다.하지만 보안때문에 계속 유지시키지 않고 일정시간
(기본 30분)이 지나면 제거시킨다.
2. Servlet의 LifeCycle
1) init 메소드
처음 생성될 때 , 단 한번만 호출되무로 초기화 작업시 사용된다.
2) service 메소드
클라이언트가 요청할 때마다 호출되므로 원하는 독적인 처리 작업시 필요
예) doGet, doPost
3) destory 메소드
서블릿 인스턴스가 웹 컨테이너가 제거될 때 호출된다. init 메소드에서 구현했던
초기화 작업을 반납처리하는 작업 시 주로 사용
3. 세션 관리 ( session tracking )
- 클라이언트와 서버간의 연결을 유지하는 방법.
- HTTP 프로토콜의 메커니즘
요청
클라이언트 ----------------------> 서버 ( 실행 )
<----------------------
응답
마지막으로 클라이언트와 서버간의 연결이 close된다.
이유는 계속 연결이 유지되면, 유지되는 자원관리를 서버가 담당해야 되는데..
동시적으로 접속하면 관리가 안되기 떄문이다. 결과적으로 이전 페이지에서 작업했던 정보들이 다음 페이지에서 확인이 불가능하다. 실제로 서비스되는 웹사이트들은 정보가 유지되는데 이것은 세션관리를 했기 때문이다.
- 세션관리?
==> 각 페이지마다 필요한 데이터를 공유하는 방법이다.
가. 세션
==> 공유 데이터를 서버에 저장하는 방법.
==> 예> 로그인 , 장바구니
나. 쿠키
==> 공유 데이터를 클라이언트에 저장하는 방법.
==> 예> 자동 로그인, 자주봤던 상품 보여주기
4. HttpSession 을 이용한 세션처리
- tomcat 컨테이너(서버)에 저장하는 방법으로 세션관리. 세션(session) 연결을 의미한다.
가. 저장공간( 세션영역 ) 생성
HttpSession session = request.getSession();
- getSession()
- getSession(true)
=====================> 세션(공간)이 있으면 재사용하고
없으면 새로 생성한다.
=====================> 처음 공간을 생성해야 되는
코드에서 사용한다.
예> 로그인 처리하는 서블릿
- getSession(false)
=====================> 세션(공간)이 있으면 재사용하고
없으면 null 리턴.
=====================> 생성된 세션을 사용하는 컴포넌트에서
사용한다.
나. 세션 사용
- getSession()
- getSession(true)
=====================> 세션을 처음 만드는 컴포넌트에서 사용.
- getSession(false)
=====================> 생성된 세션을 사용하는 컴포넌트에서 사용.
* 원하는 공유데이터 저장
session.setAttribute(key, value )
session.getAttribute(key)
다. 소멸 ( 제거 )
==> 기본적으로 웹 브라우저를 종료하면 제거된다.웹 브라우저를 종료하지 않아도 기본 30분이
지나면 제거된다.
==> 자바코드로 제거하는 방법
==> 세션(공간)이 제거되는 방법이다.
'프로그래밍 > Jsp' 카테고리의 다른 글
[JSP] JSP 기본 동작 (0) | 2017.08.17 |
---|---|
JSP프로그램을 위한 이클립스 설치 및 톰캣 이클립스 연동 (0) | 2017.04.26 |