■ 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 : 클라이언트가 캐싱이나 내용 변환 관련 에러게 대해 경고 할 때 쓰이는 헤더로 자주 쓰이지 않는다.
■ HttpServletRequest
□ Request
- GET/POST로 전송한 값을 가져오거나 클라이언트 IP등의 정보를 가져오거나, 쿠키, 헤더등의 정보를 리턴한다.
□ 특징
- javax.servlet.http.HttpServletRequest 인터페이스.
- javax.servlet.ServletRequest 인터페이스에서 상속을 받음.
- 웹 클아이언트로부터 전달되는 요청을 표현하기 위해서 사용.
□ local의 기본 정보 (서버의 정보) <br>
Local IP = <%= request.getLocalAddr() %> <br>
Local Name = <%= request.getLocalName() %> <br>
Local Port = <%= request.getLocalPort() %> <br>
<br>
□ 클라이언트의 정보 <br>
Remote IP : <%= request.getRemoteAddr() %> <br>
Remote Host : <%= request.getRemoteHost() %> <br>
Remote Port : <%= request.getRemotePort() %> <br>
<br>
□ 서버 이름과 포트 (일반적으로 local 기본정보와 동일) <br>
Server Name : <%= request.getServerName() %> <br>
Server Port : <%= request.getServerPort() %> <br>
<br>
□ 지역 정보 <br>
Locale : <%= request.getLocale() %> <br>
<br>
□ 사용하는 프로토콜 ("프로토콜/메이저버전.마이너버전"의 형태) <br>
Protocol : <%= request.getProtocol() %> <br>
<br>
□ http, https, ftp 여부 <br>
Scheme : <%= request.getScheme() %> <br>
<br>
□ https와 같은 보안 채널의 사용 여부 (true/false 값) <br>
Secure Channel : <%= request.isSecure() %> <br>
<br>
□ 요청에 대한 URI, URL, 컨텍스트 경로, 서블릿 경로, GET/POST 등의 메소드 <br>
Request's URI : <%= request.getRequestURI() %> <br>
Request's URL : <%= request.getRequestURL() %> <br>
Context Path : <%= request.getContextPath() %> <br>
Servlet Path : <%= request.getServletPath() %> <br>
Method : <%= request.getMethod() %> <br>
<br>
□ 세션 ID에 대한 정보 <br>
Session ID : <%= request.getRequestedSessionId() %> <br>
Session ID from Cookie : <%= request.isRequestedSessionIdFromCookie() %> <br>
Session ID from URL : <%= request.isRequestedSessionIdFromURL() %> <br>
Session ID is still valid : <%= request.isRequestedSessionIdValid() %> <br>
<br>
□ Header 정보 보는 방법 <br>
<%
Enumeration eHeader = request.getHeaderNames();
while(eHeader.hasMoreElements()) {
String hName = (String)eHeader.nextElement();
String hValue = request.getHeader(hName);
out.println(hName + " : " + hValue);
}
%>
<br>
□ Request 객체를 통해서 쿠키 정보 보는 방법 <br>
<%
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);
}
%>
<br>
□ HTML 폼을 통해 넘어온 데이터를 받는 부분 <br>
<%
Enumeration eParam = request.getParameterNames();
while(eParam.hasMoreElements()) {
String pName = (String)eParam.nextElement();
String pValue = request.getParameter(pName);
out.println(pName + " : " + pValue);
}
%>
<br>
□ attribute를 가져오는 부분 <br>
<%
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" 인경우 만 사용 가능<br/>
<%
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로 전송된 한글은 깨짐
}
%>
'JSP' 카테고리의 다른 글
이클립스 환경설정 (Server / JSP Servlet) (0) | 2011.12.07 |
---|---|
서블릿 참고 페이지 외 (0) | 2011.12.07 |
개요 (0) | 2011.12.07 |