달력

42025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 현재 페이지의 상태와 데이터를 그대로 유지시켜 주며 다른 페이지로 이동하기
    request.getReeustDispatcher("이동할페이지").forward( request, response );
    pageContext.forward( "이동할페이지") ;

    <jsp:forward page="target page">

  • 상태 유지 없이 다른 페이지로 이동하기
    response.sendRedirect( "이동할페이지" );
    response.encodeRedirectURL( "이동할페이지" );

    우선브라우저에게 http response를 하고, 브라우저가 다시 이동할페이지를 호출하는 형식임. 
    이동할 페이지로 파라미터 정보를 넘기려면... target.jsp?name=value&name2=value2 형태로 값을 넘길수 있다. 
    파라미터에 한글이 포함된다면 URLEncoder.encode() 를 사용해야 한다. 

    String param = URLEncoder.encode ( "이름=값", "EUC-KR"); 
    param을 target 주소뒤에 붙이면 됨..

    encodeRedirectURL() 함수는 cookie사용이 제한된경우 URL 재작성을 해야 하는 경우에 사용하는 함수이다. 
    주어진페이지 주소에 JSESSIONID=B2KKKEK2U2U2I8JODE8KEKD 형태의 SESSION ID를 붙여서 Target URL을 재작성한다. 

  • 동적페이지 Include
    pageContext.include("삽입할페이지");  // 페이지의 결과가 삽입되는 것임...
    <jsp:include page="">

    그에 비해서 <%include file="삽입대상페이지" %>는 include될 대상의 코드를 복사하여 그대로 include되는 정적인 include 이다.

  •  Cookie 에 대해서.. 

    • Cookie는 HTTP Header에 저장되어 브라우저와 web server간에 전송된다. 

    • 브라우저에서는 javascript로 cookie 정보를 조회,변경,삭제 가능하다.

    • JSP/Servlet에서는 Cookie 객체를 통해서 조회,변경,삭제 가능하다. 

      • 조회 : Cookie cookies[] = request.getCookie(); 

      • 변경 및 추가 : response.addCookie( new Cookie("NAME", "VALUE");    // NAME이 기존에 있다면 수정, 없다면 추가된다. 

      • 삭제 : 삭제기능은 좀 특이하다. 별도의 삭제함수가 있는것이 아니라, Cookie.setMaxAge()를 통해서 수명을 조절하는 방식으로 삭제한다. 

        cookie.setMaxAge(3600); // 한시간으로 남은 수명 지정..
        cookie.setMaxAge(0);     // 쿠키를 바로 삭제 하도록 만든다. 
        cookie.setMaxAge(-1);   // 웹 브라우저가 끝날때 끝날때 삭제되도록 만든다.  default 임.

    • setPath()를 통해서 특정경로에만 Cookie가 전송되도록 조절할 수 있다. 

    • setDomain()를 통해서 여러 웹서버로 전송되도록 할수 있다. 
      웹 서버가 여러개인 경우, setDomain() 을 통해서 여러 웹서버로 전송되도록 할 수 있다.  이렇게 하지 않으면.. A Page를 읽을때 A web server, B 페이지를 읽을때 B Web Server가 호출되었다면  서로 host name정보가 다르기 때문에 Cookie 정보는 공유되지 않는다. 그래서 cookie 정보를 공유하려면 꼭 setDomain()을 사용해야 한다. 

  • Session에 대해서
    • Servlet 과 JSP에서 사용법이 약간 다르다. 
      Servlet 에서는  HTTPSession session = request.getSession(); 으로 session 정보를 얻어서 사용해야 한다. 
      JSP 에서는 그냥 예약된 session 인스턴스를 사용하면 된다. 

    • 주요 메소드
      session.setAttribute( "ID", value );  value 는 object 형태
      Object obj = session.getAttribute("ID");    // 필요시 적절하게 cast해서 target object로 할당한다. 
      session.removeAttribute("ID); 
      session.invalidate();  // 세션을 끝내는 메소드 

  • URL 재작성

    • Session 기술에서도 사실 cookie가 사용된다. seesion을 구별하기 위해서 Session id를 cookie 형태로 만들기 때문이다. JSESSIONID=JDKDKK3ID93KD9E9GKD9D  와 같은 형태임.. 

    • 그래서 cookie를 사용하지 않도록 브라우저 설정이 되어있다면 session이 잘동작하지 않기 때문에 그럴경우.. 

    • URL 재작성이라는 기법을 사용해야 한다.

    • URL 재작성이란 URL로 SESSION ID를 주고 받으며 session을 구분하도록 하여 session 객체를 사용하는 방법이다. 

    • 브라우저와 web server가 주고받는 모든 주소 정보뒤에는 항상 JSESSIONID=DKKDK3K93939DD9D 를 붙이도록 한다. 

    • SESSION ID를 URL에 붙이는 자작업이 상당히 귀찮은 작업이 될수도 있는데.. response.encodeURL()를 통해서 쉽게 할수 있는 방법을 제공한다.  예를 들어 ..... 
      <A href=<%= response.encodeURL( "xxxxx.jsp ") %>   
      와 같이 하면 자동으로 xxxxx.jsp 뒤에 session id정보가 붙는다.

      또 다른 함수가 하나 더 있는데.. . response.encodeRedirectURL() 이다...  
      다른페이지로 redirect 할때 사용하는 함수이다.
      참고로 redirect는 다음과 같이 동작한다. 
      [  (웹서버)브라우저로 응답 -> (브라우저)주어진 주소로 http request -> (웹서버)주어진 주소에 대한 응답 ]


'BackEnd > JSP&Servlet' 카테고리의 다른 글

표준 액션 및 JSTL (Java Standard Template Library)  (0) 2014.03.17
서블릿 라이프사이클  (0) 2014.03.12
Expression Language  (0) 2014.03.11
Posted by 행복한삶~!!
|