request 객체 활용
request 객체에는 사용자 정보가 기본적으로 많이 담겨 있다.
request 객체에서 해당 정보를 사용하여 개발되는 사이트의 로그나 사용자 반응을 확인하는 용도로 많이 사용한다.
또한 여러종류(개발,테스트,스테이징,운영,DR..)의 서버가 동작중일 경우 같은 코드로 서버별 다른 동작을 할때도 유용하다.
<%
// request.getHeader("referer"); // 접속 경로
// request.getHeader("user-agent"); // 유저의 시스템 정보
// request.getHeader("host"); // 접속 ip
// request.getHeader("User-Agent"); // 브라우져 정보 가져오기
// request.getHeader("WL-Proxy-Client-IP")
// request.getHeader("Proxy-Client-IP")
// request.getHeader("X-Forwarded-For") // 클라이언트 ip 주소 가져오기
// request.getRequestURI(); //프로젝트경로부터 파일까지의 경로값을 얻어옴
// request.getContextPath(); //프로젝트의 경로값만 가져옴
// request.getRequestURL(); //전체 경로를 가져옴
// request.getServletPath(); //파일명
// String request.getParameter(name) //페이지에 전달된 파라미터를 name 기준으로 가져옴
// String[] request.getParameterValues(name) // 페이지에 전달된 파라미터들을 모두 가져와 배열형태로 반환함
// String request.getProtocol() 웹 서버로 요청 시, 사용 중인 프로토콜을 리턴한다.
// String request.getServerName() 웹 서버로 요청 시, 서버의 도메인 이름을 리턴한다.
// String request.getMethod() 웹 서버로 요청 시, 요청에 사용된 요청 방식(GET, POST, PUT 등)을 리턴한다.
// String request.getQueryString() 웹 서버로 요청 시, 요청에 사용된 QueryString을 리턴한다.
// String request.getRequestURI() 웹 서버로 요청 시, 요청에 사용된 URL 로부터 URI 값을 리턴한다.
// String request.getRemoteAddr() 웹 서버로 정보를 요청한 웹 브라우저의 IP주소를 리턴한다.
// int request.getServerPort() 웹 서버로 요청 시, 서버의 Port번호를 리턴한다.
// String request.getContextPath() 해당 JSP 페이지가 속한 웹 어플리케이션의 콘텍스트 경로를 리턴한다.
// String request.getHeader(name) 웹 서버로 요청 시, HTTP 요청 헤더(header)의 헤더 이름인 name에 해당하는 속성값을 리턴한다.
다양한 request 객체 내 정보를 시스템로그에 찍어보면 활용도를 찾을수 있다.
System.out.println("referer:"+request.getHeader("referer"));
System.out.println("user-agent:"+request.getHeader("user-agent"));
System.out.println("host:"+request.getHeader("host"));
System.out.println("WL-Proxy-Client-IP:"+request.getHeader("WL-Proxy-Client-IP"));
System.out.println("Proxy-Client-IP:"+request.getHeader("Proxy-Client-IP"));
System.out.println("X-Forwarded-For:"+request.getHeader("X-Forwarded-For"));
System.out.println("HTTP_CLIENT_IP:"+request.getHeader("HTTP_CLIENT_IP"));
System.out.println("HTTP_X_FORWARDED_FOR:"+request.getHeader("HTTP_X_FORWARDED_FOR"));
System.out.println("getContextPath:"+request.getContextPath());
System.out.println("getProtocol:"+request.getProtocol());
System.out.println("getQueryString:"+request.getQueryString());
System.out.println("getRemoteAddr:"+request.getRemoteAddr());
System.out.println("getRequestURI:"+request.getRequestURI());
System.out.println("getServerName:"+request.getServerName());
System.out.println("getServletPath:"+request.getServletPath());
System.out.println("getSession:"+request.getSession().getId());
// Enumeration request.getHeaderNames() 웹 서버로 요청 시, HTTP 요청 헤더(header)에 있는 모든 헤더 이름을 리턴한다.
// 파라미터의 헤더에 담긴 모든 정보를 조회하려고 할때 while문을 활용하여 전체를 찍어볼 수 있다.
Enumeration headers = request.getHeaderNames();
while(headers.hasMoreElements()) {
String headerName = (String)headers.nextElement();
String value = request.getHeader(headerName);
System.out.println("headerName:"+headerName+","+value);
}
%>