JSTL 和 EL

时间:2023-12-31 16:49:56

EL表达式   Expression Language

语法${作用域中的值}

使用EL表达式时,需要在page标签中写上isELIgnored="false",否则EL表达式不生效。

EL表达式在底层寻址对象时会加上get并将属性名首字母大写。而且很多java程序在底层寻址对象时都是找到对象的get,set方法并非去找改对象。

EL表达式查询范围:从小范围到大范围,如果不同作用域有同名的变量昵称,以最小的作用域为准。

EL表达式获取普通属性

1.向作用域中添加一个普通属性,

 <% request.setAttribute("uname","李明"); %>

2.使用EL表达式获取作用域的key。

${uname}

EL表达式获取对象属性

1.创建一个对象,将对象写入作用域中。

    <%
    User user=new User();
user.setName("猪猪侠");
user.setAge(16);
%>

2.使用EL表达式获取作用域的key.对象的属性。不需要加get。

${user.name}

EL表达式获取list和map集合

1.创建集合,放入作用域中,

     
<%
     User user=new User();
user.setName("猪猪侠");
user.setAge(16);
User user2=new User();
user2.setName("猪猪侠2");
user2.setAge(19);
List<User> list=new ArrayList<User>();
list.add(user);
list.add(user2);
Map<String,User> map=new HashMap<String, User>();
map.put("一号",user);
map.put("二号",user2);
request.setAttribute("list",list);
request.setAttribute("map",map);
%>

2..EL表达式获取集合属性时为:key[下标].属性名

${ list[1].name}
<br>
${map["二号"].name}

JSTL Java Standard Tag Library (java标准标签库)

使用JSTL需要两个jar包和标签库描述符文件(.tld文件),在java高版本无需引jar,在低版本和非eclipse和myeclipse外的一些软件需要手动引入jar包。

需要使用taglib标签:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

JSTL可以和EL表达式混合使用

通用标签

set:用于设置指定范围的变量值

<c:set var="变量名" valuue="变量值" scope="作用域名"></c:set>

<c:set var="name" value="二傻" scope="page"></c:set>
${name}

out:计算表达式并将结果输出显示

<c:out value="需要输出的值"></c:out>

如果value写的是set标签中的var,他会看成是四个字母输出,所以需要使用到EL表达式进行混合输出。

<c:set var="name" value="二傻" scope="page"></c:set>
<c:out value="${name}"></c:out>

out输出超链接:

out输出超链接需要用到 escapeXml。

escapeXml有四个取值  true(不对超链接进行转换转义,原模原样输出)  默认值(不对超链接进行转换转义,原模原样输出)  Y(对超链接进行转换转义,解析成一个可以点的超链接)  false(对超链接进行转换转义,解析成一个可以点的超链接)

<c:out escapeXml="false" value="<a href='http://www.baidu.com'>百度</a>"></c:out>

使用true或默认值的结果:

JSTL 和 EL

使用Y或false的结果:

JSTL 和 EL