学习总结
1. 转发和重定向
转发
-
转发原理图
-
转发方法
1)request对象与转发相关方法
request.getRequestDispatcher("/要跳转的地址").forward(request,response);
重定向
-
重定向原理图
-
重定向方法
1)response对象与重定向相关方法
response.sendRedirect("/要跳转的地址");
转发和重定向的区别:
区别 | 转发 forward | 重定向 redirect |
---|---|---|
地址栏不同 | 不会发生变化 | 会发生变化 |
根目录 | 包含项目访问地址 | 没有项目访问地址 |
跳转位置 | 服务器端进行的跳转,不可访问站外资源 | 浏览器端进行的跳转,可以访问站外资源 |
请求对象(域)中数据 | 请求域数据不会丢失,因为是同一个请求 | 请求域数据会丢失,因为不是同一个请求 |
是否可以访问WEB-INF下面的资源 | 可以访问WEB-INF下面的资源(包含静态和动态) | 不可以访问WEB-INF下面的资源(包含静态和动态) |
什么时候用转发什么时候用重定向
-
问:什么时候使用转发,什么时候使用重定向?
1)如果要保留请求域中的数据,使用转发,否则使用重定向。以后访问数据库,增删改使用重定向,查询使用转发。 -
问:转发和重定向后面的代码是否还会执行
1)无论转发或重定向后续的代码都会执行
三大作用域
作用域类型
作用域 | 类型 | 作用范围 | 操作 |
---|---|---|---|
请求域 | HttpServletRequest | 只在同一次请求中起作用 | request.setAttribute(String key, Object value); request.getAttribute(String key); |
会话域 | HttpSession | 同一个回话中起作用 一次会话是从浏览器打开开始,到关闭浏览器结束 | request.getSession().setAttribute(String key, Object value); request.getSession().getAttribute(String key); |
上下文域 | ServletContext | 同一应用中起作用 上下文域也称application应用程序域,application作用范围为程序开始运行到运行停止 | request.getServletContext().setAttribute(String key, Object value); request.getServletContext().getAttribute(String key); |
作用域方法
- 哪个作用域对象调用方法就操作对应的作用域数据
作用域相关方法 | 作用 |
---|---|
Object setAttribute(“键”) | 从中得到一个值 |
void setAttribute(“键”, Object数据) | 向作用域中存储键值对数据 |
void removeAttribute(“键”) | 删除作用域种的键值对数据 |
如何选择作用域
- 先考虑作用范围小的作用域,如果小作用范围的作用域能满足需求就使用小作用范围的作用域
- 由小到大的考虑顺序:请求域 --> 会话域 --> 上下文域
总结
以上就是对请求转发和JavaWeb三大作用域的详细介绍了,代码仅供参考,欢迎讨论交流。