카테고리 없음
54일차[JSP/Servlet](2)-서블릿,JSP사용해보기
둥구는 지굴다
2023. 1. 9. 21:03
서블릿 라이프 사이클
- 클라이언트( 웹 브라우저 )가 서블릿에 요청(request) 시, 서블릿이 바로 호출되지 않는다.
- 웹 컨테이너에 해당 서블릿 클래스가 로딩되어 있지 않다면 init( ) 메서드 호출 후 service( ) 메서드 호출 & doGet( )/doPost( ) 호출
- 로딩되어 있다면 service( ) 메서드 호출
- destroy( ) 메서드를 호출하여 Servlet을 제거한다.
- JSP 페이지도 서블릿 클래스로 변환된 후 똑같은 라이프 사이클을 수행한다.
@WebServlet
- WebServlet에 경로를 입력하면 클라이언트에서, 해당 경로를 입력할 때 알아서 톰캣서버가 찾아서 실행해주게 된다.
init( )
- 서블릿이 최초로 호출되었을 때 한 번만 실행되며 서블릿 컨테이너가 자동으로 실행합니다.
- 서블릿 객체가 생성된 후, 한 번만 실행되므로 서블릿의 초기화 작업을 담당합니다.
service( )
- 클라이언트의 요청이 있을 때마다 매번 서블릿 컨테이너가 자동으로 실행합니다.
- 서블릿 실행 요청이 있을 때 마다 실행되어야 하는 내용을 구현
- 응답에 대한 모든 애용은 service( ) 메서드에 구현해야 함
HttpServletRequest request 객체
- 사용자가 HTML Form에 입력한 내용을 request 객체에서 받아온다.
- 헤더 정보, 파라미터, 쿠키, URI , URL, Body의 Stream 등을 읽어 들이는 메서드가 있다.
- getHeader(”원하는 헤더 이름”) :원하는 헤더 정보를 확인할 수 있다.
- getParameter( ) :form parameter 값을 가져온다.
HttpServletResponse response 객체
- 인자의 내용에 맞게 동적인 HTML 코드를 생성하여 response 객체에 담아 반환한다.
- getWriter( ) 메서드를 호출하여 PrintWriter 객체를 가져온 후 해당 객체에서 print, println메서드를 실행한다.
- form data를 처리한 결과를 WebPage에 생성하여 반환할 수 있다.
[예시코드]
GET 방식
package org.iclass;
@WebServlet(urlPatterns ={"/member/join"})
public class MemberJoinServlet extends HttpServlet{
private static final long serialVersionUID=1L;
private static final Logger logger= LoggerFactory.getLogger(MemberJoinServlet.class);
public void init( ) throws ServletException {
logger.info("[MyInfo]조인 서블릿 초기화");
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dispatcher=request.getRequestDispatcher("/member/join.jsp");
dispatcher.forward(request, response);
}
}
RequestDisaptcher
- 특정 자원에 처리를 요청하고 처리 결과를 얻어오는 기능을 수행하는 클래스이다.
- a.jsp로 들어온 요청을 b.jsp로 요청을 보낼 수 있다.
- 또한 a.jsp에서 b.jsp로 처리를 요청하고 b.jsp에서 처리한 결과 내용을 a.jsp의 결과에 포함시킬 수 있다.
- 요청을 보내는 방법은 forward( )와 include( ) 두 가지 방법이 있다.
forward( )
- 대상 자원으로 제어를 넘기는 역할을 한다.
- /a.jsp로 요청했을 때 /a.jsp에서 forward( )를 실행하여 /b.jsp로 제어를 넘길 수 있습니다.
- /b.jsp는 처리 결과를 최종적으로 브라우저에게 출력합니다.
RequestDispatcher dispatcher=request.getRequestDispatcher("/member/join.jsp");
dispatcher.forward(request, response);
- getRequestDispatcher("/member/join.jsp") : 해당 메서드의 인자값으로 이동할 페이지의 경로를 지정합니다.
- dispatcher.forward(request, response); :두 객체는 해당 주소에 대해 요청하고 응답하라는 뜻이 담겨있다.
post방식
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendRedirect("../");
}
- sendRedirect(”지정한 주소 또는 파일명” ) :지정한 주소 또는 파일명으로 get방식으로 이동