首页 > 其他分享 >【学习笔记】JSP内置对象

【学习笔记】JSP内置对象

时间:2022-10-21 17:00:12浏览次数:44  
标签:内置 作用域 request 笔记 session jsp JSP 数据 pageContext

JSP内置对象

  • pageContext

  • Request

  • Response

  • config [ServletConfig]

  • out

  • Application [ServletContext]

  • page

  • exception

  • session

 

其中,pageContext、Request、Application、session 用于存储数据

它们都使用setAttribute() 来存数据

<%
    pageContext.setAttribute("name1","张三");
    request.setAttribute("name2","李四");
    session.setAttribute("name3","王五");
    application.setAttribute("name4","赵六");
%>

取数据,我们使用pageContext.findAttribute() 通过寻找的方式来取数据

是从底层到高层,也就是作用域从小到大

<%
    String name1 = (String) pageContext.findAttribute("name1");
    String name2 = (String) pageContext.findAttribute("name2");
    String name3 = (String) pageContext.findAttribute("name3");
    String name4 = (String)pageContext.findAttribute("name4");
    String name5 = (String) pageContext.findAttribute("name5");
%>

输出,使用EL表达式 ${}

<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3>${name5}</h3>

另一种输出方式就是:使用jsp表达式 <%=xxx%>

这两种输出方式的区别是:

当一个没有值的 变量 被输出时,如 name5,${name5} 什么都不输出,{%=name5%}会输出null

这四个内置对象的作用域

  • pageContext:保存的数据只在一个页面中有效

  • request:保存的数据在一次请求中有效,请求转发会携带这个数据

  • session:保存的数据在一次会话中有效

  • application:保存的数据在服务器中有效,从打开服务器到关闭服务器

 

我们现在从另一个页面中,取数据,来查看它们的作用域

image-20221021162012864

可以发现,我们只能取出session 和 application 中的数据,因为这是在一个新的页面,所以pageContext是绝对取不到的,我们也没有进行请求转发,所以request也取不到。

 

请求转发:

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

我们把jspDemo01.jsp 转发到 jspDemo02.jsp,然后再request 中存的数据,也被携带到jspDemo02.jsp,在这个页面取数据,就可以取到了

pageContext.forward("/jspDemo02.jsp") 相当于 request.getRequestDispatcher("/jspDemo2.jsp").forward(request,response);

 

除此之外,如果我们想让pageContext存的数据也能在其他页面被取到,可以使用 setAttribute() 的重载方法

image-20221021163347210

public void setAttribute(String name, Object attribute, int scope) {
    switch(scope) {
    case 1:
        this.mPage.put(name, attribute);
        break;
    case 2:
        this.mRequest.put(name, attribute);
        break;
    case 3:
        this.mSession.put(name, attribute);
        break;
    case 4:
        this.mApp.put(name, attribute);
        break;
    default:
        throw new IllegalArgumentException("Bad scope " + scope);
    }
​
}

前两个参数和之前相同是键和值,第三个参数是作用域

public static final int PAGE_SCOPE = 1;
public static final int REQUEST_SCOPE = 2;
public static final int SESSION_SCOPE = 3;
public static final int APPLICATION_SCOPE = 4;

在PageContext 抽象类中,定义了四个常量,这四个常量就是作用域,分别对应了 pageContext、request、session、application 的作用域

<%
    pageContext.setAttribute("city","beijing",PageContext.APPLICATION_SCOPE);
    //相当于 application.setAttribute("city","beijing")
%>

然后就可以从其他的页面去取数据了,其他几个与之类似

标签:内置,作用域,request,笔记,session,jsp,JSP,数据,pageContext
From: https://www.cnblogs.com/wztblogs/p/16813984.html

相关文章

  • 前端笔记-HTML 块-20221021
    HTML块元素1.HTML块元素大多数HTML元素被定义为块级元素或内联元素。“块级元素”译为blocklevelelement,“内联元素”译为inlineelement。块级元素特点:块级元......
  • JavaWeb笔记(一)Java网络编程
    本笔记转自https://www.yuque.com/qingkongxiaguang/javaweb/lmkyt6青空の霞光java网络编程在JavaSE阶段,我们学习了I/O流,既然I/O流如此强大,那么能否跨越不同的主机进......
  • 前端笔记-HTML 列表-20221021
    HTML列表1.定义列表自定义列表不仅仅是一列项目,而是项目及其注释的组合。自定义列表以<dl>标签开始。每个自定义列表项以<dt>开始。每个自定义列表项的定义以<dd>......
  • python3学习笔记【简易】
    0.注意事项与码风修正1.注意到句尾分号没影响到编译,查资料知可加可不加,最好不加。当在一行中写多句代码时需要加。2.for循环和if/else句尾冒号前不要有空格! 1.操作种......
  • 基于TensorFlow和Python的机器学习(笔记2)
    基于TensorFlow和Python的机器学习(笔记2)     油耗预测项目(实战)importioimportos.pathimportmatplotlib.pyplotaspltimportkeras.utilsimportte......
  • 自然语言处理学习笔记-lecture5-语言模型03
    词语表示一种典型方法是符号表示法,\(w_1w_2\cdotsw_m\)等等,等价的表示方法是one-hot表示法,此时有多少个词向量就有多少维,且没有办法表示词之间的相似性,基于连续语义空间......
  • PR学习笔记——Pr2019快速使用指南——视频剪辑
    PR学习笔记——Pr2019快速使用指南​​素材选取​​​​1、音乐素材库,那肯定是某音乐比较全,如何下载呢?​​​​2、视频库​​​​剪辑技巧​​​​一、PremierePro怎么进行......
  • SpringCloud 学习笔记
    一、搭建微服务环境1.创建父模块(SpringCloud_demo)1.1导入坐标 <dependencies><dependency><groupId>org.springframework.boot</groupI......
  • 一次 JMeter 脚本请求错误 Could not read JSON: Unexpected character : expected a
        用Badboy录制的脚本,有个界面是Ajax提交表单,先有HTTPStatus415错误(解决方案参考《​​一次JMeter脚本请求错误HTTPStatus41......
  • tomcat下jsp嵌入applet找不着类的解决方案
    tomcat下jsp嵌入applet找不着类的解决方案背景:eclipse+tomcat+webProject问题:webProject首页中使用了applet嵌入,结果提示applet类无法查找解决方案:在应用程序根目录下新......