728x90
내장 객체 -  JSP 컨테이너 가 자동으로 생성해주는 객체

 JSP 페이지에 관련된 내장 객체 : page, config

 페이지 입출력에 관련된 내장 객체 : request, response, out

 context에 관련된 내장 객체 : session, application, pageContext

 Error에 관련된 내장 객체 : exception

 - request (javax.servlet.http.HttpServletRequest ) : 웹브라우저 요청 정보
 - response (javax.servlet.http.HttpServletResponse ) : 웹 서버 응답 정보
 - out (javax.servlet.jsp.JspWriter ) : 페이지 내용 출력 스트림
 - session (javax.servlet.http.HttpSession ) : 세션 정보를 가지고 있는 객체
 - application (javax.servlet.ServletContext ) : 어플리케이션 공유 정보를 가지고 있는 객체

 - page ( javax.servlet.jsp.HttpJspPage ) : JSP 서블릿에 대한 인스턴스
 - config( javax.servlet.ServiceConfig ) : JSP 서블릿 configration data
 - pageContext ( javax.servlet.jsp.PageContext ) : JSP 컨텍스트 정보
 - exception ( javax.lang.Throwable ) : 예외 상황에 대한 정보를 담고 있는 객체

request, session, application, page 내부 객체는 임의 속성값(attribute)를 저장하고, 읽을 수 있는 메서드를  제공한다.
속성을 저장하고 읽을 수 있는 기능은 JSP페이지 등 또는 서블릿간의 정보를 주고 받을 수 있도록 해줍니다.

내부 객체의 속성을 저장하고 읽어내는 공통 메서드
 1. setAttribute(String key, Object value ) : 주어진 key(이름)에 속성값을 연결한다.
 2. getAttributeNames() : 모든 속성의 이름을 얻어온다.
 3. getAttribute(key) : 주어진 key에 연결된 속성값을 얻어온다.
 4. removeAttribute(key) : 주어진 key에 연결된 속성값을 제거한다.

out 객체 : 페이지 내용을 담고 있는 출력 스트림 객체

  메서드( JspWriter)
    1. isAutoFlush() : 출력 버퍼가 가득찼을 때 자동으로 밀어닐 것인지 여부를 지정(false/true)
    2. getBufferSize() : 출력 버퍼가 전체 size를 구함.
    3. getRemaining() : 출력 버퍼의 남아있는 size
    4. clearBuffer() : 출력 버퍼를 비운다.
    5. println() : String을 출력한다.
    6. flush() : 출력 버퍼 내용을 밀어낸다.
    7. close() : 출력 버퍼 내용을 밀어내고 출력 버퍼를 닫는다.

예제> OutTest.jsp
<%-- OutTest.jsp --%>
<%@ page contentType="text/html;charset=euc-kr" %>
<html>
 <body>
  <%
  int total=out.getBufferSize();
  int rate=out.getRemaining();
  
  out.println(" total Buffer : "+(total/1024)+"kb"+"<br>");
  out.println(" remain Buffer :"+rate+"byte"+"<br>");
  out.println(" 사용중인 버퍼 : "+(total-rate)+"byte"+"<br>");
  %>
  <br>
  
  total Buffer<%= total %><br>
  remain Buffer<%=rate %><br>
  사용중인 버퍼 : <%= (total-rate)%><br>
 </body>
</html>



request 내장 객체 (HttpServletRequest ) : Parameter를 포함한 요청정보를 담고있는 객체

 메서드
   1. getMethod() :요청 방식 알아내기(Get,Post)
   2. getRequestURI() : 요청 파일 경로 알아내기
      getRequestURL() : 요청 파일 경로 알아내기
  
   3. getQueryString() : URI와 함께 전달되는 입력정보 알아내기

   4. getRemoteHost() : 클라이언트 호스트 이름 알아내기
   5. getRemoteAddr() : 클라이언트 주소 알아내기
   6. getRemoteUser() : (기본 인증을 이용할 경우) 이용자 ID 알아내기

   7. getProtocol() : 사용중인 프로토콜 알아내기(HTTP/1.1)
   8. getServerName() : 서버 도메인 이름 알아내기
   9. getServerPort() : 서버 port 알아내기

  10. getHeader(name) : name에 해당하는 요청 헤더 항목 값을 알아내기

  11. getParameter(name) : name에 해당하는 파라미터 값 알아내기
  12. getParameterValues(name) : name에 해당하는 파라미터 값을 모두 알아내기
  13. getParameterNames() : 폼에 있는 모든 파라미터 이름을 모두 알아내기

예제> RequestTest.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<html>
 <body>
  <h1>request정보 </h1>
  <li>사용 method 방식 : <%= request.getMethod() %>
  <li>요청경로(URL) : <%= request.getRequestURL() %>
  <li>요청경로(URI) : <%= request.getRequestURI() %>
  <br>
  <li> getRemoteHost(사용자 컴퓨터이름) : <%= request.getRemoteHost() %>
  <li> getRemoteAddr(사용자 컴퓨터 주소) : <%= request.getRemoteAddr() %>
  <li> getRemoteUser : <%= request.getRemoteUser() %>
  
  <br>
  
  <li>프로토콜 :<%= request.getProtocol() %>
  <li>서버이름 :<%= request.getServerName() %>
  <li>서버포트 :<%= request.getServerPort() %>
  
  <%-- getHeader(name)--%>
  <li>현재 사용하는 브라우저 정보 : <%= request.getHeader("User-Agent") %>
  <li>브라우저가 지원하는 file의 MIME type 알아보기 : <%= request.getHeader("Accept") %>
  <li>이전 URL 알아보기 : <%= request.getHeader("referer") %>
  <br>
  <a href="RequestTest.jsp">이전 URL알아보기</a>
  <br>
 </body>
</html>

response객체 ( HttpServletResponse) :요청 객체에 대한 응답을 담고 있는 객체

 메서드
   1. setContentType() : 출력하는 문서의 contentType 지정
      예> response.setContentType("text/html");
   2. getCharacterEncoding() : 문자 인코딩 설정 알아보기
   3. setHeader( name, value) : 응답헤더 설정
       예> response.setHeader("Refresh", "3;URL=http://www.youtobe.com");  //3초후에 유튜브로 고고싱~
   4. sendRedirect("url") : 지정 url문서 보여주기  //자주사용함..
                                 "RequestTest.jsp"   "http://www.daum.net"  - 내부 외부 URL 모두 사용가능함.
       참고 - forward 액션 
                  <jsp: forward page="local url"/>
                                "RequestTest.jsp" 가능  "http://www.daum.net" 불가  -   내부 URL만 사용가능.
              - include 지시자 (외부문서 포함)
                   <%@ include file="파일명.확장자" %>
                                 외부 데이터(jsp,txt,html 등을 ) jsp페이지에 포함시키는 것.
              - include 액션 태그(처리결과를 포함)
                    <jsp:include file="파일명.확장자" %>

예제> ResponseTest.jsp
 
- sendRedirect()은 웹브라우저가 다른 페이지로 이동하는데, 이때 다른 페이지로 가기 위해서 웹브라우저는  
   웹 서버에 새로운 Http 요청을 보낸다. 즉 TCP네트워크 연결이 다시 만들어지는 것 입니다. 
- forward 액션테그는 JSP엔진에서 Http요청을 다른 페이지로 보내는 것이다. 즉, Http요청은 처음 만들어진 것 
  하나만 있는 것입니다. 
  이 차이점은 중요한 의미를 갖는다.
  sendRedirect()를 사용하면 웹브라우저에서 처음에 전송된 Http요청과  이 요청에 포함된 데이터들은 새로 이동된
  페이지에서 사용할수 없게 됩다.  반면에 forward 액션을 사용하면 Http요청은 하나만 사용하기 때문에 새로 이동된
  페이지에서도 클라이언트에서 전송한 데이터를 사용할 수 있다.

   forwart 액션 태그
   <jsp:forward page="로컬url"/>

   <jsp:forward page="로컬 url">
   </jsp:forward>
 
   <jsp:forward page="<%= expression %>"/>
 
   <jsp:forward page="로컬URL">
      <jsp:param name="id" value="kim"/>
      <jsp:param name="pwd" value="123"/>
      <jsp:param name="pwd" value="<%= value %>"/>
   </jsp:forward>


include 디렉티브 (지시자)

외부 파일을 포함하는 것  입니다. ( .jsp, .html, .txt)
포함될 파일은 헤더 부분을 쓰지 말아야 합니다.  ( 중복선언 되니까)

형식----------------------------
<%@ include file="파일.확장자" %>

+ Recent posts