跳转和重定向
跳转(Tomcat负责)(getRequestDispatcher("url").forward(req,res))
req.getRequestDispatcher("/dept/list").forward(req,resp);
转发是一次请求(都是同一个request和response)
重定向(浏览器负责)(resp.sendRedirect("url"))
resp.sendRedirect(req.getContextPath()+"/b");
形式上有什么区别
转发(一次请求)(由web服务器来控制)(地址不变)
重定向(两次请求)(浏览器负责)(地址变化)
浏览器发送请求,请求路径上是要加上 项目名的
转发与重定向该如何选择
如果在上一个Servlet类中向requesr绑定了数据,并希望从下一个Servlet当中吧request域中取出来,这里使用转发机制
剩下的所有请求均使用重定向(重定向使用较多)
注意:在前端向数据库保存数据时,若使用转发机制,地址未改变,倘若此时刷新界面,会一直添加,重复请求;而当使用重定向后,地址发生改变,刷新的也不再是原有的请求,而是重定向后的新页面信息。(当然,此种情况也应当使用重定向)