前言

  今早,概率课偷了下小懒写的:

                

  泡一杯红茶,ACM集训前,写篇博客记录记录EL表达式。

        #EL介绍

        ①EL 语法

        ②访问JavaBean等

        ③EL隐式对象

        ④EL运算符

EL介绍

  EL 全名为Expression Language。受ECMAScript 和XPath 表达式的语言启发。EL 的语法比传统JSP Scriptlet 更为方便、简洁。

EL 语法

  ①基本知识

    ${为起始、以}为结尾的,构造:${expression}。接下来比较下:   

    JSP Scriptlet获取:

User user = (User)session.getAttribute("user");

String sex = user.getName( );

    EL 获取:

${sessionScope.user.sex}

  

  ② [] 和 . 运算符

    EL表达式中,对象有属性。就可以利用  [] 和 . 运算符  来访问该属性,两者功能相似。

    例如:下面都是一样的。

${sessionScope.user.name}

        或者

${sessionScope.user["name"]}

  

   两者功能差异

   # 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。

    例如:

${sessionScope.user["My-Name"] }      ${header["accept-language"] }

   #我们来考虑下列情况:

    selection是一个变量,可以代表user各个属性。

      ${sessionScope.user[selection]}

    如果selection为"name",就相当于${sessionScope.user.name}或者${sessionScope.user["name"]}

    因此,如果要动态取值时,. (点)运算符无法做到动态取值, []  运算符 可以做到。

访问JavaBean

类型
实例
方法
JavaBeans
${user.username}
${user["username"]}
${user['username']}
user.getUsername()
数组
${sport[1]}
${sport["1"]}
${sport['1']}
sport[1]
List
${phone[2]}
${phone["2"]}
${phone['2']}
phone.get(2)
Map
${phone.home}
${phone["home"]}
${phone['home']}
phone.get("home")

EL隐式对象

隐含对象

类型

说明

PageContext

javax.servlet.jspPageContext

表示当前JSP的javax.servlet.jsp.PageContext

PageScope

java.util.Map

取得Page范围的属性名称所对应的值

RequestScope

java.util.Map

取得Request范围的属性名称所对应的值

sessionScope

java.util.Map

取得Session范围的属性名称所对应的值

applicationScope

java.util.Map

取得Application范围的属性名称所对应的值

param

java.util.Map

如同ServletRequest.getParameter(String name)。回传String类型的值

paramValues

java.util.Map

如同ServletRequest.getParameterValues(String name)。回传String[]类型的值

header

java.util.Map

如同ServletRequest.getHeader(String name)。回传String类型的值

headerValues

java.util.Map

如同ServletRequest.getHeaders(String name)。回传String[]类型的值

cookie

java.util.Map

如同HttpServletRequest.getCookies()

initParam

java.util.Map

如同ServletContext.getInitParameter(String name)。回传String类型的值

cookie

  隐式对象cookie包含了当前HttpServletRequest的所有cookie 的Map。

  例如

    获取一个名为jsessionid的cookie值:    

${cookie.jsessionid.value}

  

header 和headerValues

header 储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。

  例如

    获取accept-language语言

${header["accept-language"]}。

  注意:当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。

initParam

  就想我们在web-xml 配置 初始化值得时候,我们用initParam隐式对象可以获取。

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

version="2.4">:

<context-param>

<param-name>username</param-name>

<param-value>jeffli</param-value>

</context-param>:

</web-app>

  

  用EL表达式获取:

 ${initParam.username}

      等价于       

String userid = (String)application.getInitParameter("username");

  

param和paramValues

  同上面的理

${param.name}
${paramValues.name}

  等价于

request.getParameter(String name)
request.getParameterValues(String name)

EL运算符

逻辑运算符

实例

结果

&&或and

交集${A && B}或${A and B}

true/false

||或or

并集${A || B}或${A or B}

true/false

!或not

非${! A }或${not A}

true/false

 

总结

  EL学习,这次比较全。以前用着就去看,索性写篇博客记录下。

          

                学这个,好比ABC... 慢慢来,多写多用就会了。

④品茶看<Servlet&JSP>-EL表达式的更多相关文章

  1. Jsp,EL表达式的入门

    Jsp,EL表达式的入门 *Servlet/JSP 是两种动态的WEB资源的两种技术 使用Servlet生成HTML的页面是可以的 response.getWriter("<form ...

  2. JSP EL表达式使用

    JSP EL表达式使用: Servlet: package com.stono.servlet; import java.io.IOException; import java.util.HashMa ...

  3. jsp EL表达式 字符串的比较

    jsp EL表达式 字符串的比较 跟JavaScript一样,直接使用两个等于号即可:== 代码如下: <c:if test="${highLight == 'visa'}" ...

  4. JSP EL表达式 获得 request的GET/POST方法

    JSP EL表达式 获得 request的GET/POST方法: 不在requestScopse中: <p>得到request的方法</p> <p>pageCont ...

  5. JSP EL表达式 param、paramValues的使用

    JSP EL表达式 param.paramValues的使用: <%@ page language="java" import="java.util.*" ...

  6. JSP EL表达式忽略方法

    JSP EL表达式忽略方法: web.xml中,和jsp中:jsp中的等级要高一些: web.xml: <?xml version="1.0" encoding=" ...

  7. jsp EL表达式和JSTL标签if-else if-else用法

    java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...

  8. oozie错误:javax.servlet.jsp.el.ELException: variable [***] cannot be resolved

    完整错误: javax.servlet.jsp.el.ELException: variable [compute] cannot be resolved at org.apache.oozie.ut ...

  9. 11 JSP/EL表达式/EL函数

    JSP      * 概述: JSP(Java Server Pages)与Java Servlet一样,是在服务器端执行的不同的是先由服务器编译部署成Servlet执行      * JSP的运行原 ...

随机推荐

  1. Vue 获取登录用户名

    本来是打算登录的时候把用户名传过去,试了几次都没成功,然后改成用cookie保存用户名,然后在读取就行了, 登录时候设置cookie setCookie(c_name,c_pwd,exdays) { ...

  2. 接口约束的另一种方法:Class类的isAssignableFrom

    Class类的isAssignableFrom是个不常用的方法,感觉这个方法的名字取得不是很好,所以有必要在此解析一下,以免在看源码时产生歧义,这个方法的签名如下: public native boo ...

  3. UITextField 输入金额,小数点的控制输入

    #pragma mark --- UITextFieldDelegate ---- (BOOL)textField:(UITextField *)textField shouldChangeChara ...

  4. Unity打包提示UnityEditor.BuildPlayerWindow+BuildMethodException: Build failed with errors.错误

    不要将打包的输出路径设置为Assets文件夹下面即可,MD真坑 老外给出的解释: As you have noticed after you click build settings you are ...

  5. 2019.03.15王苛震——myls

    /* 1.尝试实现ls命令的功能 加选项-l -a -i -h */ #include <stdio.h> #include <sys/types.h> #include &l ...

  6. VS中Debug与Release、_WIN32与_WIN64的区别

    一.Debug与Release 1.  区别 Debug——调试版,生成的.exe中包含很多调试信息,若直接发包,比较大: Release——发布版 2.  如何区分是Debug编译还是Release ...

  7. ef core 相关

    1.为什么使用ef core? 市面上orm框架那么多,为何偏偏选择ef,dapper那么好用,性能碾压ef,为什么使用dapper? 对于这个问题我记得当初一个老师讲entityframework的 ...

  8. pyqt5 graphics view简单使用

    Graphics View提供了一个平面,用于管理和交互大量自定义的2D图形图元,以及一个用于可视化图元的视图窗口小部件,支持缩放和旋转. 该框架包括一个事件传播架构,允许场景中图元的精确双精度交互功 ...

  9. 包建强的培训课程(1):Android App企业级开发

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  10. 我所理解的HTTP协议

    前言 对于HTTP协议,想必大家都不陌生,在工作中经常用到,特别是针对移动端和前端开发人员来说,要获取服务端数据,基本走的网络请求都是基于HTTP协议,特别是RESTFUL + JSON 这种搭配特别 ...