一.请求转发(forward)
又叫做 直接转发方式,客户端和浏览器都 只发出一次请求、Servlet、HTML、JSP或其他信息资源,由 第二个信息资源响应该请求,在请求对象request,保存的对象对于每个信息资源是共享的。
语法:
request.getRequestDispatcher(path).forward(request, response);
特点:
1.地址栏中的地址【不会】改变,通常看作是服务端的跳转
2.只有一个请求
3.资源是共享的
//也就是说两个Servlet中可以共享请求的资源,可以通过这段代码设置共享数据资源 request.setAttribute(String var1, Object var2); //并通过这段代码获取传递的资源 request.getAttribute(String var1);
4.【可以】访问WEB-INF中的资源
WEB-INF文件夹是Java Web 应用的 默认安全目录, 即客户端无法直接访问,只有服务端可以访问的目录。如果想在页面中 直接访问 其中的文件,必须通过web.xml对访问的文件进行相应映射才能访问。
注:在实际的开发中,可以把不希望用户直接访问到的网页放在文件夹中通过 相应的映射进行访问
5.请求转发【不能】跨域访问
二.URL重定向(redirect)
又叫间接转发方式 ,实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器在向另外一个URL发出请求,从而达到转发的目的。
语法:
response.sendRedirect(String location);
特点:
1.地址栏中的地址【会】发生改变,通常看作是客户端跳转
2.有两个请求
3.在两个Servlet中不可以共享请求中的数据
4.最终的响应都重定向后的 Servlet 决定,与之前的Servlet没有关系
5.【不可以】访问WEB-INF中的资源
6.请求重定向【能】跨域访问
总结:URL 重定向相当于是将重定向的资源路径,重新复制到浏览器地址栏中按下回车一样, 重新发送一次新的请求。
原文地址:https://www.cnblogs.com/caoxingchun/p/12669633.html
时间: 2024-11-05 18:40:21