ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • javax.servlet.http 패키지
    백엔드/서블릿&JSP 2021. 1. 7. 15:13

    2021/01/06 - [백엔드/서블릿&JSP] - javax.servlet 패키지

     

    위 글을 통해서 javax.servlet 패키지가 어떻게 생겼고 어떻게 구성되어 있는지 그리고 서블릿의 원리가

     

    대략적으로 어떻게 되는지 알 수 있었다.

     

    하지만 실제로 우리가 서블릿을 사용할 때 상속받는 httpServlet은 정작 javax.servlet 패키지에 없었다.

     

    httpServlet는 javax.servlet.http 패키지에 별도로 속해있다.

     

    아마 굳이 이렇게 한 이유를 따지자면 Http 프로토콜에 대응하는 서블릿은 워낙 많이 쓰니까 별도로

     

    분리한 것이 아닐까 싶다.

     

    해당 글에서는 javax.servlet.http에 대해서 쓸 예정이다.

     

    하지만 실제로 대부분 개념은 이미 javax.servlet에서 알아본 내용이고 세션과 쿠키에 대한 부분이

     

    그나마 새로운 부분이라 할 수 있다.

     

    주요 인터페이스

    1. HttpServletRequest

    ServletRequest 인터페이스를 확장한 인터페이스.

     

    ServletRequest에 Http 프로토콜에 대응할 수 있도록 기능을 확장한 인터페이스다.

     

    클라이언트의 요청(Request)를 받아서 객체를 생성하고 서블릿에 전달하는 역할을 한다.

     

    하지만 기존 ServletRequest에 Http 프로토콜 관련 메서드들이 추가됐다.

     

    메서드명

    설명

    getCookies()


    클라이언트가 요청(request)와 함께 전달한 모든 쿠키를 반환.

    쿠키란 세션 관리를 위해 사용되는 개념으로

    클라이언트 측 브라우저에 저장된다.

    그래서 브라우저는 서버에 요청을 보낼 때 쿠키가

    있으면 그것을 같이 전달하는데 해당 메서드를 통해서

    요청을 통해 전달된 쿠키를 확인할 수 있다.

    getSession()


    클라이언트가 보낸 해당 요청에 대한 Session을 반환한다.

    Session이란 http 프로토콜의 특징인 Stateless(상태 유지 못함)을

    극복하고자 나온 개념이다.

    Session을 이용하면 Http 프로토콜을 이용함에도 불구하고

    서로 다른 서블릿 페이지에서도 클라이언트의 상태를 식별하고

    유지할 수 있다.

    getHeader(String name)


    Http Request를 통해 전달된 헤더 값 중 입력한 이름과 동일한 헤더 값을 반환

    getRequestURL()


    클라이언트가 요청을 하는데 사용한 URL을 반환한다.

    해당 메서드를 사용하면 사용자가 어떤 경로로 요청을 보냈는지

    확인이 가능하다.

    2. HttpServletResponse

    ServletResponse에서 Http 프로토콜에 대응하기 위해 기능을 확장한 인터페이스.

     

    헤더값이나 쿠키 등에 관한 메서드들이 추가되어있다.

     

    메서드

    설명

    addCookie(Cookie cookie)


    클라이언트로 보내는 응답(Response)에 쿠키를 추가 할 수 있음

    해당 메서드를 여러번 호출해서 다수의 쿠키를 보낼 수 있음.

    addHeader(String name, String value)


    클라이언트로 보내는 응답(Response)헤더에 입력한 이름으로

    헤더 값을 추가할 수 있음.

    sendError(int sc)


    클라이언트로 보내는 응답(Response)에

    지정된 상태 코드를 사용하여 에러를 일으킬 수 있음.

    getStatus()


    해당 응답(Response)의 현재 상태 코드를 반환.

    sendRedirect(String location)


    클라이언트로 보내는 응답(Response)에 해당 위치로

    이동하라는 명령을 실어서 보냄.

    location을 지정해놓으면 브라우저는 response를 수신함.

    동시에 해당 위치로 자동으로 이동하게 된다.

    3. HttpSession

    일반적으로 Http 프로토콜은 Stateless 방식의 프로토콜이다.

     

    무슨 말이냐면 클라이언트가 서버에 요청(request)를 하고 서버로부터 응답(response)를 받고나면

     

    둘 사이에 연결고리가 없이 연결이 끊긴다는 말이다.

     

    즉 10번 요청하면 요청을 할때마다 새로운 요청으로 인식하고 상태를 저장하지 않는다.

     

    하지만 웹 페이지를 이용하다보면 로그인, 쇼핑과 같이 클라이언트의 상태를 유지해야할 때가 있다.

     

    그럴 때 사용되는 것이 바로 Session이다.

     

    HttpSession 인터페이스는 두 웹페이지 사이에서의 요청, 여러번의 웹페이지 방문에서

     

    사용자를 식별하고 저장할 수 있는 Session객체를 정의하고 메서드를 제공한다.

     

    메서드명

    설명

    getId()


    해당 세션에 할당된 ID값을 반환한다.

    컨테이너는 각 세션(브라우저)별로 요청(request)를 보내면

    세션 id를 발급해준다.

    isNew()


    해당 세션이 이전에 생긴 세션인지, 새로 생긴 세션인지 구분.

    만약 새로운 세션이라면 true를 반환, 그렇지 않으면 false 반환.

    invalidate()


    해당 세션을 무효화하고 세션에 바인딩된 객체를 해제한다.

    setAttribute(String name, Object value)


    파라미터로 전달한 이름과 함께 session객체에 해당 객체를 저장한다.

    getAttribute(String name)


    setAttribute()메서드를 통해서 저장한 객체를 불러온다.

     

    주요 추상 클래스

    1. HttpServlet

    javax.servlet의 GenericServlet의 기능을 확장한 추상 클래스.

     

    Http 프로토콜에 대응하여 메서드들이 추가되었다.

     

    해당 추상클래스는 doGet(), doPost(), doDelete(), doPut() 등의 메서드 중 최소 하나는 구현해야 한다.

     

    HttpServlet은 GenericServlet의 특성을 그대로 받았기 때문에 init(), destroy()는 건드릴 필요가 없다.

     

    게다가 service()메서드도 오버라이드 할 일은 거의 없다고 봐야 한다.

     

    주요 메서드는 다음과 같다.

     

    메서드명

    설명

    doGet()


    Get 요청을 처리하기 위해 사용하는 메서드

    doPost()


    Post 요청을 처리하기 위해 사용하는 메서드

    doPut()


    Put 요청을 처리하기 위해 사용하는 메서드

    doDelete()


    Delete 요청을 처리하기 위해 사용하는 메서드

    2. Cookie

    클라이언트와 서버 사이에 요청(request)와 응답(response)가 오갈 때 서로 주고 받는 작은 단위의 정보.

     

    세션과 마찬가지로 Http의 stateless(상태 유지 없음)을 극복하고자 나온 개념.

     

    클라이언트가 서버에 요청을 보내면 서버는 요청에 대한 응답에 쿠키를 추가해서 전달한다.

     

    이 쿠키는 클라이언트의 브라우저에 저장되고 이후 클라이언트가 요청을 보낼때마다 쿠키를 같이 보낸다.

     

    서버는 쿠키를 보고 사용자를 식별한다.

     

    Cookie 추상 클래스는 위와 같은 개념의 Cookie를 지원하기 위해 나온 클래스다.

     

    주요 메서드는 다음과 같다.

     

    메서드명

    설명

    getName()


    전달 받은 쿠키의 이름을 반환한다.

    setValue(String newValue)


    쿠키에 새로운 값을 할당한다.

    getValue()


    쿠키에 입력되있는 값을 반환한다.

    setMaxAge(int expiry)


    쿠키의 최대 유지 시간을 지정한다.

     

    '백엔드 > 서블릿&JSP' 카테고리의 다른 글

    forward와 sendRedirect 차이  (0) 2021.01.11
    세션과 쿠키(Session과 Cookie)  (0) 2021.01.07
    javax.servlet 패키지  (0) 2021.01.06
    JSP 기초 문법  (0) 2020.11.02
    JSP(JavaServer Pages)란?  (0) 2020.11.01
Designed by Tistory.