'Servlet'에 해당되는 글 2건

  1. 2007.11.29 HttpServletRequest
  2. 2007.11.28 HTTPServletRequest 메소드 정리 (3)
Etc2007. 11. 29. 23:26

HttpServletRequest 
1.
ServletRequest를 상속받아서 HTTP프로토콜상에서 할 수 있는 일들이 포함되어져 있다.

 

2. 서블릿의 service의 매개변수의 하나로 서블릿 프로그래머가 클라이언트의 요청에 관한 작업들을

    할 수 있도록 하는 중요한 역할을 담당하고 있다.

 

3. HttpServletRequest의 기능별 분류

 

  - request객체의 요청 파라미터

 

   1) public String getParameter(String name)

    : 주어진 이름의 매개변수가 갖는 값을 얻는다.

       지정된 이름의 파라미터가 존재하지 않을 경우 null을 반환한다.

 

   2) public Enumeration getParameterNames()

    : 매개변수들의 이름에 대한 Enumeration으로 반환한다.

 

   3) public String[] getParameterValues(String name)

    : 주어진 이름으로 전달된 매개변수가 갖는 모든 값을 문자열 배열로 얻는다.

       매개변수가 다중 선택이 가능한 리스트(list) 또는 선택박스(choicebox)의 값이라면, 여러 개의

       값이 하나의 이름으로 전달될 수 있지만 매개변수가 하나의 값을 갖는 경우라면

       getParameter(String name)를 사용하는 것이 낫다.

 

  - request객체의 HTTP 헤더

 

    1) public String getHeader(String headerName)

     : HTTP 요청헤더에 지정된 headerName의 값을 문자열로 반환한다.

        만약 HTTP 요청헤더에 headerName의 값이 존재하지 않는다면 null을 반환한다.

 

    2) public Enumeration getHeaderNames()

     : HTTP 요청헤더에 포함된 모든 헤더의 이름을 Enumeration으로 반환한다.

 

    3) public Enumeration getHeaders (String headerName)

     : HTTP 요청헤더에 포함된 headerName의 모든 값을 Enumeration으로 반환한다.

 

    4) public int getIntHeader (String headerName)

     : HTTP 요청헤더에 포함된 headerName의 값을 int로 반환한다.

        지정된 headerName의 값을 int로 변환 할 수 없는 경우 NumberFormatException이 발생하고

        headerName 헤더가 HTTP 요청헤더에 존재하지 않을 경우에는 –1을 반환합니다.

 

    5) public long getIDateHeader (String headerName)

     : HTTP 요청헤더에 포함된 headerName의 값을 millisecond 변환하여 long으로 반환한다.  

        지정된 headerName의 값을 int로 변환 할 수 없는 경우 IllegalArgumentException이 발생하고

        headerName 헤더가 HTTP 요청헤더에 존재하지 않을 경우에는 –1을 반환한다.

 

  - request객체의 세션 데이터

 

    1) public HttpSession getSession()

      - 요청을 시도한 클라이언트에 지정된 HttpSession 객체를 얻는다.

         이전에 생성된 HttpSession 객체가 없었다면 새로운 세션 객체를 생성한다.

 

    2) public HttpSession getSession(boolean create)

      - 요청을 시도한 클라이언트에 지정된 HttpSession 객체를 얻는다.

      - create가 false로 지정된 경우 해당 클라이언트에 대해 생성된 HttpSession 객체가 없는 경우

         null을 반환한다.

      - create가 true로 지정된 경우 이미 생성된 HttpSession 객체를 반환하고

         만약 해당 클라이언트에 생성된 HttpSession 객체가 없는 경우 새로운 세션 객체를 생성하여

         리턴한다.

 

    3) public String getRequestedSessionId()

      - 요청을 시도한 클라이언트의 세션 id를 문자열로 반환한다.

 

    4) public String isRequestedSessionId()

      - 요청을 시도한 클라이언트의 세션 id가 유효하면 true 아니면 false를 리턴한다.

 

    5) isRequestedSessionIdFromCookie()

      - 요청을 시도한 클라이언트의 세션 id가 쿠키로 전달된 경우 true 아니면 false를 리턴한다.

 

    6) isRequestedSessionIdFromURL()

      - 요청을 시도한 클라이언트의 세션 id가 URL에 포함된 경우 true 아니면 false를 리턴합니다.

 

  - request객체의 쿠키

 

    1) public Cookie[] getCookies()

      - 클라이언트의 요청에 포함된 쿠키를 Cookie배열로 리턴한다.

 

  - request객체의 요청에 사용된 URL/URI

 

    1) public String getRequestURI()

      - 요청에 사용된 URL로부터 URI부분을 문자열로 리턴한다.  

 

    2) public String getQueryString()

      - 요청에 사용된 쿼리 문자열을 문자열로 리턴한다.

 

    3) public String getMethod()

      - 요청에 사용된 요청방식을 문자열로 리턴한다.


펌 :http://blog.naver.com/sensate1024?Redirect=Log&logNo=40040507242

Posted by is윤군
TAG Servlet

댓글을 달아 주세요

Etc2007. 11. 28. 16:59

출처 : 미니의 XML DeveloperGroup (http://www.word.pe.kr)

클라이언트 IP 등의 정보를 가져오거나, 쿠키, 헤더, GET/POST로 전송한 값을 가져오는데 주로 사용하는 것이 바로 Request입니다.

JSP/Servlet에서 사용하는 Request 객체의 메소드를 대략적으로 정리해 봤습니다.

이 Request 객체는 javax.servlet.http 패키지에 속한 HTTPServletRequest 인터페이스로서 javax.servlet.ServletRequest 인터페이스에서 상속을 받았습니다.

그래서 제가 정리하려는 내용은 javadoc의 다음 부분에 아주 자세히 나와 있습니다.
나중에 영어로 된 거 또 읽어보기 싫어서 정리해보는 거네요~~

http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpServletRequest.html

http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletRequest.html

주로 사용하는 정보만을 보여주는 간단한 jsp 파일을 구성해 봤습니다.
jsp 파일 두개로 되어 있구요.. 소스는 걍 여기서 받으면 됩니다. 소스받기 : request.zip

index.jsp 파일을 열고 난 후.. 링크를 클릭하면 request에서 처리할 수 있는 정보들이 나타납니다.
request.jsp 파일의 내용이 주로 설명할 것인데요.. 뭐 이미 잘 알려진 거라 특별히 새로울 것은 없습니다.

먼저 local의 기본 정보(IP, Name, Port)를 보여줍니다. local이라 하면 일반적으로 서버를 의미하는 것이겠죠..
Local IP : <%=request.getLocalAddr()%>
Local Name : <%=request.getLocalName()%>
Local Port : <%=request.getLocalPort()%>

다음으로 클라이언트의 정보입니다. IP, Host, Port를 가져올 수 있습니다.
Remote IP : <%=request.getRemoteAddr()%>
Remote Host : <%=request.getRemoteHost()%>
Remote Port : <%=request.getRemotePort()%>

이어서 서버 이름과 포트가 있는데요.. 일반적으로 local 기본정보와 동일하겠죠..
Server Name : <%=request.getServerName()%>
Server Port : <%=request.getServerPort()%>

지역 정보입니다. 대부분 한국을 의미하는 ko가 나올 것 같네요..
Locale : <%=request.getLocale()%>

사용하는 프로토콜입니다. "프로토콜/메이저버전.마이너버전" 의 형태입니다.
Protocol : <%=request.getProtocol()%>

http, https, ftp와 같은 것을 의미합니다.
Scheme : <%=request.getScheme()%>

https와 같은 보안 채널의 사용 여부입니다. true/false 값으로 되어 있네요..
Secure Channel : <%=request.isSecure()%>

요청에 대한 URI, URL, 컨텍스트 경로, 서블릿 경로, GET/POST등의 메소드를 나타냅니다.
Request's URI : <%=request.getRequestURI()%>
Request's URL : <%=request.getRequestURL()%>
Context Path : <%=request.getContextPath()%>
Servlet Path : <%=request.getServletPath()%>
Method : <%=request.getMethod()%>

세션 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();
  String 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 = request.getHeader(aName);

  out.println(aName + " : " + aValue);
 }
%>

갑자기 Request에 대한 정보를 파악할 필요가 있어 정리하면서 올려봅니다.

Posted by is윤군
TAG Servlet

댓글을 달아 주세요

  1. 비밀댓글입니다

    2008.01.30 15:16 [ ADDR : EDIT/ DEL : REPLY ]
  2. 네넹~~열공하세요^^

    2008.02.01 12:42 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 오호잇

    좋은글 잘 보고 갑니다~~~ ^^

    2012.06.19 10:02 [ ADDR : EDIT/ DEL : REPLY ]