品茶看<Servlet&JSP>-④EL表达式

前言

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

                

 

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

        #EL介绍

        ①EL 语法

        ②访问JavaBean等

        ③EL隐式对象

        ④EL运算符

 

EL介绍

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

 

EL 语法

 

  ①基本知识

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

    JSP Scriptlet获取:

1
2
3
User user = (User)session.getAttribute("user");
 
String sex = user.getName( );

    EL 获取:

1
${sessionScope.user.sex}

  

  ② [] 和 . 运算符

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

    例如:下面都是一样的。

1
${sessionScope.user.name}

        或者

1
${sessionScope.user["name"]}

  

   两者功能差异

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

    例如:

1
${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

表示当前JSPjavax.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值:    

1
${cookie.jsessionid.value}

  

header 和headerValues

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

  例如

    获取accept-language语言

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

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

 

initParam

 

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="ISO-8859-1"?>
 
 
 
 
version="2.4">:
 
<context-param>
 
<param-name>username</param-name>
 
<param-value>jeffli</param-value>
 
 
</context-param>:
 
</web-app>

  

  用EL表达式获取:

1
${initParam.username}

      等价于       

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

  

param和paramValues

 


  同上面的理

1
2
${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表达式,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。