转发与重定向

2019-03-18  本文已影响0人  旦暮何枯

请求转发

使用:forward 方法
流程:服务器将当前的request 和 response 对象交给指定的 web 组件处理
转发与重定向对浏览器不透明,浏览器视角:一次请求一次响应;地址栏 url 不变。

服务器端流程:

RequsetDispatcher 由 servlet 容器创建,封装一个由路径所标识的服务器资源。
有两个比较常用的方法, forward 和 include ;
include 方法让原组件和被转发到的组件都能输出响应信息

从当前请求中获取转发对象

RequestDispatcher rd = request.getRequestDispatcher("/servletFE");创建转发对象,设置转发路径
rd.forward(request,response);     // 转发

转发路径可以设置为绝对路径和相对路径,这里用的是绝对路径。

从 ServletContext 中获取转发对象

有两种获取方式,分别是通过转发对象名和转发路径;这里只能使用绝对路径;

所以一般为了避免失误,我们在通过路径获取转发对象的时候一般都是用绝对路径的

//        通过servletContext 获取转发对象; 有两种方式获取转发对象
        rd = this.getServletContext().getNamedDispatcher("ServletForwardEX");
        rd = this.getServletContext().getRequestDispatcher("/servletFE");
        rd.forward(request,response);     // 转发

请求重定向

通过 response 对象发送给浏览器一个新的 url 地址,让其重新请求;
即 两次请求两次响应

通过原请求的响应对象进行重定向

response.sendRedirect("servletRE");//设置请求重定向地址

重定向地址填写:
相对路径:重定向到项目资源
绝对路径:重定向到外部资源

总结

浏览器地址栏变化
请求范围

请求过程

项目地址:https://github.com/wengfe/JAVA/tree/master/servletforward/src/main
上一篇 下一篇

猜你喜欢

热点阅读