• Jsp内置对象及EL表达式的使用


    一、JSP的内置对象(9个JSP内置对象)

    JSP的内置对象引用名称   对应的类型

    request          HttpServletRequest
    response          HttpServletResponse
    session          HttpSession(有开关的:page指令的session属性的取值)
    application         ServletContext
    config            ServletConfig
    page            this(当前Servlet对象)
    exception         java.lang.Throwable(有开关:page指令的isErrorPage属性改为true)
    out              JspWriter
    pageContext         javax.servlet.jsp.PageContext非常重要

    pageContext对象有三大作用:

    1、本身是一个域对象,表示的域范围是本页面

       同时还能操作其他三个域对象(PageContext ,ServletRequest, HttpSession,ServletContext)

      

      设置属性:

        void setAttribute(String name,Object value)

        void removeAttribute(String name)

        Object getAttribute(String name)

      操作其他的三个域对象,设置属性:

        void setAttribute(String name,Object value,int scope)

        void removeAttribute(String name,int scope)

        Object getAttribute(String name,int scope)

        参数int scope是由PageContext类提供的静态变量规定的。

        PageContext.PAGE_SCOPE:页面范围(是PageContext本身中的那个Map,代号page)

        PageContext.REQUEST_SCOPE:请求范围(是ServletRequest中的那个Map,代号request)

        PageContext.SESSION_SCOPE:请求范围(是HttpSession中的那个Map,代号session)

        PageContext.APPLICATION_SCOPE:请求范围(是ServletContext中的那个Map,代号application)


    Object findAttribute(String name):依次按照page,request, session ,application范围搜索指定名称的对象,找到为止。

                     EL表达式便是调用了此方法(非常有用)

    2、获取其他8个隐式对象

    3、提供了转发和包含的方便方法 

     若不用pageContext对象:

      RequestDispatcher rd = request.getRequestDispatcher("/url");

      rd.forward(request,response);

     用pageContext对象:
      pageContext.forward("url");

      pageContext.include("url");

    四大域对象(两个资源之间互传数据)

    JSP中隐式对象的名称   范围名称       具体的类型

    pageContext      page       javax.servlet.jsp.PageContext
    request          request       javax.servlet.ServletRequest
    session          session        javax.servlet.http.HttpSession
    application        application     javax.servlet.ServletContext (如果使用,必须同步处理)

    二、EL表达式

    它只是JSP中的表达式,不是一种开发语言。

    基本语法:${EL表达式}


    1. 获取数据

    EL表达式只能获取四大域中的数据。

    EL表达式获取的对象如果是null,页面不会显示数据。因此,EL表达式中永远不会出现空指针异常

    "."运算符

    ${p.name}:调用域中名称为p对象的getName方法,点运算符是用于获取属性的取值的。

    []运算符

    (.运算符能做的,[]也能做。[]能做的,.不一定能做)

    比如${p.name}===${p['name']}==${p["name"]}

    优秀在可以取不符合Java命名规范的东东。


    2. 数学逻辑运算:

    empty运算符:如果判断的对象是null或者空字符串,都返回true。

           对于集合,即使集合对象本身不是null,没有任何元素,也返回true。

    EL表达式不支持字符串连接操作。

    三、EL内置对象(11大EL内置对象)

    获取JSP的内置对象(11大EL内置对象):难点,不要与JSP的内置对象和范围名称搞混

    11大EL隐式对象中,其中一个是表示自身对象外,其余都是表示的Map结构

    EL隐式对象名称      Java类型              备注

    pageContext    javax.servlet.jsp.PageContext   与JSP中的内置对象完全相同


    剩余的都是代表的Map集合

    pageScope        java.util.Map       代表着PageContext页面范围域那个Map

    requestScope      java.util.Map       代表着ServletRequest请求范围域那个Map

    sessionScope       java.util.Map       代表着HttpSession会话范围域那个Map

    applicationScope     java.util.Map       代表着ServletContext应用范围域那个Map


    param           java.util.Map       代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串。

    paramValues        java.util.Map       代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串数组。


    header           java.util.Map      代表着请求消息头。key:头名称。value:头值,它是一个字符串。

    headerValues       java.util.Map       代表着请求消息头。key:头名称。value:头值,它是一个字符串数组。

    cookie         java.util.Map      代表客户端提交的Cookie的Map。key:cookie的name。value:cookie对象本身

    initParam         java.util.Map       代表着全局初始化参数(web.xml中context-param).key:参数名称。value:参数值

  • 相关阅读:
    unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
    Go的学习笔记之Channel发送和接收
    聊聊 PC 端自动化最佳方案
    一文彻底搞懂快速幂(原理实现、矩阵快速幂)
    一次core.<number> 文件占满磁盘空间的处理过程
    博文目录
    备忘录:C#获取微信小程序的云数据库中数据
    T-SQL——关于跨库连接查询
    .NET异步程序设计——给线程传递数据
    自研 Pulsar Starter:winfun-pulsar-spring-boot-starter
  • 原文地址:https://www.cnblogs.com/z941030/p/4765166.html
Copyright © 2020-2023  润新知