SSH的问题练习开发了一个BBS 正在改造成为SSH架构,发表帖子成功之后要返回新帖子的内容,actionforward到content.jsp,出了一堆空指针异常,但从帖子列表点击就能正常显示,百思不得其解,同样的代码同样的请求访问却有两种结果,最后想到actionforward是forward过去的,而从帖子列表进入是发起了新的请求,所以actionForward.setRedirect(true),ok了现在还是不明白这是为什么 两种方式有什么导致了Hibernate不能正常的延迟加载呢望高手指点

解决方案 »

  1.   

    forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
    redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
    自己看看这个转发和重定向的解释也许会有点帮助,我也是个初学者,不能给你个合理的解释,看看这个还是对你有帮助的,
    小弟不才,请多指教
      

  2.   


    这个我知道 如果forward 和 redirect的区别只有这些的话 我还是想不明白它怎么影响的 请求参数都是一样的  访问的资源也是同一个 估计是有些我们不知道的区别的 谢谢你了
      

  3.   

      hibernate用的不是很熟的话 最好不要用延迟加载 容易出问题的  forward的方法可以响应多个请求 redirect方法可以任意的导向一个任意的界面  但是只能是响应一个请求