jsp java el_JSP EL表达式使用

以下是一些JSP EL基本用法,写出来做个笔记,也可供大家参考交流。

一、EL表达式

EL在jsp中最基本的功能是取代诸如pageContext、request、session、application的对象的getAttribute()操作。

在jsp用运用EL可以简化代码,更加高效。

二、具体语法

Expression Language(EL)最先只能在jstl中用,后来才允许在jsp其他部分使用。

1、用于web层,也就是jsp

2、语法

a)       ${expr}

b)       不允许嵌套

c)       Bean的getter和 . 及 [] 操作

. 操作 : 取得attribute的某个getter方法的返回值。

[] 操作:作用和 . 操作一样,但允许不规范的命名(比如有空格和点)

3、expr可以是:

a)       文字量

b)       Attribute

c)       定义的bean:实际也是attribute

d)       参数和cookie

e)       可以含有运算符

4、Implicit(隐含) Objects

a)       pageContext

b)       pageScope

c)       requestScope

d)       sessionScope

e)       applicationScope

f)        param

g)       paramValues

h)       header

i)        headerValues

j)        cookie

k)       initParam

b~e用来限定attribute的范围,如果一个attribute没指定范围,那么有一个默认的由小到大的查找顺序。

5、运算

a)       算术运算

+ - * /(或div)  %(或mod)

b)       关系运算符

==(或 eq)、!=(或 ne)、;(或 gt)、<=(或 le)和 >;=(或 ge)

c)       逻辑运算符

&&(或 and)、||(或 or)和 !(或 not)

d)    空验证运算符  empty

e)  条件运算 ?:

三、语法举例说明

下面通过具体的例子说明如何使用EL表达式,首先我们定义一个User类

public classUser {private intid;privateString n;privateString password;publicUser() {super();

}public intgetId() {returnid;

}public void setId(intid) {this.id =id;

}publicString getName() {returnn;

}public voidsetName(String name) {this.n =name;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}publicString toString(){return "id:"+id+" || name:"+n+" || password:"+password;

}

}

pageContext.setAttribute("bp", basePath);

User user= newUser();

user.setName("zhang3");

user.setPassword("123");

request.setAttribute("user4test", user);%>

a)  ${expr}与算术运算的运用

${expr}它的意思是取出某一范围中名称为expr的变量。

1

2

3 ${user4test}4

5

6 //Object obj=pageContext.getAttribute("user4test");7 //String name=((User)obj).getName();8 //out.print(name);

9 %>

10

11 //或者在jsp表达式中用: ((User)(pageContext.getAttribute("user4test"))).getName()

12 %>

13
${user4test.name}

14

15

16

17 ${requestScope.user4test.name}//这里我们指定用requestScope18

19

20 这里有一个隐形的el:${notExist}

21 这里有一个隐形的el(by jsp expression):

22

23

24

25

26 ${"我爱中国"}27
${12345}28
${true}29

30

31

32

33

34 pageContext.setAttribute("three", new Integer(3));35 %>

36 ${3==4||3==three}37
${user4test.password=="123"}38
${123=="123"} ${123=="234"}39

40

41 3+4="${3+4}"

42
${3==three?"正确":"错误"}43

44

结果如下:

1 id:0 || name:zhang3 || password:123

2 zhang33 zhang34 这里有一个隐形的el:5 这里有一个隐形的el(by jsp expression):null

6 我爱中国7 12345

8 true

9 true

10 true

11 true false

12 3+4="7"

13 正确

特别需要我们注意的是当属性拥有特殊字符时要使用[]:

1

2 无效的访问形式:${user.test.name}

3

4 ${requestScope["user.test"].name}

5

6 注意:不能写成{["user.test"].name},因为[]相当于点,不能写成“.xxxxxx”,第一个点前面没东西了。

7

8

结果如下:

1 无效的访问形式:2 zhang33 注意:不能写成${["user.test"].name},因为[]相当于点,不能写成“.xxxxxx”,第一个点前面没东西了。

b)EL中empty的使用

1

2 pageContext.setAttribute("str1","");3 pageContext.setAttribute("str3",null);4 pageContext.setAttribute("array",newString[]{});5 pageContext.setAttribute("array1",new String[]{""});6 %>

1

2 ${empty str1 }3

4 ${empty str2 }5

6 ${empty str3 }7

8 ${empty array }9

10 ${empty array1 }11

我们得到结果如下:

1 true

2

3 true

4

5 true

6

7 true

8

9 false

c)EL中List的使用

list=new ArrayList();

list.add("litem1");

String[] arr=new String[]{"String1"};

Map map=new HashMap<>();

map.put("key1", "mitem1");

pageContext.setAttribute("list", list);

pageContext.setAttribute("map", map);

pageContext.setAttribute("arr", arr);

pageContext.setAttribute("k", "key1");%>

${map[k]}

${map.k}
${map["key1"]}

${map.key1}
${list[0]}
${arr[0]}

得到结果如下:

1 mitem12

3 mitem14 mitem15 litem16 String1

你可能感兴趣的:(jsp,java,el)