서버에 Request 요청/획득에대해서 알아보자 !
● method 확인(get인지 post인지)
String method = request.getMethod();
● ContextPath(문맥경로)
String cp = request.getContextPath();
//: /study
● 요청 URL
String url = request.getRequestURL().toString();
//http://localhost:9090/study/0222/test3_ok.jsp
String path = request.getScheme() + “://”
+ request.getServerName() + “:”
+ request.getServerPort()
+ request.getContextPath();
● 요청 URI: URL에서 스키마, 서버이름, 포트번호를 제외한 나머지 주소와 파라미터
String uri = request.getRequestURI();
//: /study/0222/test3_ok.jsp
● https와 같은 보안 채널의 사용 여부 (true/false 값)
Secure Channel : <%= request.isSecure() %>
● 클라이언트의 이전 주소
String referer = request.getHeader(“Referer”);
if(referer==null)
referer=””;
//: http://localhost:9090/study/0222/test3.jsp
● 언어정보
String lang = request.getHeader(“Accept-Language”);
// ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
● 브라우저, 운영체제정보
String bw = request.getHeader(“User-Agent”);
//Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17
● local의 기본 정보 (서버의 정보)
Local IP = <%= request.getLocalAddr() %>
Local Name = <%= request.getLocalName() %>
Local Port = <%= request.getLocalPort() %>
● 클라이언트의 ip 및 포트 정보
Remote IP : <%= request.getRemoteAddr() %>
Remote Host : <%= request.getRemoteHost() %>
Remote Port : <%= request.getRemotePort() %>
//혹은
1
2
3
4
5
6
7
|
String ip = request.getHeader( "HTTP_X_FORWARDED_FOR" ); if (ip == null || ip.length() == 0 || ip.toLowerCase().equals( "unknown" )) { ip = request.getHeader( "REMOTE_ADDR" ); } if (ip == null || ip.length() == 0 || ip.toLowerCase().equals( "unknown" )) { ip = request.getRemoteAddr(); } |
● 서버 이름과 포트 (일반적으로 local 기본정보와 동일)
Server Name : <%= request.getServerName() %>
Server Port : <%= request.getServerPort() %>
● 지역 정보
Locale : <%= request.getLocale() %>
● 사용하는 프로토콜 (“프로토콜/메이저버전.마이너버전”의 형태)
Protocol : <%= request.getProtocol() %>
● 세션 ID에 대한 정보
Session ID : <%= request.getRequestedSessionId() %>
Session ID from Cookie : <%= request.isRequestedSessionIdFromCookie() %>
Session ID from URL : <%= request.isRequestedSessionIdFromURL() %>
Session ID is still valid : <%= request.isRequestedSessionIdValid() %>
● 요청에 대한 URI, 컨텍스트 경로, 서블릿 경로, GET/POST 등의 메소드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<% /* * Tomcat 5.5 이후 forward 된 jsp 에서 getRequestURI() 혹은 * getRequestURL()의 값이 이상해진 경우 * 예를 들어 서블릿 에서 * uri : cp/bbs/list.ation * jsp 위치(포워딩 jsp) : /WEB-INF/views/bbs/list.jsp 인경우 * * 포워딩된 jsp에서 위 메소드를 사용하면 * * /cp/WEB-INF/views/bbs/list.jsp * http://localhost:8080/cp/WEB-INF/views/bbs/list.jsp 로 jsp가 존재하는 경로가 표시된다. * * 하지만 서블릿에서 위 메소드를 사용하면 * * /cp/bbs/list.ation * http://localhost:8080/cp/bbs/list.ation 로 표시된다. * * 만약 포워딩된 jsp에서 브라우저 주소를 가져오기 위해서는 다음 방법을 이용한다. * String url=request.getAttribute("javax.servlet.forward.request_uri"); * * - 기타 속성 * javax.servlet.forward.request_uri * javax.servlet.forward.context_path * javax.servlet.forward.servlet_path * javax.servlet.forward.path_info * javax.servlet.forward.query_string * - http://localhost:8080/study/jsp/test.jsp?name="hong" 에서의 출력 결과 * javax.servlet.forward.request_uri -> /study/jsp/test.jsp * javax.servlet.forward.servlet_path -> /jsp/test.jsp * javax.servlet.forward.context_path -> /studt * javax.servlet.forward.path_info -> null * javax.servlet.forward.query_string -> name="hong" */ String cp = request.getContextPath(); String path =request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + cp; String useBrowser = request.getHeader( "User-Agent" ); String fileType = request.getHeader( "Accept" ); String referer = request.getHeader( "Referer" ); String method = request.getMethod(); StringBuffer url = request.getRequestURL(); String uri = request.getRequestURI(); // User-Agent : 유저 에이전트는 브라우저 명 알기 // Referer : 래퍼러는 전페이지 주소를 얻으며 전페이지가 없으면 null if (referer== null ) referer= "" ; %> |
● include 된 페이지 uri가져올 경우
1
2
3
4
5
6
7
8
|
<%= request.getAttribute( "javax.servlet.include.request_uri" ) %> // 그 외 include 된 페이지 정보 구하기 <%= request.getAttribute( "javax.servlet.include.query_string" ) %> <%= request.getAttribute( "javax.servlet.include.path_info" ) %> <%= request.getAttribute( "javax.servlet.include.servlet_path" ) %> <%= request.getAttribute( "javax.servlet.include.context_path" ) %> <%= request.getAttribute( "javax.servlet.include.request_uri" ) %> |
Header 정보 보는 방법
1
2
3
4
5
6
7
8
9
10
|
<% Enumeration eHeader = request.getHeaderNames(); while (eHeader.hasMoreElements()) { String hName = (String)eHeader.nextElement(); String hValue = request.getHeader(hName); out.println(hName + " : " + hValue); } %> |
Request 객체를 통해서 쿠키 정보 보는 방법
1
2
3
4
5
6
7
8
9
10
|
<% Cookie cookies[] = request.getCookies(); for ( int i= 0 ; i<cookies.length ; i++) { String name = cookies[i].getName(); String value = cookies[i].getValue(); out.println(name + " : " + value); } %> |
HTML 폼을 통해 넘어온 데이터를 받는 부분
1
2
3
4
5
6
7
8
9
10
|
<% Enumeration eParam = request.getParameterNames(); while (eParam.hasMoreElements()) { String pName = (String)eParam.nextElement(); String pValue = request.getParameter(pName); out.println(pName + " : " + pValue); } %> |
attribute를 가져오는 부분
1
2
3
4
5
6
7
8
9
10
|
<% Enumeration eAttr = request.getAttributeNames(); while (eAttr.hasMoreElements()) { String aName = (String)eAttr.nextElement(); String aValue = (String)request.getAttribute(aName); out.println(aName + " : " + aValue); } %> |
[[request로 넘어오는 데이타들]], form 에서 enctype=”multipart/form-data” 인경우 만 사용 가능
1
2
3
4
5
6
7
8
9
|
<% DataInputStream dis = new DataInputStream(request.getInputStream()); String str; while ((str = dis.readLine()) != null ) { out.println( new String(str.getBytes( "ISO-8859-1" ), "euc-kr" )+ "<br/>" ); // utf-8로 전송된 한글은 깨짐 } %> |