欢迎来到Heck's Blog,专业承接拿站、企业建站、仿站、网上商城架构、门户网站搭建、空间域名注册、软件定制等项目。关注网络安全,因为专注,所以专业,懂得放弃,才能收获。有事请发邮件至i@heckjj.com,请记住本站网址:http://www.heckjj.com,多谢。
10月10
         很久没有复习java的基础了,对于重定向forward和sendRedirect的区别都有点模棱两可了,最近用到,所以特地的来复习复习这个基础,而且上次面试被别人问forward与sendRedirect没理解太清楚,搞得比较尴尬。现将自己对这个问题的体会写在下面。期望能对一些人有帮助。其实说的简单易懂一些forward是转发,redirect是重定向 ;forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

1.RequestDispatcher.forward()

    是在服务器端起作用,当使用forward()时,Servletengine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在b.jsp都可以获得,参数自动传递.
但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面(注:这个我的理解是通过参数记录,然后在框架页面中用参数来设定框架内页的地址).
重定向后浏览器地址栏URL不变.
     因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个 JSP页面进行显示。这样看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另外一个Servlet。
注意,只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个异常
9月26
       我们常常通过301重定向可促进搜索引擎优化效果,下面请看说细的说明和给出来的代码。从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而收到丝毫影响。同样,在使用301永久性重定向命令让多个域名指向网站主域时,亦不会对网站的排名产生任何负面影响。

  302重定向可影响搜索引擎优化效果,迄今为止,能够对302重定向具备优异处理能力的只有Google。也就是说,在网站使用302重定向命令将其它域名指向主域时,只有Google会把其它域名的链接成绩计入主域,而其它搜索引擎只会把链接成绩向多个域名分摊,从而削弱主站的链接总量。既然作为网站排名关键因素之一的外链数量受到了影响,网站排名降低也是很自然的事情了。

当不能控制服务器且不支持自定义.htaccess或http.ini文件,或者需要根据动态的条件进行跳转,可以用动态程序实现301,linux主机一 般支持.htaccess,所以可以用.htaccess文件来进行301重定向,如果非linux主机空间不支持.htaccess文件,那么我们还可以通过php/asp/jsp代码来进行301重定向,不管 jsp asp php 程序原理都是一样的,即设置头部状态码和要跳转目标URL,发送头部就行了。
PHP:
在 index.php 的最顶部加入以下几行:
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]