Servlet 请求转发与重定向

1. 转发

在请求的处理过程中,Servlet完成了自己的任务,需要把请求转交给下一个资源继续处理。

转发操作的核心部分是在服务器端完成的,所以浏览器感知不到,整个过程中浏览器只发送一次请求

图片[1]-Servlet 请求转发与重定向-深吸氧

代码:

request.getRequestDispatcher("/index.html").forward(request, response);

2. 重定向

在请求的处理过程中,Servlet完成了自己的任务,然后以一个响应的方式告诉浏览器:“要完成这个任务还需要你另外再访问下一个资源

图片[2]-Servlet 请求转发与重定向-深吸氧

代码:

response.sendRedirect("/index.html");

3. 对比

转发重定向
一次请求两次请求
浏览器地址栏没变化,显示的是第一个资源的地址浏览器地址栏有变化,显示的是第二个资源的地址
全程使用的是同一个request对象全程使用的是不同的request对象
在服务器端完成在浏览器端完成
目标资源地址由服务器解析目标资源地址由浏览器解析
目标资源可以在WEB-INF目录下目标资源不能在WEB-INF目录下
目标资源仅限于本应用内部目标资源可以是外部资源

4. 应用场景

可以简单的判断:能用转发的先用转发,如果转发不行,再使用重定向。

  • 需要通过同一个request对象把数据携带到目标资源:只能用转发
  • 如果希望前往下一个资源之后,浏览器刷新访问的是第二个资源:只能用重定向
© 版权声明
THE END
请撒泡尿证明你到此一游
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容