728x90
반응형
요청(클라이언트->서버)과 응답(서버->클라이언트)
- 요청할 때 가지고 있는 정보를 HttpServletRequest 객체를 생성하여 저장
- http 프로토콜의 request 정보를 survlet에 전달하기 위한 목적으로 사용
- 헤더 정보, 매개변수, 쿠키, URL, 언어 등의 정보를 읽는 메소드를 보유
- 헤더 정보: header값을 읽어 브라우저 화면에 출력
- body의 Stream을 읽는 메소드를 보유
- 웹 브라우저에 응답 보낼 때 사용하는 HttpServletResponse 객체 생성
- WAS는 어떤 클라이언트가 요청했는지 알고 있고, 해당 클라이언트에게 응답하기 위한 객체를 생성하여 survlet에 전달
- survlet은 해당 객체를 이용하여 content type, 응답코드, 응답 메세지 등을 전송
- 생성한 두 객체를 survlet에 전달
요청 시 들어온....
헤더 정보를 화면에 띄우기
1. firstweb 프로젝트의 example 패키지에 HeaderServlet 클래스를 생성한다. url-mapping은 간단하게 /header로 지정.
2. deGet() 메소드 안의 내용을 다음 코드로 적어둔다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
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>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
// doPost()에 doGet을 적으면 어떤 요청이든 doGet()에 적은 내용이 실행됨
}
3. Run on Server
host =
파라미터를 화면에 띄우기
파라미터: url에서 ? 뒤에 있는 조건문
1. firstweb 프로젝트의 example 패키지에 ParameterServlet 클래스 생성. url-mapping은 간단하게 /param로 지정.
2. deGet() 메소드 안의 내용을 다음 코드로 적어둔다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// 응답으로 보내야할 것은 response에 모두 저장해야 함
// 요청으로 들어온 것은 request에 모두 저장되어 있음
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>");
}
3. Run on Server
파라미터들은 반드시 URL로 넘어오는 것으 아니며
HTML form 태그, input 태그도 파라미터로 넘어오게 함.
그 외의 요청 정보 출력 (URL, Path, Remote host 등)
1. firstweb 프로젝트, example 패키지에 InfoServlet 클래스 생성. url-mapping은 /info.
2. deGet() 메소드 안의 내용을 다음 코드로 적어둔다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
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 remoteAddr = request.getRemoteAddr();
out.println("uri : " + uri + "<br>");
out.println("url : " + url + "<br>");
out.println("contentPath : " + contentPath + "<br>");
out.println("remoteAddr : " + remoteAddr + "<br>");
out.println("</body>");
out.println("</html>");
}
3. Run on Server
url은 요청 주소 전체, uri는 호스트 제외한 주소
contentPath로 프로젝트 이름이 출력됨. url-mapping처럼 바꿀 수 있음.
Remote address 클라이언트의 주소(ip)값. 댓글 단 사람들 ip 추적 가능.
0:0: 으로 나온 이유는 로컬 컴퓨터에서 접속했기 때문. IPv6이어서 이렇게 뜸.
원격 컴퓨터로 접속 했다면 크 컴퓨터의 IP가 출력됨.
728x90
반응형
'Web > Java+Spring' 카테고리의 다른 글
Redirect & Forward (0) | 2021.05.10 |
---|---|
JSP (0) | 2021.05.08 |
Servlet의 Life Cycle (0) | 2021.05.05 |
Servlet (0) | 2021.05.05 |
JAVA 웹 어플리케이션 (HttpServlet) 컴파일 및 실행 (0) | 2021.05.05 |