转发与重定向

转发与重定向

在做页面的请求与响应的时候我们多用request与response进行操作,而我们大家也知道,request是表示用户发向服务器的请求,而response是对用户请求的一个响应。


HttpServletRequest

表示浏览器向服务器发送的请求报文,由Tomcat创建然后作为参数传递给我们doget,dopost方法。

功能:getParameter()获取请求参数
getContextPath()获取当前项目名
request..getRequestDispatcher(“/1.html”).forward(request, response);可以实现转发功能
注意:“/”代表的是相对于项目的根目录 http://主机地址:端口号/项目名/


HttpServletResponse

表示服务器响应给浏览器的响应报文,由服务器创建然后作为参数传递给我们doget,dopost方法。

功能:response.getWriter().println("<h3>hello world!</h3>");
可以返回给浏览器一个页面或者一个页面片段

response.sendRedirect("/项目名/页面或servlet路径");

注意:“/”代表的是相对于服务器的根目录 http://主机地址:端口号/


转发与重定向的区别

举例解释:关于转发和重定向,通俗的讲转发就像是你向售后技术支持打电话问问题,打过去是客服小王接的,但是小王无法解决,他让你等会儿,别挂电话,然后他去把问题告诉小李,让小李过来帮你解决,虽然换了人解决可是还是在这个售后处解决了问题。而重定向呢,就是小王说这个不归他们管,我们处理不了,让你打给12315投诉吧。然后你打电话给12315投诉解决了。大概就是这样的。

因此在转发的时候你的地址栏内容不会变,发过去的请求也在,也就是说request中的内容没有改变,可以使用request进行值传递。

而重定向的过程地址栏发生改变,你的请求也在重定向的时候丢失,原因是在第二次请求时,是再一次对服务器的访问,服务器会重写request内容。

Tables转发重定向
发生地服务器浏览器
请求次数浏览器一次请求,一次响应浏览器两次请求,两次响应
地址栏是否发生变化无变化有变化
速度
根目录地址相对于项目的根目录http://主机地址:端口号/项目名/相对于服务器的根目录http://主机地址:端口号/

注意:动态web项目WEB-INF路径下的文件,只能以转发的方式才能访问,重定向的方式访问不了WEB-INF路径下的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值