기록/BACKEND

[WEB] Servlet

5월._. 2022. 3. 29.
728x90

Servlet Life Cycle

  • 이 메소드들은 재정의해서 사용할 수 있지만 service 메서드는 재정의시 주의가 필요하다. 밑의 그림과 같은 순서로 호출되도록 만들어졌기 때문에 재정의할 때 다음 메서드 호출을 생략한다면 예상한대로 진행되지 않을 수 있다.
  • doGet, doPost 중 하나만 만든 상태에서 없는 메소드 방식으로 접근하면 405 Error(허용되지 않는 메소드 에러)가 발생한다. 
  1. init() : 서블릿 객체 생성 후 초기화될 때 한 번 호출된다.
  2. service : 요청될 때마다 호출된다.
    • service(ServletRequest req, ServletResponse res)
    • service(HttpServletRequest req, HttpServletResponse res)
    • doGet(HttpServletRequest req, HttpServletResponse res)
    • doPost(HttpServletRequest req, HttpServletResponse res)
  3. destroy() : 서비스 중지, 변경 시 한 번 호출된다.

Servlet 관련 주요 API

  • 문서 : javax.servlet.*

Servlet > GenericServlet > HttpServlet > 사용자Servlet

  • doGet(), doPost()

ServletRequest > HttpServletRequest : 요청 객체

  • 한글 인코딩 : request.setCharacterEncodint("utf-8")
  • 파라미터 가져오는 메서드
    • 단일값 - request.getParameter("name") : String
    • 다중값 - request.getParameterValues("name") : String[]
    • 이름만 - request.getParameterNames() : Enumeration
    • 모든 데이터 - request.getParameterMap() : Map<String,String>
  • 프로젝트 context 주소 가져오기 : request.getContextPath()

ServletResponse > HttpServletResponse : 응답 객체

  • meme type, 한글 인코딩 : response.setContentType("text/html;charset=utf-8")
  • 응답 출력스트림 생성 : reponse.getWriter() : PrinterWriter

HttpSession

  • 세션 얻기 : request.getSession() : HttpSession
    • 인자값으로 true : 세션 없으면 생성, 있다면 기존 세션 반환 (ex. 로그인)
    • 인자값으로 false : 세션 없으면 null, 있다면 기존 세션 반환 (ex. 로그아웃)

ServletContext

  • 모든 서블릿/jsp가 공유할 수 있다.
  • setAttribute()
  • getAttribute("name")
  • removeAttribute("name")

 

'기록 > BACKEND' 카테고리의 다른 글

[WEB] 파라미터와 어트리뷰트  (0) 2022.04.04
[WEB] 요청과 응답의 Scope  (0) 2022.04.04
[WEB] Java에서 DB연결하기  (0) 2022.04.02
[WEB] MVC Pattern  (0) 2022.03.29
[WEB] DTO Pattern  (0) 2022.03.28

댓글