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 요청 파라미터 한글 및 복수이름 처리

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 요청 헤더 정보 처리

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 기본 객체

6.1 웹브라우저 캐시 설정

<%
    // 캐쉬 저장 막기
    response.setHeader("Cache-Control","no-cache");
%>

6.2 리다이렉트를 이용해서 페이지 이동