반응형
1. 서블릿 Request, Response 동작 방식
요청과 응답
WAS는 웹 브라우저로부터 Servlet요청을 받으면,
- 요청할 때 가지고 있는 정보를 HttpServletRequest객체를 생성하여 저장합니다.
- 웹 브라우저에게 응답을 보낼 때 사용하기 위하여 HttpServletResponse객체를 생성합니다.
- 생성된 HttpServletRequest, HttpServletResponse 객체를 서블릿에게 전달합니다.
HttpServletRequest
- http프로토콜의 request정보를 서블릿에게 전달하기 위한 목적으로 사용합니다.
- 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메소드를 가지고 있습니다.
- Body의 Stream을 읽어 들이는 메소드를 가지고 있습니다.
HttpServletResponse
- WAS는 어떤 클라이언트가 요청을 보냈는지 알고 있고, 해당 클라이언트에게 응답을 보내기 위한 HttpServleResponse객체를 생성하여 서블릿에게 전달합니다.
- 서블릿은 해당 객체를 이용하여 content type, 응답코드, 응답 메시지등을 전송합니다.
- Request 정보를 출력해서 알아보자
package examples;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/header")
public class HeaderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public HeaderServlet() {
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>");
Enumeration<String> headerNames = request.getHeaderNames(); // 모든 header 이름을 문자열로 받아준다.
while(headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement(); // header 이름
String headerValue = request.getHeader(headerName); // header 값
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);
}
}
2. URL 파라미터
http://localhost:8080/firstweb/param?age=23&name=naeun
위의 URL에서 ? 뒤에 있는 것을 '파라미터'라고 한다.
&를 기준으로 구분하여 인식한다.
age = 23 이고, name = naeun 이다.
package examples;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ParameterServlet
*/
@WebServlet("/param")
public class ParameterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ParameterServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html"); // 응답을 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 에 설정해주는 대로 값이 변경되어 나타난다. (동적인 페이지)
3. 이 외의 클라이언트가 요청하는 다른 정보들 출력해보기
반응형
'Programming > JSP & Servlet & Mysql' 카테고리의 다른 글
실습 8) JSP 문법 (0) | 2020.11.11 |
---|---|
실습 7) JSP란? JSP와 서블릿의 차이, JSP 라이프사이클 (0) | 2020.11.11 |
실습 5) 서블릿 작성방법 😇, 서블릿 생명주기 (0) | 2020.11.10 |
실습 4) 서블릿이란? 자바 웹 어플리케이션 (0) | 2020.11.10 |
실습 3) 맥에서 톰캣 설치하기, 톰캣 실행하기 (0) | 2020.11.10 |