Java学习(七)标准标签库JSTL

软件设计 2017-05-23

一、了解JSTL

1、什么是JSTL?

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版本之间的依赖关系。

3、优点

1、 在应用程序服务器之间提供了一致的接口,最大程度地提高了WEB应用在各应用服务器之间的移植。

2、 简化了JSP和WEB应用程序的开发。

3、 JSTL的引入可以让JSP代码中<%%>等代码消失掉,再结合EL表达式,会更加方便以及美观。

4、各套框架(还没有学习,比如struts,SpringMVC等)都有自己的标签库,这时JSTL可以作为公共、通用的,横行于各框架中。

二、使用JSTL

1、下载

登入官方网址:

http://tomcat.apache.org/taglibs/

Java学习(七)标准标签库JSTL

Java学习(七)标准标签库JSTL

Java学习(七)标准标签库JSTL

Java学习(七)标准标签库JSTL

Java学习(七)标准标签库JSTL

2、新建一个jsp页面

Java学习(七)标准标签库JSTL

三、实例

1、需求分析

1、  做一个固定资产的系统,里面实体类,业务逻辑(接口+实现类)+jsp显示所有信息。

2、  由于没有数据库,所以在实现类模拟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、  写遍历结果集合的代码

Java学习(七)标准标签库JSTL

这段代码

${fixedAssetsList}直接取代

<%@ page import="java.util.List" %>

<%@ page import="entity.House" %>

<%

List<House> houseList = (List)request.getAttribute("houseList_label");

%>

其中本例中的${fixedAssetsList}

其实它完整写法: ${requestScope.fixedAssetsList}

原理EL表达式,可以直接取request范围内变量

EL表达式,定义了多个隐式对象

相关推荐