본문 바로가기

JSP

내부 객체와 폼 처리

■ 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