본문 바로가기
JAVA Spring

HttpServlet 기본 사용법

by ppirae 2022. 3. 29.

HttpServletRequest - 개요

HttpServletRequest 역할 HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다.

서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다.

그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다.

HttpServletRequest를 사용하면 HTTP 요청 메시지를 편리하게 조회할 수 있다.

 

HttpServletRequest 객체는 추가로 여러가지 부가기능도 함께 제공한다.

임시 저장소 기능

해당 HTTP 요청이 시작부터 끝날 때 까지 유지되는 임시 저장소 기능

저장: request.setAttribute(name, value)

조회: request.getAttribute(name)

세션 관리 기능

request.getSession(create: true)

 

중요

HttpServletRequest, HttpServletResponse를 사용할 때 가장 중요한 점은 이 객체들이 HTTP 요청 메시지, HTTP 응답 메시지를 편리하게 사용하도록 도와주는 객체라는 점이다.

따라서 이 기능에 대해서 깊이있는 이해를 하려면 HTTP 스펙이 제공하는 요청, 응답 메시지 자체를 이해해야 한다.


HttpServletRequest - 기본 사용법

1. StartLine

request.getMethod()); //GET
request.getProtocol()); //HTTP/1.1
request.getScheme()); //http
request.getRequestURL());  // http://localhost:8080/request-header
request.getRequestURI());  // /request-test
System.out.println("request.getQueryString() = " + request.getQueryString());  //username=hi
System.out.println("request.isSecure() = " + request.isSecure()); //https사용 유무

2. Header

//        Enumeration<String> headerNames = request.getHeaderNames();
//        while(headerNames.hasMoreElements()) {
//            String headerName = headerNames.nextElement();
//            System.out.println(headerName + ": " + headerName);
//        }         옛날 방식

        //요즘 방식
        request.getHeaderNames().asIterator()
                .forEachRemaining(headerName -> System.out.println(headerName + ": " + headerName));

3. Header 편리한 조회

		System.out.println("[Host 편의 조회]");
        System.out.println("request.getServerName() = " + request.getServerName()); //Host 헤더
        System.out.println("request.getServerPort() = " + request.getServerPort()); //Host 헤더
        
        System.out.println("[Accept-Language 편의 조회]");
        request.getLocales().asIterator()
                .forEachRemaining(locale -> System.out.println("locale = " +
                        locale));
        System.out.println("request.getLocale() = " + request.getLocale());
        
        System.out.println("[cookie 편의 조회]");
        if (request.getCookies() != null) {
            for (Cookie cookie : request.getCookies()) {
                System.out.println(cookie.getName() + ": " + cookie.getValue());
            }
        }
        
        System.out.println("[Content 편의 조회]");
        System.out.println("request.getContentType() = " + request.getContentType());
        System.out.println("request.getContentLength() = " + request.getContentLength());
        System.out.println("request.getCharacterEncoding() = " + request.getCharacterEncoding());

4. 기타 정보

System.out.println("[Remote 정보]");
System.out.println("request.getRemoteHost() = " + request.getRemoteHost()); 
System.out.println("request.getRemoteAddr() = " + request.getRemoteAddr()); 
System.out.println("request.getRemotePort() = " + request.getRemotePort()); 

System.out.println("[Local 정보]");
System.out.println("request.getLocalName() = " + request.getLocalName()); 
System.out.println("request.getLocalAddr() = " + request.getLocalAddr()); 
System.out.println("request.getLocalPort() = " + request.getLocalPort());


인프런 김영한님의 스프링 MVC 1편 강의를 듣고 작성한 글입니다.

https://inf.run/2UfT

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 

댓글