1. request

- JSP 페이지에서 가장 많이 사용되는 기본 객체로 클라이언트가 전송한 요청 정보를 제공한다.


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

 메서드

 반환형 

 설명 

 getRemoteAddr()

 String 

 웹 서버에 연결한 클라이언트의 IP 주소를 구한다. 

 getContentLength()

 long 

 클라이언트가 전송한 요청 정보의 길이를 구한다. 

 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; 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() %><br> </body> </html> <!-- 실행결과 클라이언트 IP = 0:0:0:0:0:0:0:1 요청정보길이 = -1 요청정보 인코딩 = null 요청정보 컨텐트타입 = null 요청정보 프로토콜 = HTTP/1.1 요청정보 전송방식 = GET 요청 URI = /Blog/requesttest1.jsp 컨텍스트 경로 = /Blog 서버이름 = localhost 서버이름 = 8080 -->


3. HTML 폼, 요청 파라미터 처리

- 웹 브라우저의 폼에 입력된 정보를 파라미터로 전송된다. request 객체는 전송된 파라미터 읽어온다.

- 값이 없는 텍스트입력은 빈 문자열로  전달되지만 체크박스와 라디오 버튼의 경우 선택하지 않게 되면 파라미터 자체가 전달되지 않는다.

 메서드

 반환형 

 설명 

 getParameter(String arg0)

 String 

 이름이 arg0인 파라미터의 값을 구한다. 없을 경우 null을 리턴한다.

 getParametervalues(String arg0)

 String[]

 이름이 arg0인 파라미터의 값을 배열로 구한다. 없을 경우 null을 리턴한다.

 getParameterNames()

 Enumeration 

 웹 브라우저가 전송한 파라미터의 이름을 구한다.

 getParameterMap()

 Map 

 웹 브라우저가 전송한 파라미터의 맵을 구한다.


<!-- memberForm.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>회원 가입 폼 테스트</title> </head> <body> <h1>회원 가입 폼</h1> <form action="memberOk.jsp" method="post"> 이름 : <input type="text" name="name" size="10"><br> 나이 : <input type="text" name="age" size="4"><br> 성별 : <input type="radio" name="gender" value="남자">남자 <input type="radio" name="gender" value="여자">여자<br> 취미 : <input type="checkbox" name="hobby" value="독서">독서 <input type="checkbox" name="hobby" value="운동">운동 <input type="checkbox" name="hobby" value="쇼핑">쇼핑<br> <input type="submit" value="가입"> </form> </body> </html>



<!-- memberOk.jsp --> <%@ page import="java.util.*"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>회원 파라미터 출력</title> </head> <body> <h2>request.getParameter() 메서드</h2> name 파라미터 : <%=request.getParameter("name") %><br> age 파라미터 : <%=request.getParameter("age") %><br> gender 파라미터 : <%=request.getParameter("gender") %><br> <h2>request.getParameterValues() 메서드</h2> <% String[] hobby = request.getParameterValues("hobby"); if (hobby != null) { for (int i = 0; i < hobby.length; i++) { out.println(hobby[i]); } // for } // if %> <h2>request.getParameterNames() 메서드</h2> <% Enumeration en = request.getParameterNames(); while (en.hasMoreElements()) { String name = en.nextElement().toString(); out.println(name); } // while %> <h2>request.getParameterMap() 메서드</h2> <% Map mp = request.getParameterMap(); Set keys = (Set) mp.keySet(); Iterator iter = keys.iterator(); while (iter.hasNext()) { String key = iter.next().toString(); Object[] value = (Object[]) mp.get(key); out.println(key + " :"); for (int i = 0; i < value.length; i++) { out.println(value[i]); } // for out.println("<br>"); } // while %> </body> </html> <!-- 실행 결과 request.getParameter() 메서드 name 파라미터 : 갱짱 age 파라미터 : 25 gender 파라미터 : 남자 request.getParameterValues() 메서드 독서 운동 쇼핑 request.getParameterNames() 메서드 age name hobby gender request.getParameterMap() 메서드 name: 갱짱 age: 25 hobby: 독서 운동 쇼핑 gender: 남자 -->


4. GET 방식 전송

- ?이름1=값1&이름2=값2 . . .&이름n=값n

- 요청 URL에 '?'와 함께 파라미터를 붙여서 전송한다. 공백은 '+'로, 알파벳과 숫자는 그대로, 특수 문자들은 %H의 형태로 표시된다.

- URL 기반으로 전송되기 때문에 굳이 폼을 사용하지 않더라도 파라미터를 전송할 수 있다.

- 웹 브라우저, 웹 서버 또는 웹 컨테이너에 따라 전송할 수 있는 파라미터 값의 길이에 제한이 있을 수 있다.


5. POST 방식 전송

- 데이터영역을 이요하여 파라미터를 전송하게 된다.

- 웹 브라우저나 웹 서버 등에 상관없이 전송할 수 있는 파라미터의 길이에 제한이 없다.


6. 파라미터 값의 인코딩 처리

- 웹 브라우저는 웹 서버에 파라미터를 전송할 때 알맞은 캐릭터 셋을 이용해서 파라미터 값을 인코딩한다.

- 반대로 웹 서버는 알맞은 캐릭터 셋을 이용해서 웹 브라우저가 전송한 파라미터 데이터를 디코딩 한다.

- 인코딩 캐릭터 셋과 디코딩 캐릭터  셋이 다를 경우 잘못된 파라미터 값을 사용하게 된다.

- 어떠한 캐릭터 셋을 사용할 지의 여부는 GET 방식과 POST 방식에 따라서 달라진다.

- POST 

- 페이지 디렉티브의 캐릭터셋 속성으로 인코딩 한 결과를 setCharacterEncoding() 메서드를 사용해서 디코딩한다.

- GET

- <a> 태그의 링크에 쿼리 문자열 추가 : 웹 페이지 인코딩 사용

- HTML 폼의 method 속성 값을 GET으로 지정해서 폼을 전송 : 웹 페이지 인코딩 사용

- 웹 브라우저에 주소에 직접 쿼리 문자열 포함한 URL 입력 : 웹 브라우저마다 다름

- 톰캣에서 인코딩 타입 처리

server.xml 파일에서 <Connector> 태그의 useBodyencodingForURI 속성의 값을 ture로 지정해준다.

- server.sml 파일에서 <Connector> 태그의 URIEncoding 속성 값으로 원하는 캐릭터 셋을지정해준다.


7. 요청 헤더 정보의 처리

- 웹 브라우저는 HTTP 프로토콜(헤더 정보에 부가적인 정보를 담는다)에 따라서 요청 정보를 웹 서버에 전송한다.

 메서드

 반환형 

 설명 

 getHeader(String name)

 String 

 지정한 이름의 헤더 값을 구한다.

 getHeaders(String name)

 Enumeration 

 지정한 이름의 헤더 목록을 구한다.

 getHeaderNames()

 Enumeration 

 모든 헤더의 이름을 구한다.

 getIntHeader(String name)

 int

 지정한 헤더의 값을 정수 값으로 읽어온다.

 getDateHeader(String name)

 long

 지정한 헤더의 값을 시간 값으로 읽어온다.


<!-- headerList.jsp -->

<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>헤더 목록</title>
</head>
<body>
<%
	Enumeration headerEnum = request.getHeaderNames();
	while (headerEnum.hasMoreElements()) {
		String headerName = (String) headerEnum.nextElement();
		String headerValue = request.getHeader(headerName);
%>
<%= headerName %> : <%= headerValue %> <br>
<%
	} // while
%>
</body>
</html>

<!-- 
	실행결과
	
	host : localhost:8080 
	connection : keep-alive 
	accept : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
	user-agent : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36 
	accept-encoding : gzip,deflate,sdch 
	accept-language : ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4 
	cookie : JSESSIONID=5210A7E935DEF4B5767893EAEE8E7EB4 
 -->


'자바 > JSP' 카테고리의 다른 글

JSP 실행(처리) 과정  (0) 2015.12.22
JSP 기본(내장) 객체 - response  (0) 2015.12.22
JSP 스크립트 요소  (0) 2015.12.22
JSP 디렉티브(Directive)(지시자) - page  (0) 2015.12.22
JSP 페이지의 구성 요소  (0) 2015.12.22
블로그 이미지

532

처음 프로그래밍을 시작한 개발자들은 Hello World!를 기억 할 것이다. Hello world가 Hell World가 될 줄 몰랐던 한 개발자의 이야기. 게시글의 출처를 표기하며, 출처를 남기지 않고 펌을 하는것에 대해 법적 책임을 묻지 않습니다.

,