news 2026/8/21 14:47:23

JSP内置对象及作用域双亲委派机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JSP内置对象及作用域双亲委派机制

九大内置对象

  • PageContext 存东西
  • Request 存东西
  • Response
  • Session 存东西
  • Application 【ServletContext】存东西
  • config 【ServletConfig】
  • out
  • page,不用了解
  • exception,和java异常一样

常用作用域

  • request:客户端向服务端发送的请求,产生的数据,用户看完就没用了,比如新闻,用户看完没用的!
  • session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;
  • aplication:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;

共享数据

pageContextDemo01.jsp

<%@ page contentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body><%--内置对象--%><%pageContext.setAttribute("name1","张三1");//保存的数据只在一个页面有效request.setAttribute("name2","张三2");//保存到数据只在一次请求中有效,请求转发会携带这个数据session.setAttribute("name3","张三3");//session中保存的数据,只在一次会话中有效,打开浏览器到浏览器关闭,数据就会消失application.setAttribute("name4","张三4");//application中保存的数据,只在一个服务器中有效,打开服务器到服务器关闭,数据就会消失%><%--脚本片段中的怠慢,会被原封不动的生成到.JS.java 要求:这里面的代码:必须保证Java语法的正确性--%><%// 从pageContext去除,我们通过寻找的方式来// 从底层到高蹭(作用域):pageContext -> request -> session -> application// 双亲委派机制:原理也是差不多Stringname1=(String)pageContext.findAttribute("name1");Stringname2=(String)pageContext.findAttribute("name2");Stringname3=(String)pageContext.findAttribute("name3");Stringname4=(String)pageContext.findAttribute("name4");Stringname5=(String)pageContext.findAttribute("name5");%><%--使用EL表达式输出 ${}--%><h1>${name1}</h1><h1>${name2}</h1><h1>${name3}</h1><h1>${name4}</h1><h1><%=name5%></h1></body></html>

pagedemo02.jsp

<%@ page contentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body><%// 从pageContext去除,我们通过寻找的方式来// 从底层到高蹭(作用域):pageContext -> request -> session -> application// 双亲委派机制:原理也是差不多Stringname1=(String)pageContext.findAttribute("name1");Stringname2=(String)pageContext.findAttribute("name2");Stringname3=(String)pageContext.findAttribute("name3");Stringname4=(String)pageContext.findAttribute("name4");Stringname5=(String)pageContext.findAttribute("name5");%><%--使用EL表达式输出 ${}--%><h1>${name1}</h1><h1>${name2}</h1><h1>${name3}</h1><h1>${name4}</h1><h1><%=name5%></h1></body></html>

可以发现访问pagedemo02的时候只可以获取session和application的内容

PageContext

作用域

pagedemo03.jsp

<%@ page contentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body><%--PageContext类:publicstaticfinalintPAGE_SCOPE=1;publicstaticfinalintREQUEST_SCOPE=2;publicstaticfinalintSESSION_SCOPE=3;publicstaticfinalintAPPLICATION_SCOPE=4;//scope:作用域publicvoidsetAttribute(Stringname,Objectattribute,intscope){switch(scope){case1:this.mPage.put(name,attribute);break;case2:this.mRequest.put(name,attribute);break;case3:this.mSession.put(name,attribute);break;case4:this.mApp.put(name,attribute);break;default:thrownewIllegalArgumentException("Bad scope "+scope);}}--%><%pageContext.setAttribute("hello1","hello1",PageContext.SESSION_SCOPE);//session.setAttribute("hello1","hello1"); 这个等价于上一行的代码%></body></html>

转发

<%pageContext.forward("/index.jsp");%>

pageContextDemo03.jsp

<%@ page contentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body><%pageContext.forward("/index.jsp");//request.getRequestDispatcher("/index.jsp").forward(request,response); 等价于上面那行%></body></html>

双亲委派机制

原理

java.lang.String

packagejava.lang;publicclassString{publicvoidtest(){System.out.println("String");}}

java.lang.Test

packagejava.lang;importjava.lang.String;publicclassTest{// 从上加载,从下寻找//RT.jar//扩展类//应用publicstaticvoidmain(String[]args){Strings=newString();}}

Ctrl+右键查看类

可以发现加载的类并不是我们自己写的应用类,而是加载到了本身源码包写好的类中

双亲委派机制只会加载一个类,加载的顺序从上往下加载,寻找可以加载的类加载器是从下往上寻找。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 23:16:43

Langchain-Chatchat合规性检查在金融场景的应用

Langchain-Chatchat合规性检查在金融场景的应用 在金融机构日常运营中&#xff0c;合规人员常常面临一个令人头疼的问题&#xff1a;如何快速、准确地回答诸如“客户跨境汇款超过多少金额需要申报&#xff1f;”或“反洗钱身份识别应包含哪些要素&#xff1f;”这类高度专业化…

作者头像 李华
网站建设 2026/8/21 18:20:36

2025年值得推荐的午休课桌椅品牌

国家市场监管总局批准发布的《中小学生午休课桌椅通用技术要求》国家标准&#xff0c;将于2026年2月1日正式实施。作为该国家标准的共同起草单位&#xff0c;校金刚&#xff08;金檀家具&#xff09;凭借在午休课桌椅领域深耕六年的专业积累&#xff0c;已为全国300余所学校提供…

作者头像 李华
网站建设 2026/8/20 2:38:26

专项智能练习(古代神话)

1.《山海经》里记载&#xff0c;有一座山叫章俄山&#xff0c;山里有一种神鸟&#xff0c;外形像鹤&#xff0c;但只有一只脚&#xff0c;青色的羽毛上有红色的花纹&#xff0c;喙是白色的。这种中国古代神兽叫&#xff08; B&#xff09;。A.梼杌 B.毕方 C.狍鸮 D.狻猊 解析 本…

作者头像 李华
网站建设 2026/8/20 13:45:39

Langchain-Chatchat支持Markdown和HTML格式吗?

Langchain-Chatchat支持Markdown和HTML格式吗&#xff1f; 在构建私有化知识库问答系统时&#xff0c;一个常见的需求是&#xff1a;能否直接导入团队日常使用的文档格式&#xff1f;尤其是像 Markdown 和 HTML 这类广泛用于技术写作、网页内容和内部 Wiki 的标记语言。如果你…

作者头像 李华
网站建设 2026/8/21 22:54:36

动态补偿系数计算

电驱动系统标定 视频 精讲教程&#xff08;含文档&#xff09;&#xff0c;培训时长4.5小时。 电驱动重难点解析文档。深夜的实验室里示波器曲线还在跳动&#xff0c;我盯着屏幕上那个0.3秒的扭矩响应延迟&#xff0c;咖啡杯在控制台边沿留下深褐色的印记。电驱动标定工程师最…

作者头像 李华
网站建设 2026/8/20 18:11:19

SOM聚类Matlab程序

自组织特征映射(SOM)的数据聚类程序。 matlab程序。 数据格式为excel,聚类标签可显示在图上。最近在折腾数据聚类的时候重新捡起了自组织特征映射&#xff08;SOM&#xff09;这个老伙计。作为神经网络家族里擅长无监督学习的成员&#xff0c;它在数据可视化方面确实有一套。今…

作者头像 李华