본문 바로가기
IT/JSP

[JSP] - 5. request(기본객체)

by 차이나는 개발자 2020. 7. 20.
728x90
반응형

#request(기본객체)

 

 

#request 기본 객체

: 사용자의 요청정보를 담고 있는 객체 

 

 

#request 기본 객체가 제공하는 기능

-클라이언트(웹 브라우저)와 관련된 정보 읽기 기능

-서버와 관련된 정보 읽기 기능

-클라이언트가 전송한 요청 파라미터 읽기 기능

-클라이언트가 전송한 요청 헤더 읽기 기능

-클라이언트가 전송한 쿠키 읽기 기능

-속성 처리 기능

 

 

#request 기본 객체의 클라이언트 및 서버 정보 관련 메서드

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<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() %><br/>
</body>
</html>

 

-결과 화면

 

#request객체는 스트립트릿이나 표현식에서만 쓸 수 있고 선언부에서는 쓸 수 없다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>request객체의 사용범위</title>
</head>
<body>
	<%
		request.getContextPath();
	%>
	
	<%= request.getContextPath() %>
	
	<%!
		request.getContextPath(); // 에러
	%>
</body>
</html>

 

 

#request 기본 객체의 요청 파라미터 관련 메서드

메서드 리턴타입 설명
getParameter(String name) String 이름이 name인 파라미터의 값을 구한다. 존재하지 않을 경우 null을 리턴한다.
getParameterValues(String name) String[] 이름이 name인 모든 파라미터의 값을 배열로 구한다. 존재하지 않을 경우 null을 리턴한다.
getParameterNames() java.util.Enumeration 웹 브라우저가 전송한 파라미터의 이름 목록을 구한다.
getParameterMap() java.util.Map 웹 브라우저가 전송한 파라미터의 맵을 구한다. 맵은 <파라미터 이름, 값> 쌍으로 구성된다.

#request객체
getParameter() = 하나의 파라미터 값을 가져오는 메서드,  key와 value 모두 1:1 리턴 타입은 String 
getParameterValues() = 같은 이름의 복수의 값(체크박스와 리스트 같이 다중 선택 타입의 값을 가져온다.) 
getParameterNames() = form에 포함된 name값(keyset() key값)을 다 가져온다. 
getParameterMap() = map형태로 바꾸어 준다. Key는 String, Values는 String[]이다.

 

예제)1

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<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="food" value="pizza">피자
		<input type="checkbox" name="food" value="hamburger">햄버거
		<input type="checkbox" name="food" value="chicken">치킨
		<br/>
		<input type="submit" value="전송">
	</form>
</body>
</html>

 

-데이터 입력 후 전송

 

-결과 화면

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>  
<!DOCTYPE html>
<%@ 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") %>
	address 파라미터 = <%=request.getParameter("address") %>
	<p>
		<b>request.getParameterValues() 메서드 사용</b><br/>
		<%
		String[] values = request.getParameterValues("food");
		if(values != null){
			for(int i = 0; i < values.length; i++){
		%>
			<%= values[i] %>
		<%
				}
			}
		%>
	</p>
	<p>
	<b>request.getParameterNames() 메서드 사용</b><br/>
	<%
		Enumeration paramEnum = request.getParameterNames();
		while(paramEnum.hasMoreElements()){
			String name = (String)paramEnum.nextElement();
	%>
		<%=name %>
	<%
		}
	%>
	</p>
	<p>
	<b>request.getParameterMap() 메서드 사용</b><br/>
	<%
		Map parameterMap = request.getParameterMap();
		String[] nameParam = (String[])parameterMap.get("name");
		if(nameParam != null){
	%>
		name = <%= nameParam[0] %>
	<%
		}
	%>
</body>
</html>

 

 

 

728x90
반응형

댓글