简介
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。在drp项目中咱们用到的只是一些常见的用法。当然在JSTL中必然用到EL(Expression Language)表达式,格式:${}.
标签库分类
JSTL的核心标签库标签共13个,从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。使用这些标签能够完成JSP页面的基本功能,减少编码工作。
(1)表达式控制标签:out标签、set标签、remove标签、catch标签。
(2)流程控制标签:if标签、choose标签、when标签、otherwise标签。
(3)循环标签:forEach标签、forTokens标签。
(4)URL操作标签:import标签、url标签、redirect标签。
EL表达式简单应用
1.取普通字符串
Servlet代码:
//普通字符串
req.setAttribute("hello","Hello World");
hello(jsp脚本):<%=request.getAttribute("hello") %><br>
hello(el表达式,语法:$和{}):${hello }<br>
运行结果:
2.取属性值
servlet代码
//结构
Group group = new Group();
group.setName("提高班九期");
User user = new User();
user.setUsername("张晓");
user.setAge(23);
user.setGroup(group);
req.setAttribute("user", user);
JSP页面:
姓名:${user }<br>
年龄:${user.username }<br>
所属组:${user.group.name }<br>
运行结果:
3、测试是否为空
servlet代码
//empty
req.setAttribute("v2","" );
req.setAttribute("v3",new ArrayList() );
req.setAttribute("v4","12345" );
req.setAttribute("v5",null );
JSP页面:
v1:${empty v1 }<br>
v2:${empty v2 }<br>
v3:${empty v3 }<br>
v4:${empty v4 }<br>
v5:${empty v5 }<br>
运行结果:
使用结果对比
1、jsp脚本编写
获取物料类别代码:
<tr>
<td height="26">
<div align="right">
<font color="#FF0000">*</font>类别:
</div>
</td>
<td>
<%
List<ItemCategory> itemCategoryList = (List)request.getAttribute("itemCategoryList");
%>
<select name="category" class="select1" id="category">
<%
for(Iterator<ItemCategory> iter = itemCategoryList.iterator();iter.hasNext();){
ItemCategory ic = iter.next();
%>
<option value="<%=ic.getId() %>"><%=ic.getName() %></option>
<%
}
%>
</select>
</td>
</tr>
2、用jstl+el编写
<tr>
<td height="26">
<div align="right">
<font color="#FF0000">*</font>类别:
</div>
</td>
<td>
<select name="category" class="select1" id="category">
<c:forEach items="${itemCategoryList}" var="itemCategory">
<option value="${itemCategory.id} }">${itemCategory.name }</option>
</c:forEach>
</select>
</td>
</tr>
看着两段代码实现相同的功能但是明显第二种代码量少,如果是小项目代码不多体现不出什么,如果前台页面非常多,开发者当然要选择第二种方式,可以减少很多工作量。所以通过对比jstl+el编写的代码最简洁,高效。