5.1 클라이언트 정보 및 서버 정보 읽기
메서드 | 리턴 타입 | 설명 |
getRemoteAddr() | String | 웹 서버에 연결한 클라이언트의 IP 주소를 구한다. 게시판이나 방명록 등에서 글 작성자의 IP 주소가 자동으로 입력되기도 하는데, 이 때 입력되는 IP 주소가 바로 이 메서드를 사용하여 구한 것이다. |
getContentLength() | long | 클라이언트가 전송한 요청 정보의 길이를 구한다. 전송된 데이터의 길이를 알 수 없는 경우 -1을 리턴한다. |
getCharacterEncoding() | String | 클라이언트가 요청 정보를 전송할 때 사용한 캐릭터의 인코딩을 구한다. |
getContentType() | String | 클라이언트가 요청 정보를 전송할 때 사용한 컨텐츠의 타입을 구한다. |
getProtocol() | String | 클라이언트가 요청한 프로토콜을 구한다. |
getMethod() | String | 웹 브라우저가 정보를 전송할 때 사용한 방식을 구한다. |
getRequestURI() | String | 웹 브라우저가 요청한 URL에서 경로를 구한다. |
getContextPath() | String | JSP 페이지가 속한 웹 어플리케이션의 컨텍스트 경로를 구한다. |
getServerName() | String | 연결할 때 사용한 서버 이름을 구한다. |
getServerPort() | int | 서버가 실행중인 포트 번호를 구한다. |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>클라이언트 및 서버 정보</title>
</head>
<body>
클라이언트IP = <%= request.getRemoteAddr() %>
<br>
요청정보길이 = <%= request.getContentLength() %>
<br>
요청정보 인코딩 = <%= request.getCharacterEncoding() %>
<br>
요청정보 컨텐츠타입 = <%= request.getContentType() %>
<br>
요청정보 프로토콜 = <%= request.getProtocol() %>
<br>
요청정보 전송방식 = <%= request.getMethod() %>
<br>
요청 URI = <%= request.getRequestURI() %>
<br>
컨텍스트 경로 = <%= request.getContextPath() %>
<br>
서버이름 = <%= request.getServerName() %>
<br>
서버포트 = <%= request.getServerPort() %>
</body>
</html>
5.2 요청 파라미터 처리
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>폼 생성</title>
</head>
<body>
<form action="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="dog"> 강아지
<input type="checkbox" name="pet" value="cat"> 고양이
<input type="checkbox" name="pet" value="pig"> 돼지
<br>
<input type="submit" value="전송">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Enumeration"%>
<%@ page import="java.util.Map"%>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>요청 파라미터 출력</title>
</head>
<body>
<b> request.getParameter() 메서드 사용 </b> name 파라미터 =
<%=request.getParameter("name")%>
address 파라미터 =
<%=request.getParameter("address")%>
<p>
<b>request.getParameterValues() 메서드 사용</b>
<%
String[] values = request.getParameterValues("pet");
if (values != null) {
for (int i = 0; i < values.length; i++) {
%>
<%=values[i]%>
<%
}
}
%>
<p>
<b>request.getParameterNames() 메서드 사용</b>
<%
Enumeration paramEnum = request.getParameterNames();
while(paramEnum.hasMoreElements()){
String name = (String)paramEnum.nextElement();
%>
<%= name %>
<%
}
%>
<p>
<b>request.getParameterMap() 메서드 사용</b>
<%
Map parameterMap = request.getParameterMap();
String[] nameParam = (String[])parameterMap.get("name");
if(nameParam != null){
%>
name = <%= nameParam[0] %>
<%
}
%>
</body>
</html>
5.2.4 요청 파라미터 인코딩
GET 방식으로 파라미터 전송 시 인코딩 결정 규칙
GET 방식 이용 시 파라미터 전송 방법 | 인코딩 결정 | 예시 |
<a> 태그의 링크 태그에 쿼리 문자열 추가 | 웹 페이지 인코딩 사용 | <a href="viewParameter.jsp?name=홍길동&address=아차곡">링크</a> |
HTML 폼(FORM)의 method 속성값을 "GET"으로 지정해서 폼을 전송 | 웹 페이지 인코딩 사용 | |
웹 브라우저에 주소에 직접 쿼리 문자열을 포함하는 URL 입력 | 웹 브라우저마다 다름 | http://localhost:8080.chap03/viewParameter.jsp?name=홍길동 |
5.3 요청 헤더 정보의 처리
request 기본 객체가 제공하는 헤더 관련 메서드
메서드 | 리턴 타입 | 설명 |
getHeader(String name) | String | 지정한 이름의 헤더 값을 구한다. |
getHeaders(String name) | java.util.Enumeration | 지정한 이름의 헤더 목록을 구한다. |
getHeaderNames() | java.util.Enumeration | 모든 헤더의 이름을 구한다. |
getIntHeader(String name) | int | 지정한 헤더의 값을 정수 값으로 읽어온다. |
getDateHeader(String name) | long | 지정한 헤더의 값을 시간 값으로 읽어온다. (이 때 시간은 1970년 1월 1일 이후로 흘러간 1/1000초 단위의 값을 가진다.) |
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import = "java.util.Enumeration" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<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>
'최범균의 JSP 2.3 웹프로그래밍 > CH03 JSP로 시작하는 웹 프로그래밍' 카테고리의 다른 글
06 response 기본 객체 (0) | 2024.07.07 |
---|---|
03. page 디렉티브 (0) | 2024.07.01 |
02. JSP 페이지의 구성 요소 (0) | 2024.07.01 |