请求转发和重定向的区别

服务器请求转发:

request.getRequestDispatcher(“xxx.jsp”).forward(request,response);

1.客户端和服务器之间进行一次请求,地址栏不会改变,将该请求在服务器内部转发;
2.表单提交的数据可以传递到转发页面,但如果想要继续传递到其它页面,则需要再次执行转发语句;
3.从数据库查询出来的数据非表单提交的数据,只能通过URL重写的方法提交,并使用request.getParameter()方法接收;

客户端重定向:

response.SendRedirect(“xxx.jsp”);

1.客户端和服务器进行两次请求,地址栏会改变
2.两次请求无关,参数无法传递到下一页面,除非使用URL重写的方式附带参数,并用request.getParameter();
3.中文数据会产生乱码,在提交之前需要进行URLEncoder.encode()手动编码,并且在接收时自动转码;


请求转发和重定向的区别

(1)请求次数不同
请求转发过程中只有一次请求,数据不丢失,可以自动传递到下一页面

重定向过程中有两次请求,而且这两次请求之间毫无任何关联,因此数据无法传递到下一页面,除非使用URL重写的方式附加参数,传递中文数据时,还必须手工调用URLEncoder.encode()方法进行url编码

(2)跳转的位置不同

请求转发在服务器内部完成,客户端根本不知道,所以浏览器地址栏内容不变,只能在当前项目范围内跳转

重定向相当于在客户端重新发送了新的请求,所以浏览器地址栏内容改变,跳转的位置不限

(3)根目录"/"的意义不同

请求转发的根目录"/“表示Web项目的根目录下
request.getRequestDispatcher(”/index.jsp").forward(request, response) //跳转到http://localhost/Web项目名/index.jsp

重定向的根目录"/“表示跳转到服务器的根目录下
response.sendRedirect(”/index.jsp") //跳转到http://localhost/index.jsp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值