JSTL是一个已经被标准化的标记库集合她支持迭代条件XML文档的解析国际化和利用SQL与数据库交互的功能JSTL主要包括四个基本部分的标记库CoreXML国际化和对SQL的支持由于这篇文章的主要是以其中的SQL部分的应用来快速了解JSTL所以我们这篇文章只介绍了 Core和SQl标签库的一些基本功能
这项技术简单而且功能强大足以和PHPColdFusion一较高下他在拓展Java的应用领域方面有足够的能力这些领域不只包括大型的可再升级的Web应用程序对于仅拥有简单主页的Web程序一样没问题这允许你在建立站点的时候可以避免那些经常考虑的XML的集成和与数据库的连接JSTL的关键点就是简单易用还有那就是JSTL是基于JSP构建的 他允许我们使用所有的Java技术
开始之前我们需要弄清楚怎样才能运行JSTL由于是基于JSP技术的所以我们运行它就需要一个能够编译JSP的容器这里我们使用免费的JSP容器TOMCAT()至于如何安装这个产品已经超出了本文所讲述的范围毫无疑问这个软件产品现在已经很普及了而且关于如何安装的文档资料也是很多这里假设您已经安装并成功配置了这个容器你只需再安装JSTL运行所需文件它可以从这里下载你不需要真正的安装它只需要将其中的JAR文件包含到你的应用程序的WEBINF/lib目录下即可
因为我们要在一个支持标准SQL的数据库上运行程序你需要在你的电脑上安装有一个数据库数据库的类型有许多种这里我选择了MySql我之所以选择他的原因在于首先我们需要展示JSTL对于构造简单快速的应用程序领域所起的作用同时能和一直在这个领域处于主导地位的PHP+MySql有所比较;第二点那就是MySql是可以免费下载并包含有一个针对JAVA的JDBC驱动总之为了使用下面的例子你需要下载一个MYSQL服务器( MySql Connector/J JDBC驱动程序还有就是MySql control center )这个产品可以让你非常容易的操作管理Mysql数据库文件全部下载完成后你需要安装mysql和mysql Control Center另外还有就是mysql的JDBC驱动需要放到你的web应用程序中的/WebINF/lib目录中
在创建程序代码之前你需要创建并填写数据库表关于这方面的主题文章也相当广泛具体如何操作超出了本文的范围这里我推荐给你我们上面提及的一个可视化的管理工具 MySQL Control Center你可以用他来创建一个用来运行程序的测试用户数据库以及创建一个测试表并填写若干记录关于登陆名及密码数据库名称这些配置环境参数你应该记住他们稍后需要应用到我们的代码中
现在你就可以准备创建自己的第一个JSTL应用程序了它需要我们做下面一些事情
整个实例程序代码包括两个文件Hellojsp和 Continuejsp
Hellojsp文件允许你输入数据库名称登陆名称登陆密码数据库表名Continuejsp接受Hellojsp中的数据信息并且连接数据库并对数据库中的表执行一个Select请求
下面是这个系统所有的代码文件我将逐一进行解释这些代码相当简单对于代码的结构我相信你即使没有我的解释你也能理解的
: <! Hellojsp >
: <html>
: <head>
: <title>Hello</title>
: </head>
: <body bgcolor="#ffffff">
: <h>Please enter all necessary information and click OK</h>
: <form method="post" action="Continuejsp">
: <br>Your login to database:
<input type="text" name="login" size="">
: <br>Your password to database:
<input type="password" name="password" size="">
: <br>Your database name:
<input type="text" name="database" size="">
: <br>Your database table:
<input type="text" name="table" size="">
: <br><br><input type="submit" name="submit" value=" OK ">
: </form>
: </body>
: </html>
(请注意文本左侧的数字只是为你提供一些标记信息你不需要将他们输入到你的代码文件中)
上面就是所有Hellojsp的源代码很惊奇吧他仅仅是纯粹的HTML代码就这么简单我想应该没有注释的必要了我之所以将这些代码片段包含进文章中就是为了展示一下JSTL集成到那些需要快速扩充额外功能的HTML站点中是多么的简单让我再为你展示一下Continuejsp的全部代码看过之后你就会对 JSTL有些了解了
: <! Continuejsp >
: <%@ taglib prefix="c" uri="%>
: <@ taglib prefix="sql" uri="%>
: <c:set var="h" value="localhost"/>
: <c:set var="l" value="${paramlogin}"/>
: <c:set var="p" value="${parampassword}"/>
: <c:set var="d" value="${paramdatabase}"/>
: <c:set var="t" value="${paramtable}"/>
: <html>
: <head>
: <title>Continue</title>
: </head>
: <body bgcolor="#ffffff">
: <sql:setDataSource driver="commysqljdbcDriver"
url="jdbc:mysql://${l}/${d}?user=${u}&password=${p}"/>
: <sql:query var="result">
: SELECT * FROM <c:out value="${t}"/>
: </sql:query>
: <c:forEach var="row" items="${resultrowsByIndex}">
: <c:out value="${row[]}"/><br>
: </c:forEach>
: </body>
: </html>
(请注意文本左侧的数字只是为你提供一些标记信息你不需要将他们输入到你的代码文件中)
这就是我们所有的代码了是不是非常不错?现在我门来解释一下上面这些代码的作用
行 是 HTML 的注释说明
行 这些 JSP 标签是为了引用外部的 标签库更确切的说这里是引用了JSTL库中的 Core 和SQL标签库部分我们为他们都设置了前缀名称以便于我们通过这些前缀名称访问被引入的标签库中的功能方法
行正如 Hellojsp 真正运行的样子他将请求continuejspContinuejsp获得请求后就需要得到并解析来自Hellojsp的若干变量我们使用了这样的方式${paramYOUR_VAR}在第行<c:set标签将变量${h}设置为 "localhost"第五行变量${l}将获取我们在 Hellojsp中的login文本域中输入的信息第行的变量将分别获得来自Hellojsp中用户所输入的密码数据库名称数据表名称
行是一些我经常用来常见HTML网页头的简单的HTML标签马上重要的功能马上要到了
行我们试图用我们先前获得的mysql驱动程序(commysqljdbcDriver)建立数据库连接在URL中我们指明数据库连接所需要的参数象数据库名称主机名称登陆名及登陆密码依此我们可以用其它任何的JDBC驱动程序连接其相对的数据库如果我们需要连接其他的SQL数据库只需更改这个 URL就够了
行 这里我们执行了一个Select 查询请特别注意第行我们使用了另一个JSTL功能函数<c:out 用来输出我们所获取的数据表名称这里我们同样可以使用其他的SQL命令比如说 INSERTDELETE等等要执行这些没有返回值的查询请求你就需要使用<sql:update JSTL功能函数了他可以直接执行他们就象<SQL:query一样只是执行它是不需要特别指定结果变量来存储语句执行返回的结果
行 既然我们执行了上面的SELECT查询语句我们就应该把他的返回结果显示出来<c:forEach 就是JSTL 中一个具有迭代功能的函数执行它时我们通过${resultrowsByIndex}将返回的每一个数据行信息返回给变量${row}紧接着在第行我们通过<c:out value="${row[]}"/>显示返回的每个数据行的第一个数据列中的值只要你的数据表中包含的字段你都可以通过改变变量 ${row}中的数字大小来对请求表中的任意一个字段中的值对他们进行访问
行是HTML 页脚
在你亲自创建JSTL应用程序过程中可能你还没有发现它有多么的强大但你应该能够意识到JSTL的功能函数的简单和高效性试想有了JSTL整合出一个基于SQL的新闻专栏是何等的快速集成你现有的web站点是何等的容易
很好我们的代码很容易理解的即使一个非专业程序员的话打个比方就算是一个设计师也能够读懂它理解它还可能进行部分的修改起码是页面布局上的修改
正如我们开始的时候所提到的为了使我们的JSTL代码正常的运行我们需要安装Mysql Connector/J 中的JAR 文件当然还有 JSTL因为我们使用了Tomcat这个JSp 容器你需要在Tomcat的文件目录Webapps下创建你自己的文件夹将你的Hellojsp Continuejsp文件放在你创建的文件目录中在你创建的目录中你还要创建一个叫做WEBINF 的文件夹将你的配置文件Webxml放在里面webxml文件如下
<?xml version="" encoding="UTF"?>
<!DOCTYPE webapp
PUBLIC "//Sun Microsystems Inc//DTD Web Application //EN"
">
<webapp />
接下来我们还需要在WEBINF下创建一个叫做lib的子目并将下列文件放进去
jstljar
saxpathjar
standardjar
mysqlconnectorjavastablebinjar (注意这个名称依据你的Mysql Connector/J版本不同可能会有所变化)