j2ee中的forward和redirect的区别

来源:互联网 发布:finalcaption mac下载 编辑:程序博客网 时间:2024/05/17 03:53

下面是自己的理解,不完善,不全面

1、forward方法是request对象的方法,而redirect方式是response对象的方法

2、forward表示转发,而redirect表示重定向

3、转发时,请求只有一次,而重定向请求有两次

这下面是转载的,比较详细

转载的地址:http://www.cnblogs.com/chenatu/archive/2011/10/01/2197134.html

http://blog.csdn.net/jajavaja/article/details/8512370

servlet的几种跳转方式

一是发生在servlet,一是发生在jsp中

servlet:

在servlet中,一般跳转都发生在doget、doPost方法里面

1、redirect

response.sendRedirect("/xx.jsp");

页面的路径是相对路径,sendRedirect跳转的页面不局限于本web应用,跳转后地址栏会发生变化,这种方式传值得方式只能在url中或在session中

2、forward

request.getRequestDispatcher("/xx.jsp").forward(request,response);

页面的路径是相对路径,跳转的话只能在web应用的页面上

跳转后浏览器的地址栏不会发生变化

使用这种方式的跳转,传值的方式有:url中带参数,session,request


jsp

1、response.sendRedirect();

和servlet的方式一样,在语句前不能有out.flush();

跳转后浏览器地址栏变化

2、response.setHeader("Location","");

语句前不能有out.flush(),如果有,页面将不会跳转

地址栏会发生变化

3、<jsp:forward page="">

语句前不能有out.flush()

地址栏会发生变化

转载:

http://blog.csdn.net/jajavaja/article/details/8512370

1、地址显示:

forward是服务器请求资源,服务器直接访问目标的url,把url的响应内容都去过来,然后再把这些内容发给浏览器,浏览器根本不知道服务器法宗的内容从哪儿来的

redirect服务端根据逻辑,发送一个状态码,告诉浏览器重新请求哪个地址,所以地址栏显示的是新的地址

2、数据共享

forward可以共享request中的数据

redirect中不能共享数据

3、运用的地方

forward一般用于用户登录时,根据角色转发到响应的模块

redirect:一般是用于用户注销时,返回主页面和跳转到其他的网站

4、效率

forward:高

一次请求,可以共享request中的数据

redirect:低

二次请求,不能共享数据


0 0
原创粉丝点击