首页 > 范文大全 > 正文

JSTL和EL开发JSP页面的优势及实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇JSTL和EL开发JSP页面的优势及实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:JSP WEB应用程序系统开发因为涉及到面向对象语言Java而使众多学习者感到困难,本文就JSP2.0中引入的EL新特性并结合jstl1.2规范讨论了JSP页面快速开发的新的途径和方法。

关键词:Java语言 el表达式语言 JSTL规范 标记库

引言

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.省略/products/jsp/jstl)下载JSTL规范(一些.JAR文件)。JSTL有以下三个安装配置步骤:①将JSTL实现库文件jstl.jar和standard.jar以及标记库描述文件夹tld拷贝到Tomcat Webapps的WEB-INF下。②修改web.xml(Web应用配置文件),在其中定义五类标准标记库所对应的.tld(标记库描述文件)的URI。例如在使用核心标记库之前,须编辑web.xml并在其中添加如下代码:

<taglib-uri>http://java.省略/jsp/jstl/core

<taglib-location>/WEB-INF/tld/c.tld

③在JSP页面开头用taglib标记库指令指定要使用的标记库。比如,要使用JSTL core标记库,EL 版本的taglib伪指令为:

<%taglib uri=http://java.省略/jsp/jstl/core"prefix="c"%>

其中:c是核心标记库的前缀名(可由用户指定或用系统约定前缀c),它在使用标记库标记时用到。例如:out是核心库4个通用标记之一,用于显示输出数据,以下有两种格式可以将value属性值送到JSP输出上:

格式一:<c:out value="${Expression}"/>

格式二:<c:out value="Expression" default=" Expression" escapeXml="boolean"/>

其中:value属性是输出到JSP页面的表达式。当escapeXml属性值为“true”时,可以将HTML/XML标记符号(如、&、/等)直接作为字符串输出;当value属性的值为null时,default属性用来设置输出的默认值。

${ Expression }是EL表达式。可以用EL表达式语言而不用Java代码段来指定JSTL的属性值,所有的EL表达式都是被${}括起来的。

EL提供了对JSP对象的简明访问和对象属性的简单表示。例如,输出JSP对象uName的值:

Java脚本语言表示为:

<%String uName=(String)request.getAttribute(“uName”);

Out.println(uName);%>

而EL表示为:${uName},其简单明了显而易见。

下表1列出了EL中11个隐含对象。JSP和EL隐含对象中只有一个公共对象(pageContext)。但是EL可以通过pageContext访问所有另外八个JSP隐含对象。实际上,这是将pageContext包括在EL隐含对象中的主要理由。

以获取“用户注册登录”表单信息的处理程序为例:

使用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.省略/jsp/jstl/sql" %>

<%@ taglib prefix="c" uri="http://java.省略/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语言的同学会有所帮助。

参考文献:

[1]陈旭东,刘迪人.JSP2.0应用教程[M].清华大学出版社,2006.

[2]林上杰,林康司.JSP2.0技术手册[M].电子工业出版社,2005.