chap03 JSP 기본 구조
5. request 기본 객체
5.1 클라이언트 정보 및 서버 정보 읽기
- 클라이언트(웹브라우저)와 관련된 정보 읽기
- 서버와 관련된 정보 읽기
- 클라이언트가 전송한 요청 파라미터 읽기
- 클라이언트가 전송한 요청 헤더 읽기
- 클라이언트가 전송한 쿠키 읽기
<%@ page contentType = "text/html; charset=utf-8" %>
<html lang="ko">
<meta charset="UTF-8">
<head><title>클라이언트 및 서버 정보</title></head>
<body>
클라이언트IP = <%= request.getRemoteAddr() %> <br>
0:0:0:0:0:0:0:1 : Windows IP6 을 보내줌
요청정보 프로토콜 = <%= request.getProtocol() %> <br>
요청정보 전송방식 = <%= request.getMethod() %> <br>
요청 URI = <%= request.getRequestURI() %> <br>
컨텍스트 경로 = <%= request.getContextPath() %> <br>
서버이름 = <%= request.getServerName() %> <br>
서버포트 = <%= request.getServerPort() %> <br>
</body>
</html>
5.2 요청 파라미터 한글 및 복수이름 처리
- request.setCharacterEncoding("utf-8");
- request.getParameterValues()
form.jsp
<%@ page contentType = "text/html; charset=utf-8"%>
<html>
<head><title>폼 생성</title></head>
<body>
<form action="/chap05/viewParameter.jsp" method="post">
이름: <input type="text" name="name" size="10"> <br>
주소: <input type="text" name="address" size="30"> <br>
좋아하는 동물:
<input type="checkbox" name="pet" value="강아지">강아지
<input type="checkbox" name="pet" value="고양이">고양이
<input type="checkbox" name="pet" value="돼지">돼지
<br>
<input type="submit" value="전송">
</form>
</body>
</html>
viewParameter.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import="java.util.Enumeration" %>
<%@ page import="java.util.Map" %>
<%
request.setCharacterEncoding("utf-8");
%>
<html>
<head><title>요청 파라미터 출력</title></head>
<body>
<b>request.getParameter() 메서드 사용</b><br>
name 파라미터 = <%= request.getParameter("name") %> <br>
address 파라미터 = <%= request.getParameter("address") %>
<p>
<b>request.getParameterValues() 메서드 사용</b><br>
<%
String[] values = request.getParameterValues("pet");
if (values != null) {
for (int i = 0 ; i < values.length ; i++) {
%>
<%= values[i] %>
<%
}
}
%>
</body>
</html>
5.3 요청 헤더 정보 처리
- Enumeration getHeaderNames() : 모든 헤더 이름 정보 목록
- String getHeader(String name) : name의 헤더 값
viewHeaderList.jsp
<%@ page contentType = "text/html; charset=utf-8" %>
<%@ page import = "java.util.Enumeration" %>
<html>
<head><title>헤더 목록 출력</title></head>
<body>
<%
Enumeration headerEnum = request.getHeaderNames();
while(headerEnum.hasMoreElements()) {
String headerName = (String)headerEnum.nextElement();
String headerValue = request.getHeader(headerName);
%>
<%= headerName %> = <%= headerValue %> <br>
<%
}
%>
</body>
</html>
5.3.1 user-agent 를 이용해서 접속 환경 구분
viewPcMobile.jsp
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>viewHeaderList.jsp</title>
</head>
<body>
<%
//user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36<br>
//user-agent:Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Mobile Safari/537.36<br>
//user-agent:Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1<br>
String hName = "user-agent";
String hValue = request.getHeader(hName);
out.print(hName+ ":" + hValue + "<br>");
if(hValue.indexOf("Android") >= 0 || hValue.indexOf("iPhone") >= 0){
out.println("Mobile");
}else{
out.println("PC");
}
%>
</body>
</html>
6. response 기본 객체
- 웹브라우저로 보내는 응답 정보
- 헤더 정보 입력(거의 사용 하지 않음)
- 리다이렉트 " response.sendRedirect()
6.1 웹브라우저 캐시 설정
- 웹브라우저 캐시 : 동일한 요청은 로컬 PC 임시 저장소에 저장해서 보관
- html의 경우 이미지등 변경 후 이름이 동일하면 이전 이미지등이 보임
<%
// 캐쉬 저장 막기
response.setHeader("Cache-Control","no-cache");
%>
6.2 리다이렉트를 이용해서 페이지 이동
- 이전 menu_send.jsp 참조