Java四大作用域对象
1、为什么他们是域对象
- 同样都内置了map集合,都有setAttribute和getAttribute方法
2、四大作用域
- page(jsp页面)域–>PageContext
- request(请求)域–>request HttpServletContext
- session(会话)域–>session HttpSession
- application域(web应用)–>application ServletContext
3、作用范围
从小到大依次排序为
- Page域:四大域中最小的一个,作用在当前的jsp页面
- request域:在整一个请求链,请求转发也存在
- session域:一次会话
- application域:整一个的web应用
4、生命周期
-
Page域:Jsp请求时开始,响应结束时销毁
-
request域:在service方法调用前由服务器创建,传入service方法,整个请求结束
-
session域:
简单点来说就是:创建、活动、销毁
第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。
当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。如果调用session提供的invalidate() ,可以立即销毁session。
Session的销毁只有三种方式:
1.调用了session.invalidate()方法
2.session过期(超时)
3.服务器重新启动 -
application域:web应用被加载到容器时创建代表整个web应用的ServletContext对象,服务器关闭或者Web应用被移除是,ServletContext跟着被销毁。
5、作用
- Page域
- 可以实现在前端写入后端Java代码
- 获取八大隐式对象
- 获取其中所有域的数据
- 在跳转到其他资源的过程中,自身携带有forword和include方法,简化了重定向和转发的操作
- request域
- 共享数据
- 请求转发
- 实现Servlet和servlet之间的数据传输功能
- session域
- 可以把信息或数据存在session中
- 多个页面都可以访问到
- application域:整一个的web应用
- 在不同的servlet之间转发
- 读取资源文件
6、代码实现举例
-
Page域
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <% int x=10;%>//定义一个x变量 x=<%=x%>//输出到页面 </body> </html>
启动tomcat页面输出
x=10
但是如果说,在除此之外的页面访问,都会报一个500错误,说明page页面的变量不能在该页面以外访问
-
request域
-
Servlet1(存数据)
public class Servlet1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req
-