-
현재 페이지의 상태와 데이터를 그대로 유지시켜 주며 다른 페이지로 이동하기
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 |