El和JSTL介绍
EL表达式是一套简单的运算规则,用于给jsp标签的属性赋值,也可以脱离jsp标签直接使用。
jstl标签: jsp标签的一种。用来替换java代码的技术,容器遇到标签后会将其转换成java代码。
El的使用
使用el一般两种情况,取值并且显示,以及做一些运算,使用方式:
1.使用${user.username},访问”user”名称的对象的username属性,也就是说访问的属性和对象必须绑定在四大作用域里(pagecontext,request,session,application)
2.是${user[‘username’]},允许里面出现下标
3.使用表达式做运算,如${user.username == user.userage},返回结果是对应的结果
el使用的示例
1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> |
使用el的注意事项
在setAttribute方法里面可以设置列表或者是集合或者是map等对象,我们取的时候有不同的方法。
使用List的时候,我们可以使用${list[1] },来取对象里面的第二个保存值,集合也是一样的方法,也可以使用List本身自带的方法取值。
但是在使用map对象的时候,如果是Map<String,String>时,我们使用${list[“username”] }是可以取到值的,但是如果是Map<Integer,String>时,我们使用这种方法就会取不到值,因为EL表达式在解析Integer类型数字的时候,会自动把数字转换成Long类型,使用Integer类型作为key值,取值的时候进行判断Integer与Long对象不相等。导致无法取出key值。解决方案就是在建立的时候就建立Map<Long, Student>这样的类型,这样就可以正常取了,使用${map[1] }
在不同作用域的情况下,如果命名出现了冲突,例如session里面有”user”属性,request里面也有”user”属性,那么就会会和异常处理一样,会取出作用域最小的那一个。如果非要取出自己要的作用域的值,那么使用
${sessionScope.user.username}就可以了。
jstl的使用
1.首先需要知道工程文件里是否有jstl的库文件,如果没有就去网上下载jstl的包,导入就可以了
2.在jsp上面添加<% taglib uri=”jsp标签的命名空间一般是(http://java.sun.com/jsp/jstl/core)" prefix=”指定命名空间的别名,前缀,一般是c”%>
使用方法:
1 | <c:if test="逻辑条件"> |
还有很多标签,可以自己去看一下,这样可以代替很多js的逻辑代码了。
jstl和el结合示例
1 | <c:choose> |