본문 바로가기
최범균의 JSP 2.3 웹프로그래밍/CH03 JSP로 시작하는 웹 프로그래밍

05. request 기본 객체

by 개발자공부 2024. 7. 1.

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>

실행결과 (user-agent : 사용자가 사용중인 웹 브라우저의 종류를 알려준다.)