본문 바로가기

JAVA / JSP

request 객체에 대해 알아보자 (request 객체 사용에 대한 설명)


request 객체에 대한 설명

  사용자가 서버에 웹 브라우저를 통해 페이지을 요청할 경우 브라우저는 사용자 요청과 관련된 일련의 데이터들을 HTTP 메시지로 구성해 서버에 전송하게 된다. 이 메시지는 HTTP 헤더 와 본문으로 구성 되며 웹 서버는 HTTP 메시지를  수신하여 그 정보를 분석해 이 요청이 서블릿/JSP 요청으로 판명될 경우 JSP/서블릿 컨테이너(톰켓, 제우스 등..)에 요청에 대한 처리를 넘기게 된다

  JSP/서블릿 컨테이너는 전송 받은 HTTP 메시지를 통해 HttpServletRequest 객체를 생성하고 이를 서블릿 인스턴스에 넘겨줌으로써 서블릿이 사용자의 요청에 관련된 데이터들을 얻게 된다. JSP 페이지에서는 HttpServletRequest 객체를 request란 이름의 객체로 사용한다.

  ex) request.getParameter(str), request.getHeader(str) ..

      

                                         요청(request)

       클라이언트(사용자)      ---------------->     웹 서버

                                       <----------------

                                         응답(response)

 

 

request 객체의 메소드

  1. getParameter(String name)

    - 리턴 타입 : String

    - 설명 : name이란 이름으로 지정된 파라미터에 할당된 값을 리턴한다. 지정된 이름의 파라미터가 없으면 null 리턴

          (파라미터란 사용자가 post 및 get 방식으로 웹 서버에 전달된 데이터를 말하는데 우리는 개발시

          <input type="text" name="test" /> 이런 입력 박스를 만들 것이다. 여기서 test라는 name이 파라미터 name 됨

           아니면 URL을 통해 http://stoneis.pe.kr?name=stone   이런식으로 전달할 경우 name에 stone값이 대입됨.

    - 사용법 : request.getParameter("test");        다음과 같이 쓰인다.

    - 참고 : PHP에서는 _GET[name] 이였던가..? 아니면 바로 $name 이런식으로 파라미터를 받았던 기억이 난다.

 

  2. getParameterValues(String name);

    - 리턴 타입 : String[]

    - 설명 : name이란 이름으로 지정된 파라미터의 모든 값을 String 배열로 리턴한다.

               하나의 이름으로 여러 개의 값을 가질 수 있는 checkbox와 같은 태그를

    - 사용법 : request.getParameterValues("test");

    - 참고 : 배열로 반환하기 때문에 String[] name = request.get.......

 

  3. getParameterNames();

    - 리턴 타입 : Enumeration

    - 설명 : 요청에 포함된 모든 파라미터 이름을 Enumeration 객체로 리턴 한다.

    - 참고 : 파라미터의 이름 즉. 위에서 name 값을 가져오는 것이다. Enumeration 객체는 배열과 유사하다.

 

  4. getHeader("headerName");

    - 리턴 타입 : String

    - 설명 : HTTP 요청 헤더에 headerName으로 지정된 이름으로 할당된 값을 리턴한다.

               지정된 이름이 없을 시 null 을 리턴

    - 사용법 : request.getHeader("referer");  이 referer 문자열은 이전페이지의 링크 URL 정보를 반환한다. 없을시null

                   request.getHeader("User-Agent"); 이 User-Agent 문자열은 헤더 정보를 반환한다. 없을시 null

                   request.getHeaders, getHeaderNames, getIntHeader이 있다.

 

  5. getHeaderNames();

    - 리턴 타입 : Enumeration

    - 설명 : HTTP 요청 헤더에 포함된 모든 헤더 이름을 Enumeration 객체로 리턴 한다.

    - 사용법 : 헤더 이름에 대한 값들이 출력되는 소스 들이다.

                  Enumeration en = request.getHeaderNames();

                  while(en.hasMoreElements()) {

                      request.getHeader((String)en.nextElement());

                   }

    - 브라우저의 cpu 비트, 언어타입, 브라우저 버젼 속성, 호스트, 쿠키 등 값들이 출력된다.

 

  6. getSession();

    - 리턴 타입 : HttpSession

    - 설명 : 요청한 클라이언트에 지정된 HttpSession 객체를 얻는다. 이전에 생성된 객체가 없을 시 새로운 객체 생성

    - 참고 : getSession(Boolean t), getRequestedSessionId(), getRequestedSessionIdValid(); 메소드 등이 있음

 

   7. getCookies();

     - 리턴 타입 : Cookie[]

     - 설명 : HTTP 요청 메시지의 헤더에 포함된 쿠키를 Cokie객체의 배열로 리턴한다.

 

   8. URL / URI, 요청방식 관련 메소드

     - getServerName() : 서버의 도메인명을 문자열로 리턴

     - getServerPort() : 서버의 포트번호를 int형으로 리턴

     - getRequestURL() : 요청 URL을 StringBuffer로 리턴

     - getRequestURI() : 요청 URI를 문자열로 리턴

     - getQueryString() : 요청에 사용된 쿼리 문장을 문자열로 리턴

     - getRemoteHost() : 클라이언트의 호스트 이름을 문자열로 리턴

     - getRemoteAddr() : 클라이언트의 IP 주소를 문자열로 리턴

     - getProtocol(),getMethod():요청에 사용된 프로토콜 이름을 문자열로 리턴,요청방식(get,post등)을 문자열로리턴

     - getContextPath() : 해당 jsp 페이지의 컨텍스트 경로를 문자열로 리턴