【详见 java web前端瘦身器】,从该篇博客可以看出,JSTL是java web前台页面标签的集合,形成了一套规范,利用JSTL标签显示数据。EL表达式则是获取数据的工具,形如 ${} ,获取后台数据给标签赋值,从而回显界面。所以两者一个标签,一个标签里的数据,相辅相成。
JSTL标签:
1、常用的JSTL标签:
核心标签库包括:out , set , remove , catch , if , choose , when 和 URL 等.
表达式操作标签: 包括:out , set , remove , catch.
具体使用细则详见【 java web前端瘦身器】
2、在JSP页面中使用JSTL标签库:
(1、首先需要先引入jstl.jar 和standard.jar两个jar包
(2、在jsp页面加入 <%@taglib uri=" http://java.sun.com/jsp/jstl/core"prefix="c"%>,如若需要引用其他标签,可将URI值换成对应地址。
标签库 URI 前缀 使用模式
核心标签库 http://java.sun.com/jstl/core c <c:tagname…>
国际化标签(I18N) http://java.sun.com/jstl/fmt fmt <fmt:tagname…>
SQL标签库 http://java.sun.com/jstl/sql sql <sql:tagname…>
XML标签库 http://java.sun.com/jstl/xml x <x:tagname…>
函数标签库 http://java.sun.com/jstl/functions fn <fn:tagname…>
EL表达式:
1、EL基本格式:
EL的基本格式以美元($)符界定,内容包括在花括号({ })中,例如${teachersList}
2、EL存取器:通过“[]”或是“.”符号获取数据,用于检索对象的特性或集合的元素。例如后台返回list集合,获取集合中每一个对象,则利用${teachersList.teacherName}
应用验证
下面通过Spring mvc中JSP页面利用<c:forEach> 和<c:out>JSTL标签和EL表达式获取 Controller传回的teacherList集合中每一个元素为例,具体使用:
Controller——获取业务数据,传入request对象
@RequestMapping("/showTeacherEvaluate")
public String showTeacherEvaluate(HttpServletRequest request,
HttpServletResponse response,Model model){
List<TeacherAssessResult> teachersList=new ArrayList<TeacherAssessResult>();
TeacherAssessResult re1=new TeacherAssessResult();
re1.setCourseType("实践课");
re1.setTeacherName("22");
re1.setCourseName("微生物实验");
TeacherAssessResult re2=new TeacherAssessResult();
re2.setCourseType("实践课");
re2.setTeacherName("33");
re2.setCourseName("微生物实验");
teachersList.add(re1);
teachersList.add(re2);
//添加实体集合到request对象
request.setAttribute("teachersList", teachersList);
return "TeacherEvaluating";
}
JSP页面——利用EL表达式forEach 获取数据回显界面
<table class="easyui-datagrid" style="width:264px;height:620"
data-options="singleSelect:true,collapsible:true,url:'datagrid_data1.json',method:'get'">
<thead>
<tr>
<th data-options="field:'itemid',width:66">教师姓名</th>
<th data-options="field:'productid',width:66">课程名称</th>
<th data-options="field:'listprice',width:66,align:'right'">课程类型</th>
<th data-options="field:'listprice',width:66,align:'right'">是否评估</th>
</tr>
<c:forEach items="${teachersList}" var="t">
<tr>
<th><c:out value="${t.teacherName}" /></th>
<th><c:out value="${t.courseName}" /></th>
<th><c:out value="${t.courseType}" /></th>
<th><a href="/list.jsp">尚未评估</th>
</tr>
</c:forEach>
</thead>
</table>
总结
在java初期便接触了EL表达式和JSTL标签,由于后期好几个项目使用SSH框架,前台自然使用struts2标签,形如<s:property value="%{#User.getUserName()}"/>,返回List便利用<i:iterator>循环即可,当前端使用spring mvc重拾JSTL+EL时,才觉似曾相识,再次应证了知识还需回味才能愈香愈浓。