Servlet跳转
一,Servlet跳转
关于跳转,有两种方式:
1,客户端跳转,地址栏跳转后发生改变,而且无法传递request范围的属性,是在所有操作都完成之后才产生的跳转。语法是:response.sendRedirect() ;
2,服务器跳转,地址栏发生改变,能传递request范围的属性,属于无条件跳转,只要一执行到,则立即执行跳转操作。语法是:<jsp:forward>
Servlet也可以完成跳转,因为Servlet本身也存在HttpServletResponse对象,所以直接通过此方法的sendRedirect()执行跳转。
从一个JSP页面或者一个HTML页面可以通过表单(form action)或超链接(a href)跳到Servlet,那么从Servlet也可以跳转到JSP或HTML。
Servlet的客户端跳转:直接使用HttpServletResponse接口中的sendRedirect()方法进行跳转,但是此跳转只能传递session范围的属性,不能传递request范围的属性。
public class ClientRedirectDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getSession().setAttribute("name", "IronMan") ; //设置session属性,能传递
request.setAttribute("info", "www.baidu.com") ; //设置request属性,不能传递
response.sendRedirect("get_info.jsp") ;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request,response) ;
}
}
上边代码执行后,可以发现已经将session的属性内容进行了传递,但是request的属性内容没有传递,因为在客户端跳转中,不能传递request属性范围。
服务器端跳转
因为在Servlet中服务器端跳转没有JSP中的"<jsp:forward>"的跳转格式,所以想要执行服务器端跳转,则必须依靠RequestDispatcher接口完成。此接口中含有跳转方法,
public void forward(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{}
如果要想使用RequsetDispatcher接口,还需要使用ServletRequest接口提供的一下方法进行实例化。
public RequestDispatcher getRequestDispatcher(String path) ;
RequestDispatcher rd = request.getRequestDispatcher(String path) ; //进行接口对象实例化
public class ServerRedirectDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getSession().setAttribute("name","IronMan") ; //设置session属性
request.setAttribute("info","www.baidu.com") ; //设置request属性
RequestDispatcher rd = request.getRequestDispatcher("get_info.jsp") ; //实例化接口对象,指定跳转页面
rd.forward(request,response) ; //进行服务器端跳转。
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response) ;
}
}
转载于:https://my.oschina.net/bugkiller/blog/631114
上一篇: vue-组件的三种注册形式
推荐阅读
-
两个servlet之间的跳转
-
多个servlet之间数据共享实现方案
-
如何实现多个servlet之间的跳转和传递数据
-
Servlet跳转
-
Tomcat7下Filter执行顺序小验证 博客分类: java;tomcat7;servlet tomcatservletjava
-
Tomcat7下Filter执行顺序小验证 博客分类: java;tomcat7;servlet tomcatservletjava
-
window.location.href 谷歌浏览器不跳转 博客分类: java window.location.href谷歌浏览器不跳转JavaScript
-
(转)[ios]页面跳转传值参考
-
js页面跳转 博客分类: JavaScript javaScripthrefnavigate
-
在非Activity子类跳转 博客分类: android-->非界面 ativity 跳转跳转contextstartActivity