请求转发和重定向的区别

本文探讨了Servlet中请求转发和重定向的区别,包括地址栏变化、资源访问、请求对象共享及请求次数。重定向会改变地址并无法共享请求资源,而转发则保持请求对象不变,适用于内部资源访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、重定向 sendredirect 会使地址栏显示的地址改变

2、重定向 sendredirect 可以访问外部资源, 而请求转发 forward只可以在访问本身的内部资源。

3、请求转发 forward 都会共享request里面的资源。 而重定向 sendredirect 不可以(重定向不可以获取重定向前请求对象的值,请求转发可以获取请求转发前请求对象的值)

4、重定向 sendredirect 相当于2次请求2次回复,而请求转发 forward 只是一次请求一次回复 


response.sendRedirect 是重定向到某个页面上,相当于重新打开浏览器输入你要打开的网址。

request.getRequestDispatcher(a.jsp).forward(request,response)这个方法会将参数传会a.jsp页面。而浏览器的地址栏也不会显示a.jsp,显示的会是你处理操作的那个页面。

如果当前页面是http://127.0.0.1/b.jsp使用response.sendRedirect("a.jsp")的话,地址栏将显示http://127.0.0.1/a.jsp

而request.getRequestDispatcher(a.jsp).forward(request,response)显示的还是http://127.0.0.1/b.jsp..如果有参数,后面还会有参数


这个方法可以将request和response对象传递过去,在a.jsp当中可以直接获得request当中的参数。而sendRedirect只是重定向,参数需要拼成串通过URL传递 


重定向是将用户从当前Servlet定向到另一个Servlet,以前的request中存放的信息全部失效,并进入一个新的request作用域;           Servlet中通过调用HttpServletResponse类中的方法sendRedirect(String location)来实现重定向,重定向的目标页面或Servlet(由参数location指定),无法从以前的request对象中获取用户提交的数据。

转发是将用户对当前Servlet的请求转发给另一个Servlet,以前的request中存放的信息不会失效。                                      javax.servlet.RequestDispatcher对象可以将用户对当前Servlet的请求转发给另一个Servlet

实现转发需要2个步骤:

                     •获得RequestDispatcher对象

                        RequestDispatcher dis=request.getRequestDispatcher("dologin");

                    •RequestDispatcher对象调用forward()方法实现转发             

                        dis.forward(request,response);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值