2008. 11. 22. 00:08

request 의 모든 파라미터 얻어오기


 1 request파라미터 
 

클라이언트의 요청시 파라미터가 존재할 때 이를 request객체가 핸들 할 수 있다. 다음은 post방식의 요청을 해결하는 예제입니다.

 


 2 클라이언트 폼(requestParam.html) 
 

<HTML><HEAD><TITLE>REQUEST정보</TITLE></HEAD>
<BODY>
<FORM METHOD="POST" ACTION="request.jsp">    
    <H3>폼데이터 전송-REQUEST파라미터예제</H3>
    이 름 : <INPUT TYPE="TEXT" NAME="ID" ><BR>
    비밀번호: <INPUT TYPE="PASSWORD" NAME="PASSWD" ><BR>
    <INPUT TYPE="SUBMIT" VALUE="POST전송">
</FORM>
</BODY>
</HTML>

 


 3 클라이언트의 요청을 받아 파라미터를 처리하는 request.jsp 
 

<%-- request.jsp --%>
<%@page import="java.util.*" contentType="text/html;charset=euc-kr"%> 

<HTML><HEAD><TITLE>내장 객체 request </TITLE></HEAD>
<BODY>
<H2> 내장 객체 request파라미터 전송 </H2><P>

<% 

 Enumeration enum = request.getParameterNames();
 String name = ""
;
 while(enum.hasMoreElements()) {

  name = (String)enum.nextElement();
  out.print(name + ":" + request.getParameter(name) + "<br>"
);
 }

%>

3 getParameter()와 Enumeration()메서드
   그리고 getParameterNames() 메서드는 클라이언트로부터 넘어온 파라미터 변수값을 얻는 방법이다. 이때 리턴되는 값은 Enumeration값으로 Enumeration은 자체 메서드도 boolean hasMoreElements(), Object nextElement()  둘 밖에는 없는 간단한 유틸 클래스이다. Enumeration의 가장 큰장점은 바로 hasMoreElements()메서드로서 다음데이터가 있는지 없는지를 알려주는 함수를 사용할 수 있다는 것이다.

vector v가 있다면 v의 요소를 프린트하기 위해서 다음과 같은 구문을 사용한다.  

     for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {
         System.out.println(e.nextElement());
     }

이 구문은 Enumeration의 가장 일반적인 구문이며 위의 구문과도 비슷하다. 일단 getParameterNames()메서들 이용하여 클라이언트로 부터 넘어온 모든 파라미터 변수값을 Enumeration으로 받고 Enumeration의 요소를 꺼집어내어 request.getParameter(파라미터변수)를 이용하여 넘어온 파라미터 변수의 값을 얻고 있다.

 

 

☞ 팁: Enumeration은 C언어의 열거자의 형태를 클래스로 표현한 것이며 자바에서 이 클래스의 사용목적은 다음에 올 데이터가 무엇인지를 모를때 아주 유용하게 사용되어진다. 

 

2008. 11. 22. 00:08

request 객체 속성


♣ request 내부객체

HTTP 요청이 있을 때 발생하는 모든 정보와 이 정보를 얻어 낼 수 있는 여러가지 기능을 하는 객체가 바로 request 객체입니다.
이 객체는 response와 더불어 _jspService의 매개변수역할을 하며, Server Page 프로그램에서 가장 기본이 되는 객체입니다.

HTTP 프로토콜로 사용자 요청이 있을 때 요청된 메세지는 HTTP 헤더 부분과 HTTP 몸체 부분으로 나뉘어 집니다.
HTTP 메시지 자체의 목적지가 Java Server Page라면 JSP는 HTTP 메세지 전부를 이용하여 HttpServletRequest 객체를 생성하게 되며, 이것을 _jspServer 메서드내에서 매개변수로 넘겨받게 되는 것입니다.
코딩을 할때, 가장 많이 사용하게 될 request.getParameter()라는 메소드가 여기에 해당됩니다.
Request 객체에는 request.getParameter() 말고도 많은 메소드가 있으며, 메소드의 종류는 아래 표와 같습니다.

⊙ 클라이언트가 넘겨주는 파라미터에 관련된 정보를 얻는 메서드

메소드
설명
public Enumeration getParameterNames()
모든 요청 매개변수의 이름을 Enumeration으로 반환한다.
public String getParameter( String name )
해당 이름값에 해당하는 매개변수의 값을 반환한다.
지정된 이름의 파라미터가 존재하지 않을 경우 null을 반환한다.
public String[] getParameterValues( String name )
해당 이름값에 해당되는 매개변수의 모든 값을 String 배열로 반환한다.

⊙ HTTP 헤더와 관련된 메소드

메소드
설명
public String getHeader( String headerName )
HTTP요청 헤더에 지정된 headerName의 값을 문자열로 반환한다.
HTTP요청헤더에 headerName헤더가 존재하지 않는 경우 null을 반환한다.
public Enumeration getHeaderNames()
HTTP요청 헤더에 포함된 모든 헤더의 이름을 Enumeration으로 반환한다.
public Enumeration getHeaders( String headerName)
HTTP요청 헤더에 포함된 headerName헤더의 모든값을 Enumeration으로 반환한다.
public int getIntHeader( String headerName )
HTTP요청헤더에 포함된 headerName헤더의 값을 int로 반환한다.
지정된 headerName헤더의 값을 int로 변환할 수 없는 경우 NumberFormatException이 발생하고, headerName헤더가 HTTP요청헤더에 존재하지 않는 경우에는 -1 값을 반환한다.
public long getDateHeader( String headerName )
HTTP요청헤더에 포함된 headerName헤더 값을 1970년 1월 1일 00시 00분 기준으로 현재까지의 밀리초를 long형으로 반환한다.
HTTP요청 헤더에 headerName헤더가 존재하지 않은 경우 -1을 반환한다.
headerName헤더를 long형 숫자로 변환자지 못할 경우 IllegalArgumentException을 발생시킨다.  
getCookies()
요청에 대한모든 쿠키를 반환한다.

⊙ 세션데이터에 관련된 메서드

메소드
설명
public HttpSession getSession()
요청을 시도한 클라이언트에 지정된 HttpSession객체를 얻어낸다.
이전에 생성된 HttpSession객체가 없었다면 새로운 세션 객체를 생성하게 된다.
public HttpSession getSession( boolean create )
요청을 시도한 클라이언트에 지정된 HttpSession 객체를 얻어낸다.
create가 false로 지정된 경우 해댱 클라이언트에 대해 생성 된 HttpSession객체가 없는 경우 null을 반환한다.
create가 true로 지정된 경우 이미 존재하는 경우 생성된 HttpSession객체를 리턴하고 해당 클라이언트에 생성된 HttpSession객체를 리턴하고 해당 클라이언트에 생성된 HttpSession객체가 없으면 새로운 HttpSession객체를 생성하여 반환한다.
public String getRequestedSeeionId()
요청을 시도한 클라이언트이 세션 id를 문자열로 반환한다.
public String isRequestedSessionIdValid()
요청에 포함된 클라이언트이 세션id가 유효하면 true아니면 false를 반환한다.
isRequestedSessionIdFromCookie()
요청에 포함된 클라이언트이 세션 id가 쿠키로부터 전달된 경우 true 아니면 false를 반환한다. 

⊙ 기타 메소드

메소드
설명
getRequestURI()
요청에 사용된 URL로부터 URI부분을 문자열로 반환한다. 
getMethod()
요청에 사용된 요청방식 GET, POST 등을 문자열로 반환한다.
getRequestURL()
요청 URL을 반환 한다.(질의 문자열은 안 한다.)
getQueryString()
요청 URL을 반환 한다.( 질의 문자열 포함)
getRequestDispatcher(path)
Path에 지정된로컬URL에 대한 요청 전달자를 반환한다.
getRemoteHost()
요청을 보낸 호스트의 이름을 반환한다.
getRemoteAddr()
요청을 보낸 호스트의 IP를 반환한다.
getRemoteUser()
요청을 보낸 사용자의 이름을 반환한다.

사용 예) String name = request.getParameter(“name”);