servlet跳转页面的几种方法

转载网址:http://zhaixiaohu.iteye.com/blog/427755

 

一直对Servlet的几种页面跳转方式,理解的糊里糊涂的,今天在网上搜了一把,找到一遍比较好的,记下来,以后看看。 
  跳转分两部分,一是发生在servlet,一是在JSP,其实JSP也就是servlet,不过还是有点差异滴。 

Servlet: 
当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面。 
1)  redirect 方式 
response.sendRedirect("/a.jsp"); 
页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如: 
response.sendRedirect("http://www.ycul.com"); 

跳转后浏览器地址栏变化。 
这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute来传递。 

2) forward方式 
RequestDispatcher dispatcher = request.getRequestDispatcher("/a.jsp"); 
dispatcher .forward(request, response); 
页面的路径是相对路径。forward方式只能跳转到本web应用中的页面上。 

跳转后浏览器地址栏不会变化。 
使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttribute 


JSP: 
1)  response.sendRedirect(); 
和servlet的response.sendRedirect()方式一样。 

此语句前不允许有out.flush(),如果有,会有异常: 
java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client. 
at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558) 
... 
跳转后浏览器地址栏变化 
如果要跳到不同主机下,跳转后,此语句后面的语句会继续执行,如同新开了线程,但是对response的操作已经无意义了; 
如果要跳到相同主机下,此语句后面的语句执行完成后才会跳转; 


2)  response.setHeader("Location",""); 
此语句前不允许有out.flush(),如果有,页面不会跳转。 
跳转后浏览器地址栏变化 
此语句后面的语句执行完成后才会跳转 

3)  <jsp:forward page="" /> 
此语句前不允许有out.flush(),如果有,会有异常: 
java.lang.IllegalStateException: forward() not allowed after buffer has committed. 
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134) 
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101) 
at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836) 
... 
跳转后浏览器地址栏不变,但是只能跳到当前主机下 
此语句后面的语句执行完成后才会跳转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
servlet中,可以使用RequestDispatcher的forward方法跳转页面。例如,可以使用以下代码将请求转发到名为"EShop.jsp"的JSP页面: ```java String url = "/EShop.jsp"; ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher(url); rd.forward(req, res); ``` 这将把请求和响应对象传递给目标页面,使目标页面能够处理请求并生成响应。注意,使用forward方法跳转页面后,地址栏不会发生变化。\[1\] 另外,需要注意的是,forward方式只能跳转到本web应用中的页面上,无法跳转到其他应用或外部网页。如果想要在跳转后传递参数,可以使用url中带parameter、session或request.setAttribute等方法。\[3\] #### 引用[.reference_title] - *1* *2* [Servlet跳转到jsp页面几种方法](https://blog.csdn.net/weixin_30713953/article/details/96238984)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Servlet跳转页面](https://blog.csdn.net/weixin_40912987/article/details/116167119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值