实现方法 | HttpServletResponse的sendRedirect() | RequestDispatcher.forward() |
---|---|---|
本质上 | 完全的跳转,浏览器显示跳转的地址并重新发送请求链接 | 容器中控制权的转向,在客户端浏览器中的地址栏不会显示出转向后的地址 |
性能上 | 结束第一次请求,由浏览器发起新的请求 | 依然是在同一次处理过程中(更高效) |
获得转发对象的方式 | HttpServletResponse.sendRedirect() | HttpServletRequest.getRequestDispatcher()或者 ServletContext.getRequestDispatcher() |
参数 | 相对路径,绝对路径或其他Web应用 | 相对路径或绝对路径 |
相对路径 | 容器相对于原来请求URL的目录加上参数来生成完整的url | 同左 |
绝对路径 | 相对于Web服务器本身加上参数生成完整的url | 相对于web应用根目录加上参数生成完整的url |
绝对路径举例 | response.sendRedirect(“/fool/to.do”)——http://localhost/fool/to.do | request.getRequestDispatcher()(“/fool/to.do”)——http://localhost/myApp/fool/to.do |
相对路径举例 | response.sendRedirect(“fool/to.do”)——http://localhost/myApp/cool/fool/to.do | request.getRequestDispatcher()(“fool/to.do”)——http://localhost/myApp/cool/fool/to.do |
web项目的请求重定向和请求转发问题
最新推荐文章于 2024-07-16 14:44:46 发布