浅谈Java Web重定向和请求转发

来源:互联网 发布:mysql 查看数据库权限 编辑:程序博客网 时间:2024/06/05 03:50

首先看一下我的测试代码以及运行结果:

转发

重定向:






从上面的运行图片中我们很容易就可以发现转发和重定向的结果不同,为什么会出现这种原因,在这我谈一下个人的见解:
1.对于重定向来说,客户端向服务器发送一个请求,当服务器处理response.sendRedirect()方法时,立即向客户端返回响应,告诉客户端,你需要在发送一个请求去访问test.jsp;客户端收到这个服务器的响应,再次发送一个新的请求,去访问test.jsp,这时候对于服务器来说这两个请求是相互独立的,互不干扰,index.jsp中setAttribute()中的东西,test.jsp都获取不到,所以返回null。

2.对于转发来说,客户端向服务器发送一个请求,当服务器处理request.getRequestDispatcher("test.jsp").forward(request,response)方法时,服务器将请求转发给test.jsp,这个请求还是index.jsp刚才发来的请求,所以getAttribute()可以获取得到值返回给服务器,服务器再发送给index.jsp,这也就是我们所看到的的在请求转发时候url不变;而重定向时候url改变。

假如你想用重定向实现,可以采用session的方法,如:





1 0
原创粉丝点击