1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > JAVA Web基础6-EL表达式与JSTL标签库

JAVA Web基础6-EL表达式与JSTL标签库

时间:2021-10-30 21:46:26

相关推荐

JAVA Web基础6-EL表达式与JSTL标签库

一.EL表达式语言

1.EL表达式全称expression language,用于在JSP页面获取其内置对象的内容

语法:${...}

在jsp中page指令有一个属性是isELIgnored, 用来标记此页面是否忽略EL表达式, 默认为false,即不忽略

2.用法说明

常规写法举例:<%= request.getAttribute("test")>

EL表达式写法:${test}//当作用域属性名都是唯一时可以这么写

${requestScope.test}//表示获取请求作用域中属性名为test的值

${requsetScope["test"]}

.与[]的写法多数情况下可以通用,但下列几种情况只能用[]的写法:

当表达式中有特殊字符如test_name则只能用[]的写法;

当需要获取动态属性时则只能用[]的写法,即[]中可以写变量名;

[]也可以用来表示数组或者集合中的索引值,如arr的值为{a,b,c},可以通过${arr[0]}的方式获取a;

3.EL变量

${test}

当前面不指定哪个作用域下面的值的时候, 会默认按照下面的顺序去找, 如果都找不到, 就输出一个空字符串

pageScope --> requestScope --> sessionScope --> applicationScope

4.EL中可以对获取的值自动进行类型转换

如获取的test1和test2中的值为字符串型数值,可以直接进行运算:${test1 + test2}

5.获取请求参数

获取请求参数可通过表单或超链接方式获取

常规写法:<%= request.getParameter("name")>

EL表达式写法:${param.name}

6.EL运算符

算术运算符: + - * /或div %或mod 例:${5 div 3 } 或${5 / 3 }

关系运算符: ==或eq(equals) !=或ne(not equals) <或lt(less than) >或gt(great then) <=或le(less equals) >=或ge(great equals)

逻辑运算符: &&或and ||或or !或not

验证运算符: empty(empty 对于 null和"" 的判断都是返回true)

例:使用验证运算符实现当变量test的值为空时,输出"test为空",否则输出test值

${empty test?"test为空":test}

二.JSTL标签库应用

JSTL全称JSP Standard Tag Library(标准标签库),由五个功能不同的标签库组成,分别是核心标签库、格式标签库、SQL标签库、XML标签库、函数标签库。

标签库的使用需要引入两个jar包:jstl.jar和standard.jar包,将其放置在WEB-INF的lib文件夹下。

使用这些标签库必须在JSP页面顶部使用<%@ taglib %>指令定义引用的标签库和访问前缀;由于实际项目开发中一般只应用核心标签库,所以这里主要学习核心标签库的内容。

核心标签库的指令格式为:<%@ taglib uri="http :///jsp/jstl/core" prefix="c" %> 这里将前缀定义为c是约定俗称的。

核心标签库里主要包括表达式标签、流程控制标签、循环标签。

1.表达式标签

<c: out /> 或<c: out></c:out>;输出标签

格式:

<c: out value="" default="" escapeXml="ture/false"/>

相当于<%= 表达式%>,分为有标签体和没有标签体,功能一样;

value:可以直接赋值常量,也可以赋值EL表达式:value="${test}" ;该标签会将引号里的值输出;

default:默认输出值,当value值为null时输出此值,如果也不定义默认值则输出空字符串;

escapeXml:控制转义字符;默认为true;也就是默认情况下如果值里有标签存在则视为字符串;

<c: set/>或<c: set></c: set>;变量设置标签

格式

<c: set var="" value="" scope="">

var:指定变量名;

value:指定变量值;可以为EL;也可以写在标签体中如:<c:set var="t" value="小明" />或<c:set var="t1">小明</c:set>

scope:指定变量作用域;默认为page,可选值包括:page,request,response,application;

<:c remove/>;变量移除标签

格式:

<c: remove var="" scope=""/>

var:指定要移除的变量名

scope:指定要移除的变量有效范围,当不同范围的变量名有重复的时候, 可以通过这个属性来确定移除的是哪个, 如果不指定, 则全部移除掉,默认值为page;

<c: catch></c: catch>;捕获异常标签

格式:

<c: catch var="">

可能存在异常的代码:${5 / 0}

</c: catch>

var:指定存储异常信息的变量,如不保存,可省略了;类似于try...catch;上述代码会输出Infinity(无限大),属于EL表达式里的异常;

2.流程控制标签

<c:if></c:if>条件判断标签

格式:

<c:if var ="" test="" scope="">

标签体

</c:if>

var:指定判断结果的变量名;

test:必选属性,指定条件表达式,可以用EL,返回值为true或false,当为true时,执行标签体,标签体里可以为任何JSP能够使用的元素;

scope:指定变量的有效范围;

<c:choose></c:choose>;条件选择标签

一般与<c:when></c:when>条件测试标签和<c:otherwise></c:otherwise>其他条件标签组合使用,类似于switch...case语句

格式:

<c:choose>

<c:when test="">

<c:out value=""></c:out>//或其他标签体

</c:when>

<c:otherwise>//可不写

<c:out value=""></c:out>

</c:otherwise>

</c:choose>

3.循环标签

<c:forEach></c:forEach>循环标签

用于遍历集合或数组中的所有或部分数据

格式:

<c: forEach items = "" var = "list" begin="" end="" step="" varStatus="vs" >

${list} ${vs.index} ${vs.count} ${vs.first} ${vs.last}

</c:forEach>

items: 指定需要遍历的数组或者集合

var: 设定一个变量名来存储从数组或者集合中遍历出来的值

begin, end: 指定需要遍历的开始, 结束位置,默认全部遍历

step: 每次遍历跳过的个数, 默认值为1

varStatus:指定循环状态变量

index:在原集合中的索引值, 从0开始

count:当前循环计数,从1开始,

first:是否是当前循环第一个

last:是否是当前循环最后一个

注意first和last, 是判断的是否在输出结果中的第一个或者最后一个, 并不是原来的集合中

例:输出1到10之间所有整数

<c:forEach var ="i" begin="1" end= "10">

${i},

</c:forEach>

<c: forTokens></c: forTokens>迭代标签

用于使用指定分隔符分割字符串,并遍历分割后的字符串数组;

格式:

<c:forTokens items="" delims="" var=""></c:forTokens>

items:指定要迭代的String对象

delims:指定分隔符,可以同时有多个如:delims=", ; : "

var:指定变量名,保存分割后的字符串

其他属性用法同forEach标签

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。