날아라쩡글이의 블로그입니다.

HttpservletRequest, HttpservletResponse 본문

중앙 HTA (2106기) story/JSP story(Apache)

HttpservletRequest, HttpservletResponse

날아라쩡글이 2021. 11. 11. 15:03
반응형

Java홈페이지의 에디션을 확인하면 

Java SE = standard : 데스크탑에서 실행되는 응용프로그램 개발과 관련된 자바의 기술사용시 사용
Java EE = 서버에서 실행되는 프로그램 개발과 관련된 자바의 기술이 정의
Java ME = micro edition : 핸드폰과 관련된 기술
가 존재한다

Java EE를 확인하면, javaservlet.package가 존재한자. 자바의 web관련된 package이다
class interfaces는 이렇게 존재한다.

옆에 체크된 부분만 거의 사용한다. 

 

메소드를 확인해보면 destory()와 init(servletConfig), service(ServletRequest req, ServletResponse res)를 주로 사용한다. 
destroy()의 메소드는 폐기전의 실행이되며, _jspPestroy()의 메소드이다. 
init(servletConfig)의 메소드는 초기화 부분에서 실행이되며, _jspInit()의 메소드이다. 
service(ServletRequest req, ServletResponse res)는 요청시마다 실행이되며, _jspService()의 메소드이다. 요청마다 여러번 실행이된다. _jspService(HttpservletRequest request, HttpservletResponse response)처럼 Http에 특화된 응답 요청객체로 매개변수가 변경이 되어 있다. 

여기에서 Jsp의 핵심메소드가 이부분이다. 
Jsp의 생명주기를 구현하고있는 메소드이다. 

  • servlet interface은 웹서버에서 실행되는 웹어플리케이션이다. 
  • servlet인터페이스는 web서버에서 실행하는 웹어플리케이션에서 반드시 구현해야하는 서블릿라이프사이클메소드를 정의한다. 
  • servlet인터페이스의 추상메소드를 대부분 구현하고 있다. 
  • 몇몇메소드를 추가적으로 구현하고 있다.
  • http프로토콜이 아닌 다른 프로토콜을 사용하는 서버에서 실행되는 어플리케이션을 개발시 상속받는 클래스이다.

HttpServlet클래스 

void service(HttpServlet Request, HttpServlet Response)
void doGet(HttpServlet Request, HttpServlet Response)
void doPost(HttpServlet Request, HttpServlet Response)
void doPut(HttpServlet Request, HttpServlet Response)
void doDelete(HttpServlet Request, HttpServlet Response)

  • http기반의 웹어플리케이션은 개발할때 상속받는 클래스이다. 
  • 주요메소드들이 http에 최적화되어있다. 
  • 사용자 정의 웹어플리케이션을 만들때 httpServlet클래스를 상속받아서 정의한다. 
    • http에 맞게 정의를 해야하기 때문이다. 
  • doGet, doPost,doPut,doDelete는 각 http요청방식(get방식, post방식)등에 대응되는 메소드이다.
  • Tomcat은 클라이언트의 요청이 접수되면 httpServletRequest req, httpServletResponse resp객체를 생성하고, service(req, resp)를 실행한다. 
  • service(req, resp)는 요청을 분석해서 요청에 따라 doGet, doPost를 실행해서 클라이언트의 요청을 처리하게 한다.
  • 개발자는 httpServlet 클래스를 상속받아서 사용자정의 httpServlet을 정의하고, doGet, doPost메소드를 재정의한다. 혹은 요청방식과 무관하게 무조건 실행되는 service메소드를 재정의해서 클라이언트의 요청을 처리하는 웹어플리케이션을 정의한다. 
  • jsp는 java로 변환시 httpServlet을 상속받아서 httpServlet을 사용할 수 있게 만든다. 

만약 jsp가 존재하지 않는다면 java에서 out.write()와 out.print()을 직접작성을 해야한다. 
httpServletResponse는 http에 특화된 인터페이스로 web은 http프로토콜을 사용한다. 

web서버업체는 다르지만 동일한 사용방법으로 web에 대한 인터페이스가 정의되어있다.
모든 웹어플리케이션 서버는 javax.servlet, javax.servletHttp, javax.servlet.jsp패키지에 정의된 인터페이스를 구현하고 있다.

웹어플리케이션은 서버마다 구현의 코드와 구현 클래스는 다를 수 있지만, 위에서 정의한 인터페이스를 구현하고 있기 떄문에 객체의 사용방법은 완전히 동일하다. 

인터페이스 타입의 변수로 그 객체를 참조할 수만 있다면 메소드 재정의의 규칙에 따라서 실제로 구현된 객체에 재정의된 메소드를 실행할 수 있다. 

 Tomcat은 클라이언트의 요청이 접수되면 HttpServletRequestWrapper, HttpServletResponseWrapper을 생성한다.
_jspService메소드의 Request, Response 변수에 값을 전달한다. 
request,response는 각각 httpservletRequest, httpServletRespose타입이기 때문에 전달받은 객체의 HttpServletRequest,HttpServletResponse로 현변환해서 그 내부에 있는 HttpServletRequest,HttpServletResponse를 참조한다. 

HttpServletRequest

  • request 변수에 저장된다. 
  • 클라이언트가 서버로 보낸 요청메세지를 저장하고 있다. 
  • 요청메세지 정보를 획득할 수 있는 다양한 get으로 시작되는 메소드를 제공한다.
  • 주요 메소드
  • 반환타입 메소드명 설명 반환타입 메소드명 설명
    String
    getParameter(String name)
    지정된 이름의 요청파라미터값을 반환한다.
    요청파라미터값이 없으면 null을 반환한다
    void
    removeAttribute(String name)
    요청객체에서 지정된 이름으로 저장된 속성(객체)을 삭제하다.
    String[]
    getParameterValues(String name)
    지정된 이름의 모든 요청파라미터값을 배열의 형태로 반환한다
    요청파라미터값이 없으면 null을 반환한다
    HttpSession getSession() 요청객체의 세션아이디에 해당하는 세션객체를 반환한다.
    세션아이디가 없으면 세션객체를 새로 생성한 후 반환한다.
    세션아이디에 해당하는 세션객체가 없으면 새로 생성한 후 반환한다
    void
    setCharacterEncoding(String encoding)
    요청파라미터값을 지정된 인코딩방식으로 복원한다 HttpSession getSession(boolean create) create값을 true로 설정하면 위의 getSession() 메소드와 동일.
    create값을 false로 설정하면 세션아이디에 해당하는 세션객체가
    있을 때만 세션객체를 반환하고, 아닌 경우 null을 반환한다
    void setAttribute(String name, Object value) 요청객체에 이름,객체 쌍의 속성(객체)을 저장한다. String getHeader(String name) 지정된 이름의 요청헤더값을 반환한다
    Objecy getAttribute(String name)
    요청객체에서 지정된 이름으로 저장된 속성(객체)를 반환한다.
    지정된 이름의 속성이 존재하지 않으면 null을 반환한다.
    String
    getRequestURI()
    요청 URI 경로를 반환한다
String getContextPath() 현재 웹애플리케이션의 컨텍스트 경로를 반환한다 
localhost8080:/sample에서 sample로 설정한 경로를 의미한다. 배포한 프로젝트를 식별할 수 있는 경로
String getRemoteAddr() 요청을 보낸 클라이언트의 ip주소를 반환한다

httpServletResponse

  • response변수에 저장된다. 
  • 서버가 클라이언트로 보낼 응답 메세지를 책임진다. 
  • 응답메세지에 대한 다양한 정보를 설정할 수 있는 set으로 시작하는 메소드를 제공한다.
  • 주요 메소드 
  • 반환타입 메소드명 설명
     void sendRedirect(String url) 지정된 url을 재요청하게 하는 응답을 보낸다
    void setContentType(String type) 응답컨텐츠의 타입을 설정한다
    void setStatus(int statuscode) HTTP 응답코드를 설정한다
    void setHeader(String name, String value 응답헤더값을 설정한다
반응형

'중앙 HTA (2106기) story > JSP story(Apache)' 카테고리의 다른 글

paging처리하기, 페이징처리하기  (0) 2021.11.12
JSP tip  (0) 2021.11.11
post,get2가지 방식  (0) 2021.11.11
Tomcat 연결(응답, 요청)  (0) 2021.11.09
톰 캣  (0) 2021.11.08
Comments