웹브라우저가 WAS에게 Servlet request
-> WAS는 HttpServletRequest 객체를 생성하여 저장
응답을 보낼 때 사용하기 위해 HttpServletResponse 객체 생성
-> Servlet에게 두 객체 전달
-> doGet, doPost, Service 등과 같은 메서드에 파라미터로 전달되어 사용됨
소스코드
@WebServlet("/Header")
public class HeaderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public HeaderServlet() {
super();
}
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>");
}
}
결과
parameter: URL에서 '?' 기준으로 뒤에 있는 것들, '&'기호로 파라미터들을 구분
http://localhost:8080/firstweb/param?name=kim&age=5
에서 name과 age는 파라미터 이름, kim과 5는 파라미터 값임
소스코드
@WebServlet("/Param")
public class ParameterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ParameterServlet() {
super();
// TODO Auto-generated constructor stub
}
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>");
//parameter를 가져오는 것은 form태그 안에서 입력받은 input값과 유사하게 사용할 수 있다
String name = request.getParameter("name"); //getParameter: String으로 파라미터 값이 반환됨
String age = request.getParameter("age");
out.println("name: "+name+"<br>");
out.println("age: "+age+"<br>");
out.println("</body>");
out.println("</html>");
}
}
결과
@WebServlet("/Info")
public class InfoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public InfoServlet() {
super();
}
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 remote = request.getRemoteAddr();
out.println("uri: "+uri+"<br>");
out.println("url: "+url+"<br>");
out.println("contentPath: "+contentPath+"<br>");
out.println("remoteAddr: "+remote+"<br>");
}
결과
uri: 도메인과 포트 이하의 값들
url: 요청 주소 전체
contextPath: 웹 어플리케이션과 매핑된 path, 웹 어플리케이션이 여러개 있을 때 웹 어플리케이션을 찾아가는 이름, 제거할 수도 있음
remoteAddr: 클라이언트의 주소 값(IP)