“HttpServletRequest가 제공하는 기본 기능들을 알아보자.”
hello.servlet.basic.request패키지를 만들고 RequestHeaderServlet 클래스를 만듭니다.
package hello.servlet.basic.request;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "requestHeaderServlet", urlPatterns = "/request-header")
public class RequestHeaderServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
printStartLine(request);
}
**private void printStartLine(HttpServletRequest request) {
System.out.println("--- REQUEST-LINE - start ---");
System.out.println("request.getMethod() = " + request.getMethod()); //GET
System.out.println("request.getProtocal() = " + request.getProtocol()); //HTTP/1.1
System.out.println("request.getScheme() = " + request.getScheme()); //http
System.out.println("request.getRequestURL() = " + request.getRequestURL()); // <http://localhost:8080/request-header>
System.out.println("request.getRequestURI() = " + request.getRequestURI()); // /request-test
System.out.println("request.getQueryString() = " + request.getQueryString()); //username=hi
System.out.println("request.isSecure() = " + request.isSecure()); //https 사용 유무
System.out.println("--- REQUEST-LINE - end ---");
System.out.println();
}**
}
start-line 정보
getScheme () : 스키마에 대한 정보
getQueryString () : 쿼리 파라미터(= 쿼리 스트링)에 대한 정보
없으니까 null
만약 QueryString 을 치게되면 해당 값이 나온다.
http://localhost:8080/request-header?username=hello
isSecure () : https 인지 확인하는 메서드 (secure 인지 확인하는 메서드)
package hello.servlet.basic.request;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
@WebServlet(name = "requestHeaderServlet", urlPatterns = "/request-header")
public class RequestHeaderServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
printStartLine(request);
printHeaders(request);
}
...
//Header 모든 정보
private void printHeaders(HttpServletRequest request) {
System.out.println("--- Headers - start ---");
//...1
**Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
System.out.println( headerName + " : " + headerName);
}
//...2
request.getHeaderNames().asIterator()
.forEachRemaining(headerName -> System.out.println(headerName + ": " + request.getHeader(headerName)));**
**//...3
request.getHeader("host");**
System.out.println("--- Headers - end ---");
System.out.println();
}
}
헤더 정보를 가져오는 2가지 방법
getHeaderNames()
Enumeration<String> headerNames = request.getHeaderNames();
생각보다 정보가 많은데 웹 브라우저가 기본적으로 보내기 때문입니다.