본문 바로가기

Develop/JAVA & Spring

request 내용 확인

HTTP method 확인

String method = request.getMethod();
cs


ContextPath

String cp = request.getContextPath();
//: /study
cs


요청 URL

String url = request.getRequestURL().toString();
//http://localhost:9090/study/0222/test3_ok.jsp
 
String path = request.getScheme() + "://"
    +  request.getServerName() + ":"
    +  request.getServerPort()
    +  request.getContextPath(); //http://localhost:9090/study
cs


URL에서 스키마, 서버이름, 포트번호를 제외한 나머지 주소와 파라미터

String excludeHost = request.getRequestURI();
//: /study/0222/test3_ok.jsp
cs


https와 같은 보안 채널의 사용 여부 true/false

Secure Channel : <%=request.isSecure()%>
cs


클라이언트의 이전 주소

String referrer = request.getHeader("Referer");
//: http://localhost:9090/study/0222/test3.jsp
cs


클라이언트의 사용언어

String lang = request.getHeader("Accept-Language");
// ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
cs


브라우저, 운영체제정보

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
cs


local의 기본 정보 (서버의 정보)

Local IP: <%= request.getLocalAddr()%>
Local Name: <%= request.getLocalName()%>
Local Port: <%= request.getLocalPort()%>
cs


클라이언트의 ip 및 포트 정보

Remote IP: <%= request.getRemoteAddr()%>
Remote Host: <%= request.getRemoteHost()%> 
Remote Port: <%= request.getRemotePort()%>
 
<%
    String ip = request.getHeader("HTTP_X_FORWARDED_FOR");
    if (ip == null || ip.length() == || ip.toLowerCase().equals("unknown")) {
        ip = request.getHeader("REMOTE_ADDR");
    }
    if (ip == null || ip.length() == || ip.toLowerCase().equals("unknown")) {
        ip = request.getRemoteAddr();
    }
%>
cs


서버 이름과 포트 (일반적으로 local 기본정보와 동일)

Server Name: <%= request.getServerName()%>
Server Port: <%= request.getServerPort()%>
cs


지역 정보

Locale: <%= request.getLocale()%>
cs


사용하는 프로토콜 ("프로토콜/메이저버전.마이너버전"의 형태)

Protocol: <%= request.getProtocol()%>
cs


세션 ID에 대한 정보

Session ID : <%= request.getRequestedSessionId()%>
Session ID from Cookie : <%= request.isRequestedSessionIdFromCookie()%>
Session ID from URL : <%= request.isRequestedSessionIdFromURL()%> 
Session ID is still valid : <%= request.isRequestedSessionIdValid()%>
cs


요청에 대한 URL, 컨텍스트 경로, 서블릿 경로, GET/POST 등의 메서드

<%
    /*
    * Tomcat 5.5 이후 포워딩 된 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 method = request.getMethod();
    StringBuffer url = request.getRequestURL();
    String uri = request.getRequestURI();
 
    // User-Agent : 유저 에이전트는 브라우저 명 알기
%>
cs


include 된 페이지의 URL

 
<%= 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")%>
cs


Header 전체 정보

<%
    Enumeration eHeader = request.getHeaderNames();
        
    while (eHeader.hasMoreElements()) {
        String hName = (String)eHeader.nextElement();
        String hValue = request.getHeader(hName);
                    
        out.println(hName + " : " + hValue);
    }
%>
cs


Request 객체를 통해서 쿠키 전체 보는 방법

<%
    Cookie cookies[] = request.getCookies();
 
    for(int i=; i<cookies.length ; i++) {
        String name = cookies[i].getName();
        String value = cookies[i].getValue();
        
        out.println(name + " : " + value);
    }
%>
cs


폼 데이터 받기

<%
    Enumeration eParam = request.getParameterNames();
            
    while (eParam.hasMoreElements()) {
        String pName = (String)eParam.nextElement();
        String pValue = request.getParameter(pName);
                        
        out.println(pName + " : " + pValue);
    }
%>
cs


request body로 넘어오는 데이터

<%
    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로 전송된 한글은 깨짐
    }
%>
cs


request.attribute 전체 확인

<%
    Enumeration eAttr = request.getAttributeNames();
        
    while (eAttr.hasMoreElements()) {
        String aName = (String)eAttr.nextElement();
        String aValue = (String)request.getAttribute(aName);
                    
        out.println(aName + " : " + aValue);
    }
%>
cs