目录
一、web组件之间的跳转方式:
方式一:请求转发(forward)
方式二:URL重定向(redirect)
方式三:请求包含(include)
二、请求转发和URL重定向
1,请求转发:request.getRequestDispatcher(String path).forward(request, response);
■ 请求转发特点:
① 浏览器地址栏不变,依然是/forward/s1,不是目标地址 /forward/s2.
② 请求转发只发送一个请求。
③ 请求转发实现了共享同一请求中的数据。/forward/s1的请求到达/forward/s2后,只是对/forward/s1的请求进行封装,目的还是为了共享/forward/s1的请求中的数据。
④ 最终响应给浏览器的是由目标servlet2来决定的。
⑤ 请求转发不能跨域进行访问,只能跳转到当前应用中的资源。不能脱离根目录下的资源,例如想请求转发到百度。
⑥ 请求转发可以实现访问WEB-INF目录中的资源(因为其在根目录下)。
2,URL重定向:response.sendRedirect(String url); //参数:url: 表示目标资源地址。
■ URL重定向特点:
① 浏览器地址发生改变,从/redirect/s1 变成了目标地址 /redirect/s2。
② URL 重定向发送了两次请求。
③ 不共享请求中的数据(因为URL 重定向是两次独立的请求)。
④ 最终响应给浏览器的是由目标servlet2来决定的。
✿ 相当于把目标地址拷贝到浏览器地址栏,敲回车
⑤ URL重定向可以进行跨域访问,可以访问其他应用中的资源。
⑥ URL 重定向不能访问WEB-INF目录中的资源。
三、Servlet的三大作用域对象(目的~共享数据):
1,request:每一次请求都是一个新的request对象,若是在Web组件之间需要共享同一 个请求中的数据,只能使用请求转发。
2, session:每一次会话都是一个新的session对象,若是需要一次会话中进行多个请求的数据共享,只能使用session。
3, application:应用对象,Tomcat 启动到关闭,表示一个应用,在一个应用中有且只有一个application对象,作用域整个web应用,可以实现多次会话之间的数据共享。