html和jsp之间的转发和重定向

html-css010

html和jsp之间的转发和重定向,第1张

一个web资源收到客户端请求后,通知服务器去调用另外一个资源进行处理(服务器内调用),称之请求转发。

当客户端请求提交到服务器的jsp处理的时候这个jsp可以携带请求和响应对象转移到web应用的另一处进行处理在另外一处进行处理后,产生结果页面响应给客户端浏览器此时客户端浏览器可以看到结果页面,但URL无变化所以不知道服务器端经过几层处理

重定向:redirect

一个web资源收到客户端请求后,通知浏览器去访问另外一个Web资源(浏览器进行2次请求),称之为重定向。

当客户端浏览器提交到服务器的JSP处理的时候这个JSP返回一个响应:去请求另外一次的URL此时客户端浏览器会再次发出一个新的请求到这个新的地址新的URL地址负责为浏览器产生响应这时浏览器看到的URL是第二次请求所对应的URL地址

两者的区别,转发和重定向的选择

重定向的速度比转发慢,因为浏览器还得发出一个新的请求,如果在使用转发和重定向都无所谓的时候建议使用转发。

因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外一个WEB站点上的资源的情况,这个时候就只能使用重定向了。

1.forward是服务器内部转发,而redirect是通过客户端进行转发

2.如果使用forward转发的话,客户端URL地址不会改变,但是redirect请求的话,URL地址会变

3.如果forward进行转发,转发页面和被转发页面处于一个request请求内,而

<script language="javascript">

window.location = "重定向的地址如:http://www.baidu.com"

</script>

或者

<script language="javascript">

document.location = "重定向的地址如:http://www.baidu.com"

</script>

实现html网页阻止被302重定向的方法是在同一台服务器内部发请求,只要涉及到调用外部系统,都会有302重定向的。什么是302重定向:请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。新的临时性的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求,否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。如果这不是一个 GET 或者 HEAD 请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。注意:虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响应,并且使用 GET 方式访问在 Location 中规定的 URI,而无视原先请求的方法。状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。