软件设计 2017-05-23
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。
JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。顾名思义,format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行 JSP 页面的国际化。xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据,而 sql 库定义了用来查询关系数据库的操作。
jstl带来的优雅编程体验人所皆知,在java社区蒸蒸日上的今天使用jstl已无需考虑很多问题,我们可以用myeclipse等java集成开发环境轻松搭建一个jstl的web项目。即便有了myeclipse这么得力的工具帮我们快速开发web项目,但是有一些知识我们必须了解的 ---- 那就是jstl与servlet版本,以及jsp版本之间的依赖关系。
以下列出jstl各个版本与jsp及servlet版本之间的依赖关系。
1、 在应用程序服务器之间提供了一致的接口,最大程度地提高了WEB应用在各应用服务器之间的移植。
2、 简化了JSP和WEB应用程序的开发。
3、 JSTL的引入可以让JSP代码中<%%>等代码消失掉,再结合EL表达式,会更加方便以及美观。
4、各套框架(还没有学习,比如struts,SpringMVC等)都有自己的标签库,这时JSTL可以作为公共、通用的,横行于各框架中。
登入官方网址:
http://tomcat.apache.org/taglibs/
1、 做一个固定资产的系统,里面实体类,业务逻辑(接口+实现类)+jsp显示所有信息。
2、 由于没有数据库,所以在实现类模拟2条数据。
1、 建立一个工程assets
2、 先建立好4个包entity ,action,service,dao(本例用不上)
3、 建立实体类(先写属性,然后添加get/set)
FixedAssets.java
4、 在service包建立service接口(业务逻辑)接口,有几个业务逻辑,就有几个方法
FixedAssetsService.java
//显示所有资产 public List<FixedAssets> getAllFixedAssets();
5、 在service包建立service的实现类FixedAssetsServiceImpl.java
public List<FixedAssets> getAllFixedAssets() { List<FixedAssets> fixedAssetsList = new ArrayList<FixedAssets>(); //fixedAssetsList.add( 具体的实体的实例 ); return fixedAssetsList; }
6、在action包中根据业务需要添加Servlet
新建一个FixedAssetsServletGetAllInfo.java
在doGet方法中写代码;
a. 呼叫service
b. 把结果集List放到request对象
c. 跳转到jsp中
7、 新建一个jsp
a、 倒4个jstl的包
b、 添加<%@ taglib prefix="c"…
c、 写遍历结果集合的代码
这段代码
${fixedAssetsList}直接取代
<%@ page import="java.util.List" %>
<%@ page import="entity.House" %>
<%
List<House> houseList = (List)request.getAttribute("houseList_label");
%>
其中本例中的${fixedAssetsList}
其实它完整写法: ${requestScope.fixedAssetsList}
原理EL表达式,可以直接取request范围内变量
EL表达式,定义了多个隐式对象
字符串过于长的时候需要通过仅仅展示前4个,用...表示省略,<c:if test="${fn:length<=5}">${word.type}</c:if>href触发JavaScript事件:。<a