모든지 기록하자!

Servlet request와 response 본문

JSP, Servlet

Servlet request와 response

홍크 2021. 6. 5. 20:11
728x90

Reqeust(요청)는 검색사이트에서 검색 결과를 요청하거나 로그인 요청, 회원가입 요청 등 과 같이 서버로 데이터를 주고받기를 원하는 과정을 Reqeust라고 한다. 자바는 객체지향 이기 때문에 Reqeust도 객체로 만들어서 객체로 전달된다.  이 객체 이름을 Reqeust 객체라고 한다.

 

Response(응답)는 서버에서 사용자의 요청이 들어오면 그 요청에 맞게 데이터를 가공하고 처리해서 사용자에게 다시 응답해주는 것을 말한다. 응답을 객체로 만든 것을 Response 객체라고 한다.

 

HttpServelt 

HttpServelt은 추상 클래스이다. 아래 클래스 다이어그램을 확인해보자

 

ServletEx는 사용자가 목적에 맞게 만든 Servlet이다. 자바 파일을 만들 때 Servlet 객체로 만들려고 하면

반드시 HttpServelt을 상속받아서 만들어야 한다. HttpServelt은 GenericServlet이라는 추상 클래스를 상속받고 GenericServlet은 ServletConfig, Servlet, Serializable 인터페이스를 구현하고 있다. HttpServelt이 인터페이스와 추상 클래스를 상속받고 모두 모아서 내가 만드는 Servlet 클래스에서 다시 상속을 받는 이유는 Local에서 작업하는 게 아닌 WebServer와의 통신 과정에서 다양하고 많은 데이터가 오고 갈 수 있기 때문에 많은 기능이 필요하다. 그 기능들을 위 그림과 같이 표준화해서 만들어 놓았기 때문에 우리는 HttpServelt만 상속 받아서 쉽게 사용할 수 있다.

 

Servlet을 생성해보면 다음과 같이 구성된다. 

@WebServlet("/hs1")
public class HelloServlet extends HttpServlet {
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().append("Served at: ").append(request.getContextPath());
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

클래스 파일을 생성한 것이 아닌 Servlet을 생성했기 때문에  웹서버와 통신할 때 가장 중요한 HttpServlet을 자동적으로 상속 받고있다. 

 

doGet과 doPost는 둘 다 사용자에 요청에 의해서 응답을 하는 메서드이다. Servlet으로 요청되는 데이터 전송방식이 Get방식일 땐 doGet, Post 방식일땐 doPost를 호출한다. 두개의 메서드 모두 파라미터를 기본적으로 HttpServletRequest와 HttpServletResponse 객체를 가지고 있다. 

HttpServletRequest

요청에 대한 정보를 가지고 있는 객체

request.getCookies(); // 쿠키 정보를 가지고있다.
request.getSession(); // 세션 정보를 가져온다.
request.getAttribute(null); // request의 속성 값을 가져온다.
request.setAttribute(null, null); // 속성을 추가한다. ex) request.setAttribute('A', 10)
                                                   // A라는 속성에 10이라는 value를 넣는다.
request.getParameter(null); 
request.getParameterNames();   // 3개의 메서드는 뒷쪽에서 더 상세하게 알아보자
request.getParameterValues(null);

HttpServletResponse 

응답에 대한 정보를 가지고 있는 객체

response.addCookie(null);
response.getStatus();
response.sendRedirect(null);
response.getWriter();
response.getOutputStream();

 

 

HttpServletRequest(요청)는 사용자가 웹 애플리케이션에 요청을 할 때 생기는 객체이다. 그 안에는 사용자의 정보, 사용자가 입력한 속성 등을 이용할 수 있다. 

HttpServletResponse(응답)는 반대로 서버가 브라우저에 데이터를 넣을때, 데이터를 알려줄 때, 서버에서 만든 데이터를 사용자에게 전달할 때 사용하는 객체가 HttpServletResponse이다.

 

Request와 Response를 햇갈릴 수 있는데 간단하게 설명하면 

HttpServletRequest는 사용자가 주는 것이고 Servlet입장에서는 받는 것이다.

반대로 HttpServletResponse는 Servlet이 응답하는 것이다.

728x90

'JSP, Servlet' 카테고리의 다른 글

Connection Pool 이란?  (0) 2021.06.18
Servlet 맵핑  (0) 2021.06.03
JSP란?  (0) 2021.06.03
Comments