资源跳转方式:
- 重定向
- 请求转发
写法规范
重定向有2种
//立即重定向
response.sendRedirect("DAY13_ServletContext/demo.html");
//延迟重定向
response.setHeader("refresh", "3;url=/DAY13_ServletContext/demo.html");
请求转发
//请求转发
request.getRequestDispatcher("/msg").forward(request, response);
请求转发和重定向的区别
1.使用对象:
重定向:response
请求转发:request
2.路径写法:
重定向:属于客户端路径(路径发生变化)
请求转发:属于服务器路径(路径不发生变化)
3.能否外网跳转:
重定向:可以
请求转发:不可以
4.响应次数:
重定向:n次请求,n次响应
请求转发:一次请求,一次响应
5.地址改变与否:
重定向:改变
请求转发:不改变
6.安全特性:
程序路径暴露问题:某些程序,关键程序,不希望外界知道程序访问路径
重定向:会暴露 不安全
请求转发:不会暴露,安全
7.网速及效率:
重定向:依赖网速,效率较低
请求转发:不依赖网速,效率较高
8.request作用域:
重定向:不可使用
请求转发:可以使用
9.受保护(WEB-INF)目录资源访问
重定向:不可以
请求转发:可以
使用范围
何时使用请求转发?
①要求安全,不暴露程序路径
②要求高效
③使用request作用域
④访问受保护目录资源
何时使用重定向?
①跳转外网资源
②改变地址栏路径