본문 바로가기
IT/Java

HttpServletRequest, HttpServletResponse에 대한 이해

by 성준하이 2023. 6. 24.
반응형

was 에서 웹 브라우저로 요청을 받게 되면 아래 그림처럼 동작을 한다.

1. 요청 받는 정보를 HttpServletRequest객체를 생성하여 저장

2. 웹 브라우저에게 리턴할 HttpServletResponse객체를 생성(빈 객체)

3. 생성된 HttpServletRequest(정보가 저장된)와 HttpServletResponse(비어 있는)를 Servlet에게 전달

그러면 여기서 나오는 HttpServletRequest, HttpServletResponse 에 대해서 설명을 하면 다음과 같다.

HttpServletRequest
  1. Http프로토콜의 request 정보를 서블릿에게 전달하기 위한 목적으로 사용
  2. Header정보, Parameter, Cookie, URI, URL 등의 정보를 읽어들이는 메소드를 가진 클래스
  3. Body의 Stream을 읽어들이는 메소드를 가지고 있음
HttpServletResponse
  1. Servlet은 HttpServletResponse객체에 Content Type, 응답코드, 응답 메시지등을 담아서 전송함

 

사용법은 다음과 같다.

먼저 HttpServletRequest 는 이전 포스팅인 AOP 에 관련된 코드에서 가져왔다.

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();

이렇게 코드를 구현하고 request에서 url 이나 파라미터 정보들을 가져올수 있다.

 

다음으로 HttpServletResponse 는 CORS 를 사용할때의 코드를 예시로 보여주면

public class CORSFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
                                            throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "*");
        response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:8000");


        chain.doFilter(req, res);
    }


    public void init(FilterConfig filterConfig) {}


    public void destroy() {}
}

 

다음 예시와 같이 springboot 에서는 사용이 가능하다.

반응형

댓글