HttpServletResponse的sendRedirect() 和RequestDispater的forward()可以让浏览器获得另一个URL的相关资源,但两者有所不同
请求转发和重定向的区别:
-
请求转发是一个请求一次响应,而重定向是两次请求两次响应。
-
请求转发地址不变化,而重定向会显示后一个请求的地址
-
请求转发只能转发到本项目其它Servlet,而重定向不只能重定向到本项目的其它Servlet,还能定向到其它项目
-
请求转发是服务端行为,只需给出转发的Servlet路径,而重定向需要给出requestURI,既包含项目名!
1.sendRedrect()重定向:不仅可以重定向到同一web应用中的组件,可以重定向到其他站点资源,重定向后浏览器的URL会发生变化,因为重定向的实质 是 server端发送一个消息给浏览器端,使重新浏览新的URL
2.forward() 请求转发:forward只能请求转发给同一web应用中的组件,转发后浏览器的url不会发生改变,forward实质是 站内转发,获取其他server资源,不会给浏览器端发送消息
如注册失败,跳回到注册界面
req.getRequestDispatcher(path).forward(req, resp); path取值:"/pages/user/regist.html"