网上看过比较多解释JSP中redirect与forward的区别的文章,感觉概念性较强,不好理解,在慕课网中看了一堂讲得比较通俗的课,以下是个人笔记。
先来看一个案例:注册页面reg.jsp将信息提交到response.jsp , response.jsp分别用response.sendRedirect()与request.getRequestDispatcher().forward(req,resp)跳转到信息显示页面request.jsp做数据显示,观察两种方式跳转的区别。
注册页面reg.jsp的action跳转到response.jsp
request.jsp页面
response.jsp页面用request.sendRedirect()重定向到request.jsp
因为重新向服务器发送了一次请求,所以用了新的request对象,数据在旧的request对象中,所以这里没有数据,url也发生了改变
使用request.getRequestDispatcher().forward(req,resp)方法进行转发
URL还是response.jsp而不是request.jsp,因为转发时传递了request与response对象,所以数据保存了下来。
总结