Java Web实战详细教程(二十三)JSTL标签和EL表达式精讲

        为什么要使用JSTL和EL表达式?
        我们下面通过一个表格展示部门员工信息,对比看JSP和JSTL的不同。
Java Web实战详细教程(二十三)JSTL标签和EL表达式精讲
        同样是循环生成一个table数据,使用传统jsp:
Java Web实战详细教程(二十三)JSTL标签和EL表达式精讲
        同样是循环生成一个table数据,使用JSTL方式:
Java Web实战详细教程(二十三)JSTL标签和EL表达式精讲

EL全称是Expression Language,即表达式语言。

使用宽松的类型转换,简化对变量和对象的访问。
EL的语法结构为 表 达 式 , 比 如 说 {表达式} ,比如说 表达式,比如说{emp.name}
以上变量emp会遵循从page、request、session、application中依次寻找,
如果找到,便不再继续寻找;如果没有找到,则返回null
也可以给变量制定寻找的范围,与以上四个内置对象相对应的属性范围在EL中的书写格式为:pageScope,requestScope,sessionScope,applicationScope
EL表达式中也可以使用算术运算符、关系运算符、逻辑运算符。
例如:

${4+5} 
${3<4}
${3!=4&&5>6}

EL的使用:
Java Web实战详细教程(二十三)JSTL标签和EL表达式精讲
以上EL其实就是等同于<%=request.getAttribute(“age”)%>。但如果这样:${sessionScope.age},从session范围中,便获取不到。

JSTL全称是JSP Standard Tag Library,即JSP标准标签库

EL表达式在输出信息方面简化了JSP的复杂度,但是它无法控制流程、无法处理复杂的逻辑。是否有一种技术,可以不必书写Java代码,又能控制流程呢?
JSTL提供了一种不需要嵌入Java代码片段,就可以开发复杂显示页面的途径
JSTL提供了通用、条件、循环、格式化、数据库操作等标签
使用JSTL标签,要在指令上加上如下标签指令:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

JSTL标签——通用标签
<c:out>
作用是做输出,功能类似于<%=变量%>、 变 量 语 法 为 : < c : o u t v a l u e = “ 字 符 串 常 量 ” / > 或 < c : o u t v a l u e = “ {变量} 语法为:<c:out value= “字符串常量”/>或<c:out value= “ 变量语法为:<c:outvalue=“字符串常量”/>或<c:outvalue=“{变量}” />
<c:set>
作用是定义变量,将变量的值存在某个JSP范围中,或者是JavaBean的属性中。
<c:remove>
作用与set相反,从某个范围中移除一个变量。

JSTL标签——条件标签
<c:if>
作用是用来判断
<c:if test= “判断条件”>
</c:if>Java Web实战详细教程(二十三)JSTL标签和EL表达式精讲
JSTL标签——迭代标签
<c:forEach>
作用是对于包含多个对象的集合进行迭代,跟Java中的逐元循环相似
<c:forEach [var= “当前元素”] items= “集合”>
</c:forEach>
Java Web实战详细教程(二十三)JSTL标签和EL表达式精讲
JSTL标签——格式化
<fmt:formatDate value="${日期}" pattern=“yyyy-MM-dd” />
<fmt:parseDate value="日期字符串"pattern=“yyyy/MM/dd”/>
Java Web实战详细教程(二十三)JSTL标签和EL表达式精讲
JSTL标签和EL表达式总结:

  • JSTL与EL搭配使用,可以简化视图层的开发。
  • 需要掌握EL表达式的用法。
  • 需要掌握常用的如通用、条件、迭代、格式化等标签。
  • 数据库标签因为后来使用了MVC架构设计,所以在实际使用中不会使用显示层技术访问数据库,所以数据库标签已经没有学习的必要。
上一篇:如何设置多个同一页的tinymce编辑


下一篇:flex对象.show()的时候display变成block