天天看点

④品茶看<Servlet&JSP>-EL表达式前言EL介绍EL 语法访问JavaBeanEL隐式对象EL运算符总结

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

                

④品茶看<Servlet&JSP>-EL表达式前言EL介绍EL 语法访问JavaBeanEL隐式对象EL运算符总结

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

  el 全名为expression language。受ecmascript 和xpath 表达式的语言启发。el 的语法比传统jsp scriptlet 更为方便、简洁。

  ①基本知识

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

    jsp scriptlet获取:

1

2

3

<code>user user = (user)session.getattribute(</code><code>"user"</code><code>);</code>

<code>string sex = user.getname( );</code>

    el 获取:

<code>${sessionscope.user.sex}</code>

  

  ② [] 和 . 运算符

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

    例如:下面都是一样的。

<code>${sessionscope.user.name}</code>

        或者

<code>${sessionscope.user[</code><code>"name"</code><code>]}</code>

   两者功能差异

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

    例如:

<code>${sessionscope.user[</code><code>"my-name"</code><code>] }      ${header[</code><code>"accept-language"</code><code>] }</code>

   #我们来考虑下列情况:

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

      ${sessionscope.user[selection]}

    如果selection为"name",就相当于sessionscope.user.name或者

{sessionscope.user["name"]}

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

类型

实例

方法

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")

隐含对象

说明

pagecontext

javax.servlet.jsppagecontext

表示当前jsp的javax.servlet.jsp.pagecontext

pagescope

java.util.map

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

requestscope

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

sessionscope

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

applicationscope

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

param

如同servletrequest.getparameter(string name)。回传string类型的值

paramvalues

如同servletrequest.getparametervalues(string name)。回传string[]类型的值

header

如同servletrequest.getheader(string name)。回传string类型的值

headervalues

如同servletrequest.getheaders(string name)。回传string[]类型的值

cookie

如同httpservletrequest.getcookies()

initparam

如同servletcontext.getinitparameter(string name)。回传string类型的值

  隐式对象cookie包含了当前httpservletrequest的所有cookie 的map。

  例如

    获取一个名为jsessionid的cookie值:    

<code>${cookie.jsessionid.value}</code>

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

    获取accept-language语言

<code>${header[</code><code>"accept-language"</code><code>]}。</code>

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

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

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<code>&lt;?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"iso-8859-1"</code><code>?&gt;</code>

<code>version=</code><code>"2.4"</code><code>&gt;:</code>

<code>&lt;context-param&gt;</code>

<code>&lt;param-name&gt;username&lt;/param-name&gt;</code>

<code>&lt;param-value&gt;jeffli&lt;/param-value&gt;</code>

<code>&lt;/context-param&gt;:</code>

<code>&lt;/web-app&gt;</code>

  用el表达式获取:

<code>${initparam.username}</code>

      等价于       

<code>string userid = (string)application.getinitparameter(</code><code>"username"</code><code>);</code>

同上面的理

<code>${param.name}</code>

<code>${paramvalues.name}</code>

  等价于

request.getparameter(string name)

request.getparametervalues(string name)

逻辑运算符

结果

&amp;&amp;或and

交集${a &amp;&amp; b}或${a and b}

true/false

||或or

并集${a || b}或${a or b}

!或not

非${! a }或${not a}

 

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

          

④品茶看&lt;Servlet&amp;JSP&gt;-EL表达式前言EL介绍EL 语法访问JavaBeanEL隐式对象EL运算符总结

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