• EL表达式的内置对象及其作用域


    EL 表达式的主要功能是进行内容显示。为了显示方便,在表达式语言中,提供了许多内置对象,通过不同的内置对象的设置,表达式语言可以输出不同的内容,这些内置对象如表 1 所示。

    内置对象类型说明
    pageContextjavax.servlet.ServletContext表示 JSP 的 pageContext
    pageScopejava.util.Map取得 page 范围的属性名称所对应的值
    requestScopejava.util.Map取得 request 范围的属性名称所对应的值
    sessionScopejava.util.Map取得 session 范围的属性名称所对应的值
    applicationScopejava.util.Map取得 application 范围的属性名称所对应的值
    paramjava.util.Map如同 ServletRequest.getParameter(String name),返回 Slring[] 类型的值
    param Valuesjava.util.Map如同 ServletRequest.getParameter Values(String name), 返回 string[] 类型的值
    headerjava.util.Map如同 ServletRequest.getHeader(String name),返回 string[] 类型的值
    header Valuesjava.util.Map如同 ServletRequest.getHeaders(String name), 返回 string[] 类型的值
    cookiejava.util.Map如同 HttpServletRequest.getCookies()
    initParamjava.util.Map如同 ServletContext.getInitParameter(String name),返回 string[] 类型的值

    使用 EL 表达式语言可以输出4种属性范围的内容,属性的范围在 EL 中的名称如表 2 所示。

    属性范围EL中的名称
    pagepageScope
    requestrequestScope
    sessionsessionScope
    applicationapplicationScope

    如果在不同的属性范围中设置了同一个属性名称,则按照 page、request、session、application 的范围进行查找。我们也可以指定要取出哪一个范围的变量,如表 3 所示。

    范例说明
    ${pagesScope.usemame}取出 page 范围的 username 变量
    ${requestScope.usemame}取出 request 范围的 username 变量
    ${sessionScope.usemame}取出 session 范围的 username 变量
    ${applicationScope.usemame}取出 application 范围的 username 变量

    其中,pageScope、requestScope、sessionScope 和 applicationScope 都是 EL 内置对象,由它们的名称可知所代表的意思。例如,${sessionScope.usemame} 是取出 session 范围的 usemame 变量,显然这种写法比先前 JSP 的写法 String usemame=(String)session.getAttribute(“usemame”) 要简洁许多。

    下面通过例子来演示 EL 如何读取 4 种属性范围的内容。

    【例1】EL 读取 4 种属性范围的内容(attribute_demo.jsp):

    1. <%@ page contentType="text/html" pageEncoding="utf-8" %>
    2. EL 读取四种属性范围的内容
    3. <%
    4. pageContext.setAttribute("info","page属性范围");
    5. request.setAttribute("info","request属性范围");
    6. session.setAttribute("info","session属性范围");
    7. application.setAttribute("info","application属性范围");
    8. %>
    9. 四种属性范围


    10. page 属性内容:${pageScope.info}

    11. request 属性内容:${requestScope.info}

    12. session 属性内容:${sessionScope.info}

    13. application 属性内容:${applicationScope.info}

    程序运行结果如图 1 所示。


    图1 EL读取四种属性范围的内容

    我们也可以通过表达式的 pageContext 内置对象获取 JSP 内置对象 request、session、application 的实例,可以通过 pageContext 内置对象调用 JSP 内置对象中提供的方法。

    【例2】调用 JSP 内置对象的方法(methodjsp):

    1. <%@ page contentType="text/html" pageEncoding="utf-8" %>
    2. 调用 JSP 内置对象的方法
    3. EL 调用 JSP 内置对象的方法


    4. IP 地址:${pageContext.request.remoteAddr}

    5. SESSION ID:${pageContext.session.id}

    6. 是否是新 session:${pageContext.session['new']}

    程序运行结果如图 2 所示。


    图2 EL调用JSP内置对象的方法

  • 相关阅读:
    Vim 从何而来?
    倒数三天 | WAIC 滴水湖 AI 开发者创新论坛:当数据库遇上 AI 来啦!
    【框架】VUE:路由配置(Router)
    vue3中setup的两个参数 props,context (attrs,emit,slots),vue3中的双向数据绑定自定义事件emit和v-model
    再突破!阿里云进入Gartner云AI开发者服务挑战者象限
    前端培训丁鹿学堂:vue3组合式api之toRaw和customRef
    AOP之Java动态代理
    PHP火狼大灌篮游戏源码微信+手机wap源码带控制
    数据结构day44
    【目标跟踪】pytorch实现DeepSORT+YOLOV5 YOLOFastestv2 含代码
  • 原文地址:https://blog.csdn.net/unbelievevc/article/details/127843235