JSP内置对象request对象的转发与response对象的重定向

Posted 大熊不雄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP内置对象request对象的转发与response对象的重定向相关的知识,希望对你有一定的参考价值。

在说转发与重定向之前先说一下jsp九大内置对象的其中两个内置对象,request对象与response对象
request对象
request对象是最常用的JSP内置对象之一,其中包含了有关浏览器请求的信息。其中工作原理如下:

简单来说就是“可以对在客户请求中给出的信息进行访问,包含了所有有关当前浏览器的请求信息。”

response对象
response对象其实是与request对象是相反的,response对象可用于设置响应参数及取得响应流等。其中工作原理如下:

简单来说就是“每次服务器端都会响应一个response实例。response对象经常用于设置HTTP标题、添加Cookie、设置响应内容的类型和状态、发送HTTP重定向和编码URL等。”

接下来就是我们request对象的转发与response对象的重定向
转发是服务器行为,重定向是客户端行为。转发耗时比重定向少。
1.转发
转发的实现很简单,使用request对象的getRequestDispatcher()方法得到RequestDispatcher对象,此对象用于封装一个有路劲所标识的服务器资源,然后用这个对象调用forward()方法。
示例:
request.getRequestDispatcher("需要转发的地址(a.jsp)").forward(request,response);
2.重定向
重定向相当于通过response.sendRedirect()方法向服务器重新发送一个请求,请求的URL地址取决于response.sendRedirect()方法所给的参数。
示例:
response.sendRedirect("需要重定向的地址(a.jsp)");

差异
转发——>客户浏览器发送HTTP请求——>web服务器接受请求——>调用内部一个方法在容器内部完成请求处理和转发动作——>再将转发跳转到的那个网页资源返回给客户;  转发只能在同一个容器内完成 转发的时候浏览器地址是不会变的,在客户浏览器里只会显示第一次进入的那个网址或者路径,客户看不到这个过程,只是得到了想要的目标资源。转发行为浏览器只做了一次请求。(转发只能跳转一次)

重定向——>客户浏览器发送HTTP请求——>web服务器接受请求后发送302状态码以及新的位置给客户浏览器——>客户浏览器发现是302响应,则自动再发送一个新的HTTP请求,请求指向新的地址(302:Found  临时移动,但资源只是临时被移动。即你访问网址A,但是网址A因为服务器端的拦截器或者其他后端代码处理的原因,会被重定向到网址B。)——>服务器根据此请求寻找资源发个客户;再客户浏览器中显示的是重定向之后的路径,客户可以看到地址的变化。重定向行为浏览器做了至少两次请求。(重定向可以跳转多次)

以上是关于JSP内置对象request对象的转发与response对象的重定向的主要内容,如果未能解决你的问题,请参考以下文章

JSP九大内置对象的作用和用法总结(转发)

JSP内置对象

关于jsp的内置对象request和response的重定向和转化(待补充)

jsp中常用内置对象与方法

JSP内置对象——out,get与post

Jsp九大内置对象与servlet中java对象