JAVAEE——内置对象和属性范围(二)

这篇具有很好参考价值的文章主要介绍了JAVAEE——内置对象和属性范围(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 内置对象和属性范围

1.1 知识点

(1)四种属性范围

(2)九个内置对象

1.2 具体内容

    在我们之前的操作当中,经常使用到request.getParameter()来接受上一个页面传递过来的参数,那么在java当中,如果要使用一个对象,必须要先实例化,但是我们的request却一直没有实例化过就可以直接使用,这意味着这个对象在web容器当中本身就已经实例化了,这种对象我们叫做内置对象。

NO.

内置对象

类型

1

pageContext

javax.servlet.jsp.PageContext

2

request

javax.servlet.http.HttpServeltRequest

3

response

javax.servlet.http.HttpServletResponse

4

session

javax.servlet.http.HttpSession

5

application

javax.servlet.ServlertContext

6

config

javax.servlet.SerletConfig

7

out

javax.servlet.jsp.jspWriter

8

page

java.lang.Object

9

exception

java.lang.Throwable

属性范围:(四种会话跟踪技术)

所谓的属性范围,就是指在一个页面中设置了属性之后,是否能够在其他页面进行访问(是否有这种权限)。

四种属性范围分别是:

  1. 属性范围只在当前页面:一个属性只能被当前页面所取得,跳转之后就无法取得。
  2. 属性范围在一次服务器请求的范围内可以访问,也就是说,在属性经过设置之后,经过了服务端跳转,无论跳转多少次(只要还是服务端跳转),那么跳转后的页面都可以访问该属性。
  3. 在一次会话的范围,一个用户设置的属性,无论经过多少次,什么样的跳转,只要浏览器不关闭,或者该属性未被清空,那么整个会话过程中都可以去访问。
  4. 上下文范围:指的是在服务器上下文当中设置的属性,所有人都可以一直访问,只要服务器未关闭或者重启。

第一种属性范围:

      page属性范围:(pageContext)属性范围:

         这个属性范围非常好理解,指的就是本页面访问本页面设置的属性。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">

  </head>
  
  <body>
     <%
         pageContext.setAttribute("name","page属性范围");
         pageContext.setAttribute("date",new Date());
         
      %>
      <h1>
         <%=(String)pageContext.getAttribute("name")%>
         <%=(Date)pageContext.getAttribute("date") %>
      </h1>
  </body>
</html>

下面进行一次服务端跳转(jsp:forward)验证跳转后的页面无法访问前一个页面的page属性。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

  </head>
  
  <body>
     <%
         pageContext.setAttribute("name","page属性范围");
         pageContext.setAttribute("date",new Date());
         
      %>
      <jsp:forward page="forwordtonext.jsp"></jsp:forward>
     
  </body>
</html>



<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    

  </head>
  
  <body>
      <h1>
         <%=(String)pageContext.getAttribute("name")%>
         <%=(Date)pageContext.getAttribute("date") %>
      </h1>
    
  </body>
</html>

第二种属性范围:request属性范围

Request属性范围指的就是在服务端跳转中生效的属性范围。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

  </head>
  
  <body>
     <%
         request.setAttribute("name","page属性范围");
         request.setAttribute("date",new Date());
         
      %>
      <jsp:forward page="forwordtonext.jsp"></jsp:forward>
     
  </body>
</html>



<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    

  </head>
  
  <body>
      <h1>
         <%=(String)request.getAttribute("name")%>
         <%=(Date)request.getAttribute("date") %>
      </h1>
    
  </body>
</html>


以下验证客户端跳转是否能够访问:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

  </head>
  
  <body>
     <%
         request.setAttribute("name","page属性范围");
         request.setAttribute("date",new Date());
         
      %>
      <a href="forwordtonext.jsp"><h1>客户端跳转</h1></a>
     
  </body>
</html>





<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    

  </head>
  
  <body>
      <h1>
         <%=(String)request.getAttribute("name")%>
         <%=(Date)request.getAttribute("date") %>
      </h1>
    
  </body>
</html>

总结一下目前学到的跳转形式:

     客户端跳转:

         第一种是表单的提交

         第二种是<a>标签超链接跳转。

     服务端跳转:

         jsp:forward

第三种属性范围:

       Session范围:

       这种属性范围,一旦设置好,只要在一个浏览器未关闭的情况下都可以访问,但是这只针对一个浏览器的一个用户而言。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

  </head>
  
  <body>
     <%
         session.setAttribute("name","page属性范围");
         session.setAttribute("date",new Date());
         
      %>
      <a href="forwordtonext.jsp"><h1>客户端跳转</h1></a>
     
  </body>
</html>



<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    

  </head>
  
  <body>
      <h1>
         <%=(String)session.getAttribute("name")%>
         <%=(Date)session.getAttribute("date") %>
      </h1>
    
  </body>
</html>

以上验证了客户端跳转之后,session范围的属性依旧可以访问。

重新开启一个浏览器直接访问跳转后页面,发现属性无法访问,验证了session范围只针对一个浏览器一个用户而言。

重启浏览器,直接访问跳转后页面,发现属性也无法访问,验证了属性只保存在一次会话范围,想要再次访问就需要再次设置。

第四种属性范围:

     Application属性范围,指的是在服务器上面设置属性,一旦设置,用户可以随时随地范围,除非服务器关闭或者重启。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

  </head>
  
  <body>
     <%
         application.setAttribute("name","page属性范围");
         application.setAttribute("date",new Date());
         
      %>
      <a href="forwordtonext.jsp"><h1>客户端跳转</h1></a>
     
  </body>
</html>



<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    

  </head>
  
  <body>
      <h1>
         <%=(String)application.getAttribute("name")%>
         <%=(Date)application.getAttribute("date") %>
      </h1>
    
  </body>
</html>

1.3 小结

    四种属性范围互相不冲突,独立工作,但是如果在不同的属性范围里存在着键名一样的属性的话,访问的顺序如下page范围—》request范围—》session范围—》application范围。文章来源地址https://www.toymoban.com/news/detail-812187.html

到了这里,关于JAVAEE——内置对象和属性范围(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaEE】_CSS常用属性值

    目录 1. 字体属性 1.1 设置字体家族 font-family 1.2 设置字体大小 font-size 1.3 设置字体粗细 font-weight 1.4 设置字体倾斜 font-style 2. 文本属性 2.1 设置文本颜色 color 2.2 文本对齐 text-align 2.3 文本装饰 text-decoration 2.4 文本缩进 text-indent 2.5 行高 line-height 3. 背景属性 3.1 背景颜色 back

    2024年02月09日
    浏览(34)
  • 【JavaEE】深入了解Spring中Bean的可见范围(作用域)以及前世今生(生命周期)

    【JavaEE】Spring的开发要点总结(4) 在学习Spring中,Bean是最核心的操作资源 使用学习Bean对象是一个重点,我们已经知道如何存储它,获取它,现在我们要知道: 它的作用域,我们才可以知道怎么使用,才能得心应手,符合预期~ 它的生命周期,我们才能更加清楚的了解它的

    2024年02月14日
    浏览(51)
  • JAVAEE——request对象(三)

    1.1 知识点 (1)乱码问题的两种解决方式 (2)post和get提交的区别 (3)request接收同名参数的问题 1.2 具体内容   · 使用request接收参数   运行完代码发现,页面上本身的中文不会乱码,而传递过来的中文参数,无法显示,非中文则正常显示。意思就是说使用request去接收参数

    2024年01月17日
    浏览(26)
  • javaee springMVC绑定复杂对象

    2024年02月09日
    浏览(41)
  • 【JavaEE进阶】 Spring使用注解存储对象

    在博主前面所写的《【JavaEE进阶】 Spring 的创建和使⽤》中我们已经可以实现基本的 Spring 读取和存储对象的操作了,但在操作的过程中我们发现读取和存储对象并没有想象中的那么“简单”,所以接下来我们要学习更加简单的操作 Bean 对象的⽅法。 在 Spring 中想要更简单的存

    2024年02月05日
    浏览(44)
  • 学习JavaEE的日子 day11 初识面相对象

    1.1 类和对象的理解 类 * 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合 * 简单理解:类就是对现实事物的一种描述 类的组成 * 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸) * 行为:指事物能执行的操作,例如:手机事物(打电话,发短信)

    2024年01月17日
    浏览(41)
  • 【JavaEE进阶】Spring 更简单的读取和存储对象

    配置扫描路径是使用注解之前的前置工作,是非常重要的,是必须的操作项.只有被配置的包下的所有类,添加了注解才能被正确的识别并保存到 Spring 中. 首先创建一个Spring项目.创建好后,第一步就是配置扫描路径:在 resources 目录中创建一个 spring-config.xml 文件.然后在 spring-config.

    2024年02月12日
    浏览(45)
  • 【JavaEE】Spring中注解的方式去获取Bean对象

    【JavaEE】Spring的开发要点总结(3) 在前面的代码里,我们获取Bean对象也比较麻烦: 本文章就是为了更方便地去获取Bean对象~ 对象装配 也叫 对象注入 那么有没有对应的注解去实现这个功能呢? Spring提供的三种实现方法: 属性注入 构造方法注入 Setter注入 而这种非明文获取

    2024年02月15日
    浏览(40)
  • JavaEE 突击 5 - Spring 更简单的读取和存储对象(2)

    大家新年快乐 , 祝大家新的一年如图 这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领

    2024年02月19日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包