** 공유가 아닌 개인 공부에 목적을 둔 글입니다
** 설명이 불충분할 수 있으며 잘 정리된 글이 아닐 수도 있습니다
서블릿이 실행되기까지의 흐름을 그림으로 나타내면 다음과 같다
위 그림에서 알 수 있듯이 HttpServletRequest 객체는 HTTP 프로토콜의 요청정보를 Servlet 에게 전달하기 위해,
HttpServletResponse 객체는 응답을 웹브라우저에게 보내기 위해 사용된다
HttpServletRequest 에는 헤더정보, 파라미터 정보, 쿠키, URL 등의 정보를 읽어들이는 메소드,
또한 Body 의 Stream 을 읽어들이는 메소드가 있다
WAS 가 HttpServletResponse 를 생성해 Servlet 에게 전달하면
Servlet 은 이 객체를 이용해 contentType, 응답 코드 및 메시지를 전송한다
클라이언트 요청시의 갖고 들어온 헤더정보 눈으로 확인하기
package exam;
// import 생략
@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>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
doPost() 는 다시 doGet() 을 호출하고 있으므로 그냥 doGet() 에 코드를 작성해보도록 하겠다
이번에는 파라미터를 읽어들여서 출력하는 서블릿을 만들어보자
package exam;
// import 생략
@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>");
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>");
}
}
URL 을 살펴보면 파라미터 값을 넘겨주지 않았을 때와 넘겨주었을 때의 결과가 달라지는 것을 확인할 수 있다
HttpServletRequest 가 갖고있는 다양한 메소드를 이용해 다양한 값을 출력할 수도 있다
package exam;
// import 생략
@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>form</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("urcontentPathi : " + contentPath + "<br>");
out.println("remoteAddr : " + remoteAddr + "<br>");
out.println("</body>");
out.println("</html>");
}
}
remoteAddr : 요청한 클라이언트의 주소 ( 접속한 운영체제에 따라 다를수 있지만 현재 로컬pc 에서 접속했기 때문에
위와같이 나온다)
'Servlet' 카테고리의 다른 글
[JSP/Servlet] request.getRequestDispatcher 사용해 java 파일로 forward 하는 방법과 <jsp:forward page=""> 사용해 jsp 파일로 forward 하는 방법 (0) | 2022.03.09 |
---|---|
[Servlet] Servlet 의 Lifecycle (0) | 2021.12.18 |
[Servlet] 동적인 컨텐츠를 제공하는 Servlet (0) | 2021.12.18 |