Servlet——标签:EL、JSTL

EL——表达式语言(Expression Language)

为了在表现层上减少Java代码,JSTL标记库应运而生,EL即是JSTL的基础。


格式:

${所有的EL表达式在这里面}


取值:

普通JSP写法:

session.getValue("name");

EL写法:

${sessionScope.name}


访问JavaBean:

<% student stu=new student(); stu.no="123"; %>

学生编号是:${stu.no}


访问集合:

${集合[序号]}

如:${book[0]}表示集合book中的第一个元素


[ ] . 运算符:

${sessionScope.user.sex};

等价于

String str="sex";

${sessionScope.user[str]};

两种情况[ ]和 . 不能互换:

1、名称中含有特殊字符:

${sessionScope.user["user-sex"]}

不可用

${sessionScope.user.user-sex}

来代替


2、动态取值:

${sessionScope.user[param]},其中param是自定义变量


EL对象:

1、PageScope:page范围

2、requestScope:request范围

3、sessionScope:session范围

4、applicationScope:application范围

若无范围限定则按照page>request>session>application顺序查找


除此之外其他EL对象:

1、pageContext:此JSP的PageContext

2、param:获取单个参数

3、paramValues:获取捆绑数组参数

4、Header:

5、headerValues:

6、cookie:获取cookie的值

7、initParam:获取web.xml中的参数值


EL自动类型转换:

${param.count+20}

相当于

String str=request.getParameter("count");

int count=Intger.parseInt(str_count);

count=count+20;


验证运算符empty:

${empty A}

如果A为null、不存在、空字符串、空数组均返回true,否则返回false





JSTL

首先声明JSP文件所使用的的标签库,同时引入该标签库,并指定标签的前缀。

<% @ taglib prefix="c" uri="http://....../core" %>

prefix表示前缀,习惯上把核心标签库core的前缀定义为c。


core核心标签库:

表达式操作:out、set、remove、catch

流程操作:if、choose、when、otherwise

迭代操作:forEach、forTokens

URL操作:import、param、url、redirect


基本数据操作:

输出,

赋值,

删除,


流程控制操作:

...

可选属性var和scope指定var所在的scope

Servlet——标签:EL、JSTL_第1张图片
choose、when、otherwise总是同时出现

全部遍历:

Servlet——标签:EL、JSTL_第2张图片
全部遍历,var为当前遍历的值指定操作的变量名

部分遍历指定遍历区间及步长:


部分遍历,红框内为遍历0到1,箭头所指指定步长(默认为1)

部分遍历并输出元素状态:

Servlet——标签:EL、JSTL_第3张图片
部分遍历并输出元素状态

index:在原集合中是第几个元素

count:在遍历子集中是第几个元素

first:是否是遍历子集中的第一个元素

last:是否是遍历子集中的最后一个元素

字符串遍历

按delims分割items,每次分割的值放在var里
Servlet——标签:EL、JSTL_第4张图片
可选属性

:包含另一JSP页面到本页

:得到url地址

:页面的重定向

:向目标页面传递参数



你可能感兴趣的:(Servlet——标签:EL、JSTL)