Web/기초

[WEB] Request, Response

hh_lin 2018. 11. 21. 01:58

요청과 응답

웹 브라우저에 URL을 입력하고 엔터를 누르게 되면, 웹 브라우저는 도메인과 포트번호를 이용해서 서버에 접속하며, 요청 정보를 서버에 전송한다.

WAS는 웹 브라우저로부터 Servlet 요청을 받으면, 다음과 같은 일을 한다.

  • 요청할 때 가지고 있는 정보를 HttpServletRequest 객체를 생성하여 저장.
  • 웹 브라우저에게 응답을 보낼 때 사용하기 위하여 HttpServletResponse 객체를 생성.
  • 생성된 HttpServletRequest, HttpServletResponse 객체를 서블릿에게 전달.



HttpServletRequest

클라이언트가 서버에게 보낸 요청을 추상화한 객체로, HTTP 프로토콜의 request 정보를 서블릿에게 전달하기 위한 목적으로 사용한다.

헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메서드를 가지고 있으며, Body의 Stream을 읽어 들이는 메서드를 가지고 있다.



HttpServletResponse

서버가 클라이언트에게 보낸 응답을 추상화한 객체로, 서블릿은 해당 객체를 이용하여 content type, 응답코드, 응답 메시지 등을 전송한다.

WAS는 어떤 클라이언트가 요청을 보냈는지 알고 있고, 해당 클라이언트에게 응답을 보내기 위한 HttpServletResponse 객체를 생성하여 서블릿에게 전달한다.



헤더 정보 읽어들이기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@WebServlet("/header")
public class HeaderServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public HeaderServlet() {}
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>form</title></head>");
        out.println("<body>");
 
        Enumeration<String> headerNames = request.getHeaderNames();
        while(headerNames.hasMoreElements()) {
            String headerName = headerNames.nextElement();
            String headerValue = request.getHeader(headerName);
            out.println(headerName + " : " + headerValue + " <br> ");
        }        
        
        out.println("</body>");
        out.println("</html>");
    }
}
cs



파라미터 읽어들이기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@WebServlet("/param")
public class ParameterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public ParameterServlet() {}
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>form</title></head>");
        out.println("<body>");
 
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        
        out.println("name : " + name + "<br>");
        out.println("age : " + age + "<br>");
        
        out.println("</body>");
        out.println("</html>");
    }
}
cs



그 외의 요청정보 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@WebServlet("/info")
public class HttpServlet extends javax.servlet.http.HttpServlet {
    private static final long serialVersionUID = 1L;
 
    public HttpServlet() {}
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>info</title></head>");
        out.println("<body>");
 
        String uri = request.getRequestURI();
        StringBuffer url = request.getRequestURL();
        String contentPath = request.getContextPath();
        String remoteAddr = request.getRemoteAddr();
        
        
        out.println("uri : " + uri + "<br>");
        out.println("url : " + url + "<br>");
        out.println("contentPath : " + contentPath + "<br>");
        out.println("remoteAddr : " + remoteAddr + "<br>");
        
        out.println("</body>");
        out.println("</html>");
    }
}
cs








참고자료

https://www.edwith.org/