| 璐莹's profileTina小路路PhotosBlogLists | Help |
|
October 05 重定向技术 重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的HTTP头,或者写JavaScript脚本实现。
客户端重定向:
可以在javascript中写window.location.href="firstPage.jsp";这样即可完成页面之间的跳转。当然如果想包含session信息也可以先使用response.encodeRedirectURL("firstPage.jsp"),然后进行跳转。
服务器端的重定向:
服务器端的重定向技术涉及到javax.servlet.ServletContext、
javax.servlet.RequestDispatcher、
javax.servlet.http.ServletRequest、
javax.servlet.http.ServletResponse等几个接口。
服务器端的重定向可以有两种方式,一是使用HttpServletResponse的sendRedirect()方法,一是使用RequestDispatcher的forward()方法。
如response.sendRedirect("http://java.sun.com")也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。
有三种方式可以获得requestDispatcher对象,其中最常用的是request.getRequestDispatcher("url");其中url为相对路径。
如何选择:
RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法
|
|
|