JAVA学习篇--JSTL基金会
JSTL什么
JSTL(JSP Standard TagLibrary,JSP标准标签库)是一个不断完好的开放源码的JSP标签库。
为什么要用JSTL
我们JSP用于开发信息展现页很方便;也能够嵌入java代码(scriptlet、表达式和声明)代码用来实现相关逻辑控制。
看以下程序。但这样做会带来例如以下问题:
jsp维护难度添加;出错提示不明白。不easy调试; 分工不明白;(即jsp开发人员是美工,也是程序猿);
终于添加程序的开发成本;
<% if (session.getAttribute(“user”).equals(“member”)) { %>
<p>Welcome, member!</p>
<% } else { %>
<p>Welcome, guest!</p> <% } %>
由来:
JSTL的初衷是为了将前台美工同开发分开。非常好的实现分层开发的目标。我们知道大多数的美工是对标签比較熟悉
JSTL的最大优势
1:让页面代码看起来更加整洁。显示逻辑一目了然,风格统一,易于维护
2:大量使用JSTL提供的逻辑操作(比如迭代、推断),能够大大降低JSP中脚本代码(Scriptlets)的数量
3:非常好的实现了分层的思想!
4:对于美工人员来说更加easy学习和掌握,由于美工的一部分工作就是和各种标签打交道
5:并且相同能够对其进行自己定义扩展!
弊端:
1,为前台美工人员,维护人员添加了学习成本
使用简单介绍:
假设要使用JSTL,则必须引用jstl.jar和standard.jar两个包。
并在jsp文件的顶部增加下面内容:
<%@ 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" %>
主要标签分类:
<c:> 核心标签库
包含与表达式相关的标签,输出JSP页面内容时的流程制标签,迭代操作标签,生成和操作URL的标签.
JSTL核心标签库(C标签)标签共同拥有13个,功能上分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect
<fmt:> 格式化标签库
定义了用来格式化数据(尤其是数字和日期)的操作还支持使用本地化资源束进行JSP页面的国际化
<fn:> Function标签库
提供了一组经常使用的 EL函数,主要用于处理字符串,在 JSP 中能够直接使用这些函数
JSTL一般配合EL一起使用,因此先看看EL.
EL(Expression Language)目的:为了使JSP写起来更加简单
语法结构:${expression}
举例:< %=request.getParameter(“username”)% > 等价于 ${ param. username }
以下我们来应用JSTL来改动一下jsp的页面:
使用JSTL之前:
<td>
<select name="category" class="select1" id="category">
<%
for (int i=0; i<itemCategoryList.size(); i++) {
ItemCategory ic = (ItemCategory)itemCategoryList.get(i);
String selectedString = "";
if (item.getItemCategory().getId().equals(ic.getId())) {
selectedString = "selected";
}
%>
<option value="<%=ic.getId() %>" <%=selectedString %>><%=ic.getName() %></option>
<%
}
%>
</select>
</td>
使用JSTL之后:
<td>
<select name="category" class="select1" id="category">
<!-- 遍历list数组。将值存放到itemCategory中 -->
<c:forEach items="${itemCategoryList}" var="itemCategory">
<c:set var="selectedString"/>
<!-- 假设item.itemCategory.id等于itemCategory.id -->
<c:if test="${item.itemCategory.id eq itemCategory.id}">
<!-- 将selected的值存放到selectedString变量中 -->
<c:set value="selected" var="selectedString"/>
</c:if>
<option value="${itemCategory.id }" ${selectedString }>${itemCategory.name }</option> </c:forEach> </select> </td>
总结:
对于JSTL来说。它对jsp页面进行了进一步的拆分。将jsp页面中的JAVA代码,隔离出来,不必要美工去关心java代码的实现。仅仅考虑界面的美化就可以,这样职责单一,分工明白。
在做DRP项目总结时。深刻体会到,事实上我们如今学的好多技术实际都是抽象的不断扩展和延伸。是为了程序的复用性和易用性添加!我们都是在不断抽象。不断总结。不断简单化地进行学习!让我们的程序更加面向变化。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
最新文章
- ORA-12154:TNS:无法解析指定的连接标识符
- GitHub托管BootStrap资源汇总(持续更新中…)
- 在此记录一下SharpGL最初创建的程序
- MVC之超链接的寻址
- JQuery blockUI
- Spring框架中的IOC和DI的区别
- mysql logstash 配置
- JavaScript DOM编程艺术-学习笔记(第七章)
- android 检测是否插入U盘方法之一
- hihoCoder 1257 Snake Carpet(很简单的构造方法)
- Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)
- Erlang调度器细节探析
- python中的迭代器&;&;生成器&;&;装饰器
- pip遇见的format问题
- Jetty 开发指南:嵌入式开发示例
- [开发技巧]&#183;TensorFlow中numpy与tensor数据相互转化
- [AGC 018 E] Sightseeing plan
- luogu P2000 拯救世界
- Android Studio 通过 git update 或者 pull 的时候出错及解决办法
- [转]javaweb学习总结(二十九)——EL表达式
热门文章
- HDU1071 The area 【积分】
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级)
- hdu2175汉诺塔IX
- Qt数据类型转换
- json与jsonp区别浅析(json才是目的,jsonp只是手段) (转)
- 8 shell命令之find
- arcmap坐标点生成线和面(更正版)
- 人们的Live Meeting系列 (floyd)
- Eclipse+Maven创建webapp项目<;二>; (转)
- leetcode先刷_Climbing Stairs