引言
WEB应用程序设计(JSP)是计算机专业学生的专业必修课程,但是有些Java语言基础薄弱的同学会感觉学习困难,很多同学在毕业 后参加信息产业部等部门组织的相应专业职业技能考证考试时感到束手无策,因为JSP中大量动态内容的逻辑需要通过Java代码段来实现。JSTL(JSP Standard Tag Library,JSP标准标记库)规范的发布和JSP 2.0新特性EL(Expression Language,表达式语言)的引入,为不习惯Java语言或者不熟悉Java语言的WEB设计开发人员提供了一个JSP开发的新途径,它简化了程序, 提高了程序的可读性和可维护性。
优势与实现
JSTL规范是由JCP(Java Community process program)开放性组织发展完善的。JSTL1.0始发布于2002年6月,目前最新版本是JSTL1.2。JSTL实际上可以看作是一组基于XML 语法的自定义标记形成的标记库。JSTL提供五个标准标记库(core核心、internationalization/format(国际标准化/格 式)、XML、SQL和function函数)并支持EL。EL是2003年发布的JSP 2.0引入的最主要的新特性,它用简单语法定义了表达式语言。在JSTL标记中,可以灵活使用EL表达式,提供了一个用EL表示的强大的属性集,使得 JSP动态表示层技术开发可以完全脱离Java脚本代码。
目前Tomcat 6 Web服务器中不自动包含对JSTL的支持,所以在使用JSTL之前须在SUN的JSTL页面(http://java.sun.com /products/jsp/jstl)下载JSTL规范(一些.JAR文件)。JSTL有以下三个安装配置步骤:
①将JSTL实现库文件 jstl.jar和standard.jar以及标记库描述文件夹tld拷贝到Tomcat Webapps的WEB-INF下。
②修改web.xml(Web应用配置文件),在其中定义五类标准标记库所对应的.tld(标记库描述文件)的 URI。例如在使用核心标记库之前,须编辑web.xml并在其中添加如下代码:
<taglib-urihttp://java.sun.com/jsp/jstl/core <taglib-location/WEB-INF/tld/c.tld |
③在JSP页面开头用taglib标记库指令指定要使用的标记库。比如,要使用JSTL core标记库,EL 版本的taglib伪指令为:
<%taglib uri=http://java.sun.com/jsp/jstl/core"prefix="c"%> |
其中:c是核心标记库的前缀名(可由用户指定或用系统约定前缀c),它在使用标记库标记时用到。例如:out是核心库4个通用标记之一,
以获取“用户注册登录”表单信息的处理程序为例:
使用EL param获取用户提交的数据,可以简单表示为:
姓名:${param.name}性别:${param.sex}E-mail:${param.email} ... ...
其中,name、sex、email等分别是提交表单的控件名。
最后,以JSP开发《班级论坛》实例项目为例:
DbQuery.jsp是一个查询数据库的页面。我们在MySQL数据库classbbs中创建了拥有全部权限的用户 cq(password:admin)及数据库表stud。运行http://localhost:8080/proj/BBS/ DbQuery.jsp后将可以显示stud表中的全部记录的相关内容。(在开源项目eclipse下编辑编译运行通过)。
<!-- DbQuery.jsp --> <%@ page contentType="text/html;charset=GBK" %> <!―1.指定要使用的SQL标记库和核心标记库 --> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!―2.设置数据源并保存在datas中 --> <sql:setDataSource url="jdbc:mysql://localhost:4097/classbbs" driver="com.mysql.jdbc.Driver" user="cq" password="admin" var="datas"/> <!―3.执行一个数据库查询并将结果保存在res中 --> <sql:query sql="select *from stud" var="res" dataSource="${datas}"/> <!―4.显示查询结果 --> <html><body><table border="1"> <tr><th>姓名</th><th>留言</th><th>提交时间</th></tr> <c:forEach var="row" items="${res.rows}"> <tr><td><c:out value="${row.name}"/></td> <td><c:out value="${row.say}"/></td> <td><c:out value="${row.submit}"/></td></tr> </c:forEach></table></body></html> |
结语
JSTL的core标记库中提供了所有JSP页面常用功能的集合;SQL标记库提供了对数据库的访问支持;此外 Internationalization/format标记库提供了国际化(I18N)标记集和数字、日期等的相关标记集用以处理数据显示的国际化和格 式化;XML标记库提供了对XML语言的支持;function标记库提供了对函数的支持等等。JSTL和EL以巨大的优势简化了JSP的WEB开发。限 于篇幅,我们只对其中的core和SQL标记库给出了应用实例,希望对喜欢用JSP开发web应用而又畏惧Java语言的同学会有所帮助。