Servlet中forward和redirect方法的区别
2013-06-30 15:58
267 查看
转发forward方法和重定向redirect方法都可以实现JSP页面直接的跳转,但是实现的本质是不同的。
区别如下:
forward:当服务器请求资源时,会直接访问目标URL路径,把那个URL路径的响应内容读取过来,然后将其发送给浏览器,浏览器并不知晓响应的内容是从哪儿来的,因此他的地址栏中仍然是原来的地址。另外,转发是web应用程序内部进行的,可以访问web应用程序所设定的内部目录,例如WEB-INF目录下的内容,只能是web应用程序内部进行访问,并不能通过其他的web应用程序来访问该目录下的内容。
redirect:是指服务端根据逻辑发送一个状态码,告诉浏览器重新去请求那个地址,一般来说,浏览器会用刚才所有的请求参数重新请求,因此,session和request中的参数都是可以获取到的;而web应用程序会要求客户端浏览器重新发送请求地址,客户端此时会重新连接到指定的URL地址,因此浏览器的地址会出现重新导向的信息,重新导向后的请求由浏览器进行相应的转发,因此不能访问web应用程序下的隐藏目录,例如WEB-INF的地址,就不能进行访问,只有访问web应用程序下的其他地址。
综上所述:
forward仅仅是容器中控制权的转换,客户端浏览器的地址不会显示出转向后的地址,他不会改变request的值,如果下个页面希望获取到某一信息的话,可以在该页面中设置Request.setAttribute(),这样就可以通过request来获取信息。
redirect则是完全的跳转,浏览器会得到跳转后的地址,并且重新发送请求并且连接到该URL地址,这样浏览器会得到请求后的地址。
相比较而言,forward更加高效,如果forward可以满足条件的话就尽量使用forward,这样也可以隐藏实际的连接。当然有时候需要跳转到其他服务器的资源,则必须使用redirect方法。
由此可知,两者之间的区别可从以下四个方面进行概括:
(1)地址栏的变化:forward地址不变,而redirect地址栏变
(2)数据共享:forward在前后转发之间可以共享request中数据,而redirect不能共享数据。
(3)运用的场景:forward一般用于登录,根据角色转发到不同的模块,而redirect一般用于用户注销或者返回主页面或者跳转到其他网站等。
(4)效率:forward的效率更高。
区别如下:
forward:当服务器请求资源时,会直接访问目标URL路径,把那个URL路径的响应内容读取过来,然后将其发送给浏览器,浏览器并不知晓响应的内容是从哪儿来的,因此他的地址栏中仍然是原来的地址。另外,转发是web应用程序内部进行的,可以访问web应用程序所设定的内部目录,例如WEB-INF目录下的内容,只能是web应用程序内部进行访问,并不能通过其他的web应用程序来访问该目录下的内容。
redirect:是指服务端根据逻辑发送一个状态码,告诉浏览器重新去请求那个地址,一般来说,浏览器会用刚才所有的请求参数重新请求,因此,session和request中的参数都是可以获取到的;而web应用程序会要求客户端浏览器重新发送请求地址,客户端此时会重新连接到指定的URL地址,因此浏览器的地址会出现重新导向的信息,重新导向后的请求由浏览器进行相应的转发,因此不能访问web应用程序下的隐藏目录,例如WEB-INF的地址,就不能进行访问,只有访问web应用程序下的其他地址。
综上所述:
forward仅仅是容器中控制权的转换,客户端浏览器的地址不会显示出转向后的地址,他不会改变request的值,如果下个页面希望获取到某一信息的话,可以在该页面中设置Request.setAttribute(),这样就可以通过request来获取信息。
redirect则是完全的跳转,浏览器会得到跳转后的地址,并且重新发送请求并且连接到该URL地址,这样浏览器会得到请求后的地址。
相比较而言,forward更加高效,如果forward可以满足条件的话就尽量使用forward,这样也可以隐藏实际的连接。当然有时候需要跳转到其他服务器的资源,则必须使用redirect方法。
由此可知,两者之间的区别可从以下四个方面进行概括:
(1)地址栏的变化:forward地址不变,而redirect地址栏变
(2)数据共享:forward在前后转发之间可以共享request中数据,而redirect不能共享数据。
(3)运用的场景:forward一般用于登录,根据角色转发到不同的模块,而redirect一般用于用户注销或者返回主页面或者跳转到其他网站等。
(4)效率:forward的效率更高。
相关文章推荐
- Servlet中forward和redirect的区别
- Servlet中forward和redirect的区别(转)
- Servlet中forward和redirect的区别
- Servlet中forward和redirect的区别
- servlet中forward与redirect的区别
- Java Servlet API中的forward()方法和redirect()方法的区别
- servlet中 redirect ,forward区别
- Servlet/JSP服务器端的重定向(forward,include,redirect区别)
- Servlet中include方法和forward方法的区别
- HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法区别
- Zend Framework 跳转方法(render, forward, redirect)区别与总结
- Servlet 跳转 redirect与forward跳转的区别
- 请求forward、include和redirect的实现方法和区别
- Zend Framework 跳转方法(render, forward, redirect)区别与总结 ...
- ServletResponse接口中的sendRedirect()方法和forward()方法的区别
- Zend Framework 跳转方法(render, forward, redirect)区别与总结
- jsp/servlet中 forward, 4000 include, reDirect 之间的区别
- Servlet中forward和redirect(sendRedirect)有什么区别以及filter(过滤器)是什么?
- Servlet API中forward() 与redirect()的区别
- Java学习总结15——Servlet中forward、include、redirect区别