Servlet的请求转发和重定向
1.上一篇blog中的代码
|
|
2.RequestDispatcher:请求转发和请求包含
getRequestDispatcher( )属于request的一个方法,上述代码中使用forward进行了请求转发,若是想要请求包含,则改为调用include即可。请求转发和请求包含的区别为:
- 请求转发:由当前Servlet设置响应头(该Servlet的相应体并不会显示),下一个Servlet既可设置响应头也可设置响应体。
- 请求包含:当前Servlet和下一个Servlet共同完成相应头和响应体。
3.与sendRedirect( )重定向的区别
- 请求转发是一次请求一次响应,因为只发出一个请求所以效率高些,而重定向是两次请求两次响应。
- 请求转发地址栏不变化,而重定向会显示后一个请求的地址。
- 请求转发只能转发到本项目其他Servlet,而重定向不只能重定向到本项目的其它Servlet,还能定向到其它项目。
- 请求转发是服务器端行为,只需各处转发的Servlet路径,而重定向需要给出requestURI。
- 如果需要在下一个Servlet中获取request域中的数据,那么就必须使用请求转发