admin管理员组文章数量:1531711
2024年6月17日发(作者:)
servlet请求转发的三种方式
servlet中的请求转发主要有三种方式:
1、 forward:是指转发,将当前request和response对象保存,交给指定的url处
理。并没有表示页面的跳转,所以地址栏的地址不会发生改变。
2、 redirect:是指重定向,包含两次浏览器请求,浏览器根据url请求一个新的页面,
所有的业务处理都转到下一个页面,地址栏的地址会变发生改变。
3、 include:意为包含,即包含url中的内容,进一步理解为,将url中的内容包含
进当前的servlet当中来,并用当前servlet的request和respose来执行url中的内容处
理业务.所以不会发生页面的跳转,地址栏地址不会发生改变。
测试如下:
首先编写三个html界面:分别是登录界面:;登录成功界面:;
登录失败界面:.
之后,处理登录逻辑的servlet类如下:
Java代码
1. protected void service(HttpServletRequest request, HttpServletResponse r
esponse) throws ServletException, IOException {
2. racterEncoding("gbk");
3. racterEncoding("gbk");
4. tentType("text/html;charset=gbk");
5. String username = ameter("username");
6. String password = ameter("password");
7. PrintWriter pw = ter();
8. ("include包含。");
9. if(("123")&&("123")){
10. //include测试
11. uestDispatcher("/").include(request, res
ponse);
12.
13. }else{
14. //在sendRedict中url前必须加上当前web程序的路径名.....
15. direct(textPath()+"/");
16. }
17.
18.
19. }
运行后如果输入正确的用户名密码,则执行include方法,界面显示:include包含。
登录成功!并且地址栏地址未改变,若是输入错误登录名或者密码,界面显示:登录失败!
并且地址栏地址改变。其中要注意的是sendRedirect方法中在要跳转的页面url前必须加
上当前web程序路径名,这个路径通过textPath()可以得到。
如果吧其中include方法改为forward方法:
Java代码
1. if(("123")&&("123")){
2. uestDispatcher("/").forward(request, respo
nse);
3.
4. }else{
5. //在sendRedict中url前必须加上当前web程序的路径名.....
6. direct(textPath()+"/");
7. }
登录时输入正确信息,则跳转的页面地址不变,显示:登录成功!不包含url中的内
容。
总结如下:
redirect与include、forward的区别在于是不是同一个Request,redirect会有两次
交互。
include与forward的区别在于输出的内容,include包含本身servlet与跳转页面内
容的结果,而forward不包含本身servlet的内容。
版权声明:本文标题:servlet请求转发的三种方式 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1718563116a696232.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论