2013. 7. 29. 13:50


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
String method = request.getMethod();
//: method 확인(get|post)
//: GET
  
String ip = request.getRemoteAddr();
//: 클라이언트 아이피주소
//: 127.0.0.1
  
String cp = request.getContextPath();
//: ContextPath(문맥경로)
//: /study
  
String url = request.getRequestURL().toString();
//클라이언트가 요청한 전체주소
 
String uri = request.getRequestURI();
//URI : cp부터 나머지 주소
//: /study/0222/test3_ok.jsp
 
String path = request.getScheme() + "://" + request.getServerName()
     + ":" + request.getServerPort() + request.getContextPath();
//path
  
String referer = request.getHeader("Referer");
if(referer==null)
 referer="";
//클라이언트의 이전 주소
 
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



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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
여부 (true/false 값)
       Secure Channel : <%= request.isSecure() %>
 
 □ 요청에 대한 URI, 컨텍스트 경로, 서블릿 경로, GET/POST 등의 메소드
  // User-Agent : 유저 에이전트는 브라우저 명 알기
  // Referer : 래퍼러는 전페이지 주소를 얻으며 전페이지가 없으면 null
 
String method = request.getMethod();
 
StringBuffer url = request.getRequestURL();
String uri = request.getRequestURI();
 
  /*
     // 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");
 if(referer==null)
  referer="";
 
 
 □ include 된 페이지 uri가져올 경우
    <%= 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")
 
 
 □ 세션 ID에 대한 정보
       Session ID : <%= request.getRequestedSessionId() %>
       Session ID from Cookie : <%= request.isRequestedSessionIdFromCookie() %>
       Session ID from URL : <%= request.isRequestedSessionIdFromURL() %>
       Session ID is still valid : <%= request.isRequestedSessionIdValid() %>
 
 □  Header 정보 보는 방법
       <%
           Enumeration eHeader = request.getHeaderNames();
        
           while(eHeader.hasMoreElements()) {
               String hName = (String)eHeader.nextElement();
               String hValue = request.getHeader(hName);
                
               out.println(hName + " : " + hValue);
           }
       %>
        
 □ Request 객체를 통해서 쿠키 정보 보는 방법
       <%
           Cookie cookies[] = request.getCookies();
        
           for(int i=0 ; i<cookies.length ;="" i++)="" {="" string="" name="cookies[i].getName();" value="cookies[i].getValue();" out.println(name="" +="" "="" :="" value);="" }="" %="">
        
  □ HTML 폼을 통해 넘어온 데이터를 받는 부분
       <%
           Enumeration eParam = request.getParameterNames();
        
           while(eParam.hasMoreElements()) {
               String pName = (String)eParam.nextElement();
               String pValue = request.getParameter(pName);
                
               out.println(pName + " : " + pValue);
           }
       %>
 
 □  attribute를 가져오는 부분
       <%
           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" 인경우 만 사용 가능
    <%
         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로 전송된 한글은 깨짐
         }
     %>
 
</cookies.length>

■ request header 정보


□ Accept : 브라우저나 기타 클라이언트가 다룰 수 있는 MIME 형식들을 지정하는 것이다.

 

□ Accept-Charset : 브라우저가 사용할 수 있는 문자셋(ISO-8859-1)을 의미한다.

 

□ Accept-Encoding :  클라이언트가 원하는 인코딩 방식들을 의미한다. 문서를 네트웍 너머로 보내기에 적합한 형태로 

변환하는것 을 의미한다.

 

□ Accept-Language : 클라이언트가 원하는 기본 언어를 의미한다.  

 

□ Authorization : 헤더는 패스워드로 보호된 웹 페이지에 접근하려 하는 클라이언트가 자신의 신원 정보를 보내는 용도로 쓰인다.

 

□ Cache-Control : 프록시 서버에서의 캐시 설정을 의미한다.  

 

□ Connection : 클라이언트가 영속적 HTTP 연결을 처리할 수 있는지의 여부를 뜻한다.

 

□ Content-Length : post만 해당하는 것으로, post 데이터에 담긴 데이터의 크기를 의미한다.

 

□ Content-type : 주로 응답에서 쓰이지만, 클라이언트가 post나 put을 이용해서 어떤 문서를 첨부했다면 클라이언트 요청 안에 

포함되기도 한다.

 

□ Cookie : 서버가 브라우저에게 보냈던 쿠키를 다시 서버로 돌려 보낼 때 쓰인다.

 

□ Expect : 클라이언트가 바라는 서버의 행동이 어떤 것인지를 의미하는 헤더로 별로 쓰이지는 않는다.

 

□ From : HTTP 요청에 대해 책임이 있는 사람의 전자 우편주소이다.

 

□ Host : URL안에 호스트와 포트 번호로 브라우저는 반드시 이 헤더를 포함해야함. 브라우저가 원하는 구체적인 자원을 정확하게 

돌려주기 위한 용도로 쓰임.

 

□ If-Match : put요청에 해당하는 헤더

 

□ If-Modified-Since : 어떤 페이지의 최종 수정일시가 특정항 일시 이후인 경우만 그 페이지를 돌려 받기 원하는 경우 이헤더에 

그 일시를 헤더에 설정해서 요청한다.

 

 □ If-None-Match : If-Match와 반대

 

□ If-Range : 다운로드 관리자의 이어받기 기능에서 주로 이용된다. 어떤 하나의 문서의 일부분만을 가지고 있을 때 수정 일시를 

지정해서 그 일시 이후에 변한 것이 없으면 이미 가지고 있는 부분 이외의 것만 받게하고 아니면 문서 전체를 받는 용도로 쓰인다.

 

□ If-Unmodified-Since : If-Modified-Since 반대

 

□ Pragma : 헤더 값이 no-catch이면 프록시 서버 또는 하나의 프로시로서 작동하는 서블릿은 캐시에 복사본이 있다고 해도 

서버에서 처리한 response를 전달한다.

 

□ Procy-Authorization

 

□ Range : If-Range 와 비슷하다.

 

□ Referer : 이전 url정보를 얻을 때 사용하지만, 너무 믿으면 곤란하다.

 

□ Upgrade : 클라이언트가 서버에게 HTTP1.1 이상의 어떠한 프로토콜을 지정하는 용도로 쓰인다.

 

□ User-Agent : 브라우저의 소프트웨어 종류와 버전을 의미한다.   

 

□ Via : 요청이 거쳐간 중간 사이트들을 의미한다 주로 게이트웨이나 프록시 서버가 설정한다.  

 

□ Warning : 클라이언트가 캐싱이나 내용 변환 관련 에러게 대해 경고 할 때 쓰이는 헤더로 자주 쓰이지 않는다.   

'JSP > Jsp 내장객체' 카테고리의 다른 글

JSP 내장객체의 스코프  (0) 2013.08.16
HTML 문서에서 인자로 사용  (0) 2013.08.16
EL 개요  (0) 2013.08.16
Session  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?