关于对JSP中四种范围对象的作用域的认识

Web应用中,JSP创建的对象有一定的生命周期,也有可能被其他组件或者对象访问。对象的生命周期和可访问性称为作用域。

四种范围对象作用域从小到大顺序如下:pageContext----request----session----application。

   pageContext:
   页面域,作用域仅限于当前页面对象,可以近似于理解为java的this对象,离开当前JSP页面(无论是redirect还是forward),则pageContext中的所有属性值就会丢失。
   request:

   请求域,作用域是同一个请求之内,在页面跳转时,如果通过forward方式跳转,则forward目标页面仍然可以拿到request中的属性值。如果通过redirect方式进行页面跳转,由于redirect相当于重新发出的请求,此种场景下,request中的属性值会丢失。

   session:
   会话域,session的作用域是在一个会话的生命周期内,会话失效,则session中的数据也随之丢失。
   application:

   应用域,作用域是最大的,只要服务器不停止,则application对象就一直存在,并且为所有会话所共享。

对于这四种范围对象作用域的理解,我们可以用一个客人和餐馆的事例来加以说明。

   餐馆:服务器
   客人:浏览器
   服务员和厨师:JSP
   客人点菜:浏览器向服务器发出HTTP请求
   服务员上菜:服务器的响应
   餐馆开门:打开服务器
   餐馆关门:关闭服务器
   早晨餐馆开门--->服务器打开,有客人来用餐--->打开浏览器,客人点菜--->浏览器发出HTTP请求,服务员和厨师去处理客人的点菜--->JSP处理,服务员上菜--->服务器响应,客人用完餐离开--->关开浏览器,餐馆关门--->关闭服务器,当然,餐馆一天不只接待一位客人。Request就可以理解为客人从点菜到服务员上菜这段时间范围内,session可以理解为每个客人从餐馆一进来到用完餐离开餐馆这段时间范围内,application就理解为从早上餐馆开门到餐馆接待了一位位客人后,晚上关门停业这段时间范围内,而page可以理解为把餐馆营业像拍电影一样分解成每一个小的场景。

  

 下面是JSP九大内置对象作用域的总结

  
   关于pageContext的示例:
   page1.jsp
   Jsp代码

<%@ page language="java" contentType="text/html; charset=GBK"

pageEncoding="GBK"%>  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=GBK">  
<title>Insert title here</title>  
</head>  
<body>  
<%  
request.setAttribute("username","张三");  
pageContext.setAttribute("username","张三");  
System.out.println("request.getAtrribute()="+request.getAttribute("username"));  
System.out.println("pageContext.getAtrribute()="+pageContext.getAttribute("username"));  
System.out.println("页面跳转");  
request.getRequestDispatcher("page2.jsp").forward(request,response);   
%>  
</body>  
</html>  


   page2.jsp
   Jsp代码 

<%@ page language="java" contentType="text/html; charset=GBK"  pageEncoding="GBK"%>  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=GBK">  
<title>Insert title here</title>    
</head>  
<body>  
<%   
System.out.println("request.getAtrribute()="+request.getAttribute("username"));  
System.out.println("pageContext.getAtrribute()="+pageContext.getAttribute("username"));   
%>  
</body>  
</html>  


   输出结果:
  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP(Java Server Pages)是一种基于Java语言的服务器端网页开发技术,其包括九大内置对象和四大作用域。 九大内置对象是指在每一个JSP页面,系统自动为开发者创建的九个对象,分别是: 1. request对象:用于获取HTTP请求的信息,如请求参数、请求头等。 2. response对象:用于设置HTTP响应的信息,如设置返回的内容、重定向等。 3. out对象:用于向客户端输出内容,可以通过该对象在页面生成动态内容。 4. session对象:用于存储用户的会话信息,可以在不同的页面和请求之间共享数据。 5. application对象:用于存储全局的应用程序数据,可供所有用户访问。 6. config对象:用于获取当前JSP页面的配置信息,如JSP的初始化参数等。 7. page对象:代表当前JSP页面本身,可以用于调用页面的方法或属性。 8. exception对象:用于处理JSP页面的异常,可以获取异常的相关信息。 9. pageContext对象:包含了对其他八个内置对象的引用,可用于简化代码的编写。 四大作用域是指在JSP定义的存储数据的范围,分别是: 1. page作用域:数据的作用范围限定在当前JSP页面,即页面级别的作用域。 2. request作用域:数据的作用范围限定在一次HTTP请求与响应过程,可供同一请求的不同页面共享。 3. session作用域:数据的作用范围限定在用户的整个会话过程,可供不同请求和页面共享。 4. application作用域:数据的作用范围限定在整个Web应用程序,可供所有用户和所有请求共享。 通过合理的使用这九大内置对象和四大作用域,可以方便地处理页面间的数据传递和数据共享,提高JSP网页开发的效率和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值