본문 바로가기

Web Programming

Servlet API / HTTPServlet 클래스 / HttpServletRequest 객체와 HttpServletResponse 객체

Servlet API

javax.servlet 와 javax.servlet.http 패키지:  서블릿 API를 위한 인터페이스와 클래스

 

javax.servlet package

서블릿이나 웹 컨테이너에서 이용되는 클래스와 인터페이스 포함

 

  • 인터페이스
  1. Servlet
  2. ServletRequest
  3. ServletResponse
  4. RequestDispatcher
  5. ServletConfig
  6. ServletContext
  7. SingleThreadModel
  8. Filter
  9. FilterConfig
  10. FilterChain
  11. ServletRequestListener
  12. ServletRequestAttributeListener
  13. ServletContextListener
  14. ServletContextAttributeListener
  • 클래스
  1. GenericServlet
  2. ServletInputStream
  3. ServletOutputStream
  4. ServletRequestWrapper
  5. ServletResponseWrapper
  6. ServletRequestEvent
  7. ServletContextEvent
  8. ServletRequestAttributeEvent
  9. ServletContextAttributeEvent
  10. ServletException
  11. UnavailableException

 

 

The javax.servlet.http package :

http request만을 위한 클래스와 인터페이스 포함

  • 인터페이스
  1. HttpServletRequest
  2. HttpServletResponse
  3. HttpSession
  4. HttpSessionListener
  5. HttpSessionAttributeListener
  6. HttpSessionBindingListener
  7. HttpSessionActivationListener
  8. HttpSessionContext (deprecated now
  • 클래스
  1. HttpServlet
  2. Cookie
  3. HttpServletRequestWrapper
  4. HttpServletResponseWrapper
  5. HttpSessionEvent
  6. HttpSessionBindingEvent
  7. HttpUtils (deprecated now)

 

 

HTTPServlet 클래스

http://j2eetutorials.50webs.com/completejava.50webs.com/j2ee_servlet_hierarchy.html

  • GenericServlet을 상속받은 Servlet
  • HTTP Protocol 지원하는 Servlet
public void service
(ServletRequest req,ServletResponse res)
request, response 객체를 http 형으로 변환하여 service 메소드로 전송
protected void service
(HttpServletRequest req, HttpServletResponse res) 
service메소드로부터 request를 전달받은 후, request를 doXXX()메소드로 전달함
doXXX메소드는 전달받은 http request의 타입에 따라 결정됨 
protected void doGet
(HttpServletRequest req, HttpServletResponse res) 
GET 요청을 처리하는 메소드
web container에 의해 동작
protected void doPost
(HttpServletRequest req, HttpServletResponse res)
POST 요청을 처리하는 메소드
web container에 의해 동작
protected void doHead
(HttpServletRequest req, HttpServletResponse res) 
HEAD 요청을 처리하는 메소드
web container에 의해 동작
protected void doOptions
(HttpServletRequest req, HttpServletResponse res)
OPTION 요청을 처리하는 메소드
web container에 의해 동작
protected void doPut
(HttpServletRequest req, HttpServletResponse res) 
PUT 요청을 처리하는 메소드
web container에 의해 동작
protected void doTrace
(HttpServletRequest req, HttpServletResponse res)
Trace 요청을 처리하는 메소드
web container에 의해 동작
protected void doDelete
(HttpServletRequest req, HttpServletResponse res) 
DELETE 요청을 처리하는 메소드
web container에 의해 동작
protected long getLastModified
(HttpServletRequest req)
HttpServletRequest 가 마지막으로 수정된 시간을 반환 (1970년 1월 1일 자정부터 카운트)

 

 

 JSP/Servlet 의 주요 내장객체와 메소드

 내장 객체 리턴 타입(Return Type)  설명 
request  javax.servlet.http.HttpServletRequest  웹 브라우저의 요청 정보를 저장하고 있는 객체 
요청이 발생할 때 만들어짐
 해당 request를 포워딩한 응답jsp에서만 쓸 수 있음
요청페이지부터 응답페이지 까지에서만 쓸 수 있음 
(parameter, attribute 속성)
response  javax.servlet.http.HttpServletResponse  웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 
out  javax.servlet.jsp.jsp.jspWriter  JSP 페이지에 출력할 내용을 가지고 있는 출력 스트림 객체이다. 
session  javax.servlet.http.HttpSession  하나의 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체
(웹브라우저 별/ 클라이언트별로 만들어짐)
모든 jsp와 servlet에서 꺼내쓸 수 있음.
 단, 내가 직접적으로 session객체에 담은 값을 지우기 전까지

   -  클라이언트별로 만들어지는 객체
   -  새로운 요청이 있어도 Session객체에 속성들은 그대로 유지된다.
   -  attribute가 있음
application  javax.servlet.ServletContext  웹 어플리케이션 Context의 정보를 저장하고 있는 객체 
 웹 어플리케이션 전역에서 언제나 꺼내쓸 수 있음(자바클래스에서 쓸 수 있음)
LifeScope가 가장 김
 parameter, attribute 
pageContext  javax.servlet.jsp.PageContext  JSP 페이지에 대한 정보를 저장하고 있는 객체 
 LifeScope가 가장 짧음
attribute
   -  out / request / response / session 정보 얻는게 가능
      ex) pageContext.getOut();
            pageContext.getRequest();
            pageContext.getSession();
page  java.lang.Object  JSP 페이지를 구현한  자바 클래스 객체
담은 값을 해당 jsp 내에서만 쓸 수 있음 (화면이 넘어가면 담은값은 소멸)
config  javax.servlet.ServletConfig  JSP 페이지에 대한 설정 정보를 저장하고 있는 객체 
exception  java.lang.Throwable  JSP 페이지서 예외가 발생한 경우에 사용되는 객체 

 

  

 

HttpServletRequest  객체와 HttpServletResponse 객체

 내장 객체 리턴 타입(Return Type)  설명 
request  javax.servlet.http.HttpServletRequest  웹 브라우저의 요청 정보를 저장하고 있는 객체 
요청이 발생할 때 만들어짐
해당 request를 포워딩한 응답jsp에서만 쓸 수 있음
요청페이지~응답페이지까지 유효 
(parameter, attribute 속성)
response  javax.servlet.http.HttpServletResponse  웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 

 

HttpServletRequest 객체의 메소드

메서드
리턴 타입
설명

getRemoteAddr()
 
Sring
서버에 연결한 클라이언트의 IP 리턴
보안이 필요한 웹 어플리케이션인 경우 IP를 검사하거나 접근 기록을 남기는데에 사용 가능
getProtocol()
String
클라이언트가 요청한 프로토콜 리턴
getCharacterEncoding()
String
클라이언트가 전송한 http 요청 정보 인코딩에 사용된 캐릭터 set 리턴

getContentType()
String
클라이언트가 전송한 http 요청 정보 콘텐츠 타입 리턴
클라이언트가 전송한 http 요청 메세지의 Content-Type 헤더 값
getContentLength()
long
클라이언트가 전송한 http 요청 정보의 
정보의 길이를 구할 수 없는 경우에는 -1을 리턴
getMethod()
String
클라이언트가 요청한 HTTP Method
getServerName()
String
클라이언트가 연결할 때 사용한 서버 이름
getRequestURI()
String
클라이언트가 요청한 URL에서 경로
getServerPort()
int
서버가 사용중인 포트 번호
getContextPath()
String
JSP 페이지가 속한 웹 어플리케이션의 컨텍스트 경로
setCharacterEncoding(String charset)
void
클라이언트의 요청 정보를 디코딩할 때 사용할 캐릭터셋 설정
getParameter()와 같은 파라미터 정보를 얻어오는 메서드 사용 전에 설정해야 적용가능

GET방식의 경우 서버 설정을 통해 인코딩설정을 변경해주어야 함

 

Parameter 관련

getParameterNames() java.util.Enumeration 모든 파라미터명을 반환
getParameter(String name)  String 파라미터명으로 파라미터 값을 반환 
getParameterValues(String name)   String[] 파라미터명으로 파라미터 값을 반환 
(해당 파라미터명과 매핑된 값이 여러개일 때)

주요 정보

getRequestURL() 요청 해당 URL을 리턴한다.
getRequestURI() URL에서 스키마, 서버이름, 포트번호를 제외한 나머지 주소와 파라미터
getScheme() http, https, ftp와 같은 프로토콜
getServerName() 서버 이름
getServerPort() 서버 포트
getContextPath() JSP 페이지가 속한 웹어플리케이션의 컨텍스트 패스를 리턴
getMethod() GET/POST 등의 HTTP 메소드
요청방식이 GET 방식인지 POST 방식인지 알려줌
isSecure() SSL 보안 여부. https와 같은 보안 채널의 사용 여부 true/false
getLocale() 지역 정보
getProtocol() 사용하는 프로토콜. 프로토콜/메이저버전.마이너버전
getCookies() 모든 쿠키 값을 반환한다.

Header 정보

getHeaderNames() java.util.Enumeration 모든 헤더 명을 반환한다.
getHeader("user-agent") Mozilla/5.0 .... 헤더명으로 헤더 값을 반환한다.

 

 

 

HttpServletResponse 객체의 메소드 

void addCookie(Cookie cookie) 인자값으로 주어진 쿠키를 응답정보의 헤더에 추가한다. 쿠키는 응답정보의 Set-Cookie 헤더의 값으로 추가되어 클라이언트로 전송
String encodeRedirectURL(String url) 클라이언트와 서버 간 세션이 유지되는 상태에서 브라우저 쿠키를 지원하지 않을 때 주어진 URL 뒤에 세션 아이디를 추가하고 인코딩하여 요청을 재전송
String encodeURL(String url) 주어진 URL에 세션 아이디를 추가하여 인코딩해서 반환
void sendRedirect(String location) 응답을 클라이언트가 요청한 URL이 아니라 sendRedirect()에 주어진 URL로 재전송한다. 매개변수 location은 절대 URL이나 상대 URL로 지정
서버의 특정 자원이 다른 URL로 이동할 때 사용할 수 있는 메소드
public void setDateHeader(String name, long date) 날짜를 밀리 초로 변환하여 주어진 이름과 날짜를 응답정보 헤더에 설정
public void setHeader(String name, String value) 응답정보의 헤더에 주어진 이름과 값을 설정
public void setIntHeader(String name, int value) 주어진 이름과 정수값을 갖도록 응답정보 헤더에 추가
public void setStatus(int sc) 응답으로 전송될 HTTP 응답에 대한 상태코드

 

References

 

https://www.devkuma.com/docs/jsp-servlet/httpservletrequest-%EB%A9%94%EC%86%8C%EB%93%9C/

 

JSP/Servlet | HTTPServletRequest 메소드

개발 지식 공유

www.devkuma.com

 

https://d8040.tistory.com/188

 

HTTPServletRequest 메소드 정리

HTTP 요청을 하면서 전송한 값, 쿠키, 헤더 및 클라이언트 정보를 가져오는데 사용되는 것이 request이다. 이 Request 객체의 메소드에 대해서 정리를 해보았다. 시작하기 전 반환값 예는 아래와 같은

d8040.tistory.com

 

https://www.javatpoint.com/servlet-api

 

Servlet API - javatpoint

Servlet API with servlets, hidden, form, field, java, tutorial, examples, http, client, server, session, cookies, file upload, download servlet etc.

www.javatpoint.com

 

https://www.tutorialspoint.com/servlets/servlets-client-request.htm

 

Servlets - Client HTTP Request

Servlets - Client HTTP Request When a browser requests for a web page, it sends lot of information to the web server which cannot be read directly because this information travel as a part of header of HTTP request. You can check HTTP Protocol for more inf

www.tutorialspoint.com

 

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods

 

HTTP request methods - HTTP | MDN

HTTP defines a set of request methods to indicate the desired action to be performed for a given resource. Although they can also be nouns, these request methods are sometimes referred to as HTTP verbs. Each of them implements a different semantic, but som

developer.mozilla.org

 

https://m.blog.naver.com/PostView.nhn?blogId=javaking75&logNo=140169909222&proxyReferer=https:%2F%2Fwww.google.com%2F 

 

[JSP&Servlet] 요청 재지정 ( RequestDispatcher , forward(), include() )

> Dispatcher 사전적의미 보기 └ 접기 요청 재지정 : 클라이언트로부터 요청 받은 Servlet 프로그램...

blog.naver.com

https://www.hscripts.com/tutorials/jsp/variables.php

 

Predefined Variables in Java Servlet Pages - JSP Tutorial

Predefined Variables in JSP What are the Predefined Variables available in Java Servlet Pages? Explanation To make things simple, there are some predefined variables in JSP that need not be declared. These variables can be used with servlets and Java beans

www.hscripts.com