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

html-css09

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请求内,而

若要将aaa.domain.com指向www.domain.com,则只需在DNS服务中应增加一个别名记录,可写成:aaa IN CNAME www.domain.com。

如需配置大量的虚拟域名,则可写成:* IN CNAME www.domain.com.

这样就可将所有未设置的以domain.com结尾的记录全部重定向到www.domain.com上。

6.用ASP/PHP实现301重定向:

代码在上面已经介绍过了 对于Business.com所遭遇的问题Dan Thies深有体会,因为他也有过类似的遭遇。他的网站上有一个会员跟踪脚本,其中一个会员的站点通过302命令映射到这个跟踪脚本,而这个跟踪脚本又是通过302映射到他的主页。当在Google中用“keyword research”进行搜索,他的主页排名在前十位,然而地址显示的却是那个会员的网址。结果使他哭笑不得:访问者通过Google搜索结果进入他的网站,而他却不得不为这些访问量给那个会员支付报酬! 后来他用robots.txt文件禁止Spiders跟踪访问他的会员跟踪脚本才算解决了问题。

对于Business.com,Dan Thies认为:“目前Google在302重定向的处理上还存在一定的问题,但并不表示Google不允许302重定向。Business.com并未遭封或遭到惩罚,它们只是返回了错误的响应。”

Dan Thies建议:如果使用了跟踪URL/脚本,又必须让访问者重定向到某一着陆页,那么一定要在robots.txt文件中禁止Spiders去访问第二个重定向。如果没有对跟踪URL/脚本进行重定向,而只是把另外一个URL上的内容给复制过来,那么应在robots.txt文件中禁止Spiders去访问跟踪URL,以防因内容重复而遭搜索引擎惩罚。