news 2026/7/12 4:44:08

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/7/11 9:49:31

28nm以下工艺PMIC设计雷区:LOD、WPE、HKMG如何悄悄毁掉你的LDO?

一、引言&#xff1a;先进工艺下LDO的隐形可靠性危机随着消费电子、物联网设备对能效比要求的持续提升&#xff0c;电源管理集成电路&#xff08;PMIC&#xff09;正加速向28nm及以下HKMG&#xff08;高k介质/金属栅极&#xff09;、FinFET工艺迁移。这些先进工艺在带来芯片面积…

作者头像 李华
网站建设 2026/7/10 7:47:38

Abaqus水力压裂模拟:基于Cohesive单元与XFEM的方法研究

abaqus水力压裂 1 基于Cohesive单元的二维水力压裂模拟 2基于Cohesive单元的三维水力压裂模拟 3水力裂缝与天然裂缝相交模拟-Cohesive单元法 4裂缝发育地层的水力压裂模拟-Cohesive单元法 5基于XFEM的水力裂缝转向模拟 6基于XFEM的水平井多段压裂裂缝的缝间干扰问题研究水力…

作者头像 李华