코드일기장

[JSP] request 기본 객체 본문

JSP

[JSP] request 기본 객체

won_hyeok2 2022. 3. 7. 22:24

 

 

 

 

request 기본 객체

 

request는 웹 브라우저의 요청과 관련이 있다. 웹 브라우저는 웹 서버에 연결한 후 요청 정보를 전송하는데, 이 요청 정보를 제공하는 것이 바로 request 기본 객체이다.

 

  • 클라이언트(웹 브라우저)와 관련된 정보 읽기 기능
  • 서버와 관련된 정보 읽기 기능
  • 클라이언트가 전송한 요청 파라미터 읽기 가능
  • 클라이언트가 전송한 요청 헤더 읽기 기능
  • 클라이언트가 전송한 쿠키 읽기 기능
  • 속성 처리 기능

request 기본 객체가 제공하는 기능을 구분해보았다.

 

 


 

 

클라이언트 정보 및 서버 정보 읽기

 

request 기본 객체는 웹 브라우저, 즉 (클라이언트)가 전송한 정보와 서버 정보를 구할 수 있는 메서드를 제공하고 있다.

 

메서드 리턴 타입 설명
getRemoteAddr() String 웹 서버에 연결한 클라이언트의 IP 주소를 구한다. 게시판이나 방명록 등에서 글 작성자의 IP 주소가 자동으로 입력되기도 하는데, 이때 입력되는 IP 주소가 바로 이 메서드를 사용해서 구할 수 있다.
getContentLength() long 클라이언트가 전송한 요청 정보의 길이를 구한다. 전송된 데이터의 길이를 알 수 없는 경우 -1을 리턴한다.
getCharcterEncoding() String 클라이언트가 요청 정보를 전송할 때 사용한 캐릭터 인코딩을 구한다.
getContentType() String 클라이언트가 요청 정보를 전송할 때 컨텐츠의 타입을 구한다.
getProtocol() String 클라이언트가 요청한 프로토콜을 구한다.
getMethod() String 웹 브라우저가 정보를 전송할 때 사용한 방식을 구한다.
getRequestURl() String 웹 브라우저가 요청한 URL에서 경로를 구한다.
getContextPath() String JSP 페이지가 속한 웹 어플리케이션의 컨텍스트 경로를 구한다.
getSeverName() String 연결할 때 사용한 서버 이름을 구한다.
getSeverPort() int 서버가 실행중인 포트 번호를 구한다.

 

 

 


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Request</title>
</head>
<body>
	<b>클라이언트 IP= <%=request.getRemoteAddr()%><br></b>
	<b>요청정보길이= <%=request.getContentLength()%><br></b>
	<b>요청정보 인코딩= <%=request.getCharacterEncoding()%><br></b>
	<b>요청정보 컨텐츠타입= <%=request.getContentType()%><br></b>
	<b>요청정보 프로토콜= <%=request.getProtocol()%> <br></b>
	<b>요청정보 전송방식= <%=request.getMethod()%><br></b>
	<b>요청 URI= <%=request.getRequestURI()%><br></b>
	<b>컨텍스트 경로= <%=request.getContextPath()%><br></b>
	<b>서버이름=<%=request.getServerName()%><br></b>
	<b>서버포트=<%=request.getServerPort()%><br></b>
</body>
</html>

 

 

 

http://localhost:8080/JSPTes/Hello.jsp

위 코드는

웹 브라우저에 입력한 URL로부터 추출된 것인 것을 확인할 수 있다.

 

위에 있는 URL을 이용해 request메서드를 설명하자면

localhost는 request.getSeverName()

8080은 request.getSeverPort()

/JSPTes/Hello.jsp는 request.getRequestURI()

 

이처럼 클라이언트 정보와 서버 정보를 읽을 때 URL을 사용한다.

 


 

 

요청 파라미터 처리

 

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

요청 파라미터 관련 메서드

 

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request</title>
</head>
<body>
<form action="data.jsp" method="post" >
이름: <input type="text" size="15" name="name">
주소: <input type="text" size="30" name="address">
	<br>
좋아하는 과일:
	<input type="checkbox" name="fruit" value="apple">사과
	<input type="checkbox" name="fruit" value="banana">바나나
	<input type="checkbox" name="fruit" value="strawberry">딸기
	<br>
	<input type="submit" value="전송">
</form>
</body>
</html>

form 태그가 있는 jsp 파일

위 jsp 파일은 입력 요소들은 data.jsp 파일로 넘어가진다.

 

 

 

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" trimDirectiveWhitespaces="true"%>
<%@ page import="java.util.Enumeration" %>
<%@ page import="java.util.Map" %> 
<%
	request.setCharacterEncoding("utf-8");
%>   
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request test</title>
</head>
<body>
<b>request.getParameter() 사용</b><br>
name 파라미터: <%=request.getParameter("name") %><br>
fruit 파라미터: <%=request.getParameter("fruit") %><br>
<p>
<b>request.getParameterValues 사용</b><br>
<%
	String[] values = request.getParameterValues("fruit");
	if(values!=null){
		for(int i=0;i<values.length;i++){
			%>
			<%= values[i] %>
<%	
		}
	}
%>

<p>

<b>request.getParameterNames() 사용</b><br>
<%
	Enumeration par = request.getParameterNames();
	while (par.hasMoreElements()){
		String str = (String)par.nextElement();
	%> <%= str %><br>
<% 	
	}
%>
<p>
<b>request.getParameterMap() 사용</b><br>
<%
	Map parMap = request.getParameterMap();
	String[] nameParStrings =(String[]) parMap.get("name");
	if(nameParStrings!=null){
		%> name = <%= nameParStrings[0] %>
<%
	}
%>

</body>
</html>

 

 

 

사용자 데이터 입력

 

 

전송된 데이터로 출력

 

 

 

 

 

 

 

 

<최범균 JSP 2.3 저서 참고 p72~80>

 

 

커버사진

https://www.flaticon.com/kr/free-icon/jsp-open-file-format-with-java-logo_28968

<a href="https://www.flaticon.com/kr/free-icons/" title="자바 아이콘">자바 아이콘  제작자: Freepik - Flaticon</a>

Comments