JSTL是一个已经被标准化的标记库集合 她支持迭代 条件 XML文档的解析 国际化 和利用SQL与数据库交互的功能 JSTL主要包括四个基本部分的标记库 Core XML 国际化 和对SQL的支持 由于这篇文章的主要是以其中的SQL部分的应用来快速了解JSTL 所以我们这篇文章只介绍了 Core和SQl标签库的一些基本功能
这项技术简单而且功能强大 足以和PHP ColdFusion一较高下 他在拓展Java的应用领域方面有足够的能力 这些领域不只包括大型的可再升级的Web应用程序 对于仅拥有简单主页的Web程序一样没问题 这允许你在建立站点的时候可以避免那些经常考虑的XML的集成和与数据库的连接 JSTL的关键点就是简单易用 还有 那就是JSTL是基于JSP构建的 他允许我们使用所有的Java技术
开始之前 我们需要弄清楚怎样才能运行JSTL 由于是基于JSP技术的 所以我们运行它就需要一个能够编译JSP的容器 这里我们使用免费的JSP容器 TOMCAT() 至于如何安装这个产品已经超出了本文所讲述的范围 毫无疑问 这个软件产品现在已经很普及了 而且关于如何安装的文档资料也是很多 这里假设您已经安装并成功配置了这个容器 你只需再安装JSTL运行所需文件它可以从这里下载你不需要真正的安装它 只需要将其中的 JAR文件包含到你的应用程序的WEB INF/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应用程序中的/Web INF/lib目录中
在创建程序代码之前 你需要创建并填写数据库表 关于这方面的主题文章也相当广泛 具体如何 *** 作超出了本文的范围 这里我推荐给你我们上面提及的一个可视化的管理工具 MySQL Control Center 你可以用他来创建一个用来运行程序的测试用户 数据库以及创建一个测试表 并填写若干记录 关于登陆名及密码数据库名称这些配置环境参数 你应该记住他们 稍后需要应用到我们的代码中
现在 你就可以准备创建自己的第一个JSTL应用程序了它需要我们做下面一些事情
整个实例程序代码包括两个文件Hello jsp和 Continue jsp
Hello jsp文件允许你输入数据库名称 登陆名称 登陆密码 数据库表名 Continue jsp 接受Hello jsp中的数据信息并且连接数据库 并对数据库中的表执行一个Select请求
下面是这个系统所有的代码文件 我将逐一进行解释 这些代码相当简单 对于代码的结构 我相信你即使没有我的解释你也能理解的
: <! Hello jsp >
: <>
: <head>
: <title>Hello</title>
: </head>
: <body bgcolor="#ffffff">
: <h >Please enter all necessary information and click OK </h >
: <form method="post" action="Continue jsp">
: <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>
: </>
(请注意文本左侧的数字只是为你提供一些标记信息 你不需要将他们输入到你的代码文件中 )
上面就是所有Hello jsp的源代码 很惊奇吧 他仅仅是纯粹的HTML代码 就这么简单 我想应该没有注释的必要了 我之所以将这些代码片段包含进文章中就是为了展示一下JSTL集成到那些需要快速扩充额外功能的HTML站点中是多么的简单 让我再为你展示一下Continue jsp的全部代码 看过之后 你就会对 JSTL有些了解了
: <! Continue jsp >
: <%@ taglib prefix="c" uri="%>
: <@ taglib prefix="sql" uri="%>
: <c:set var="h" value="localhost"/>
: <c:set var="l" value="${param login}"/>
: <c:set var="p" value="${param password}"/>
: <c:set var="d" value="${param database}"/>
: <c:set var="t" value="${param table}"/>
: <>
: <head>
: <title>Continue</title>
: </head>
: <body bgcolor="#ffffff">
: <sql:setDataSource driver=" mysql jdbc Driver"
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="${result rowsByIndex}">
: <c:out value="${row[ ]}"/><br>
: </c:forEach>
: </body>
: </>
(请注意文本左侧的数字只是为你提供一些标记信息 你不需要将他们输入到你的代码文件中 )
这就是我们所有的代码了 是不是非常不错?现在我门来解释一下上面这些代码的作用
行 是 HTML 的注释说明
行 这些 JSP 标签是为了引用外部的 标签库 更确切的说这里是引用了JSTL库中的 Core 和SQL标签库部分 我们为他们都设置了前缀名称 以便于我们通过这些前缀名称访问被引入的标签库中的功能方法
行 正如 Hello jsp 真正运行的样子 他将请求continue jsp Continue jsp获得请求后就需要得到并解析来自Hello jsp的若干变量 我们使用了这样的方式${param YOUR_VAR} 在第 行<c:set标签 将变量${h}设置为 "localhost" 第五行变量${l}将获取我们在 Hello jsp中的login文本域中输入的信息 第 行的变量将分别获得来自Hello jsp中用户所输入的密码 数据库名称 数据表名称
行 是一些我经常用来常见HTML网页头的简单的HTML标签 马上 重要的功能马上要到了
行 我们试图用我们先前获得的mysql驱动程序( mysql jdbc Driver)建立数据库连接 在URL中 我们指明数据库连接所需要的参数 象数据库名称 主机名称 登陆名及登陆密码 依此 我们可以用其它任何的JDBC驱动程序连接其相对的数据库 如果我们需要连接其他的SQL数据库 只需更改这个 URL就够了
行 这里我们执行了一个Select 查询 请特别注意第 行 我们使用了另一个JSTL功能函数<c:out 用来输出我们所获取的数据表名称 这里我们同样可以使用其他的SQL命令 比如说 INSERT DELETE 等等 要执行这些没有返回值的查询请求 你就需要使用<sql:update JSTL功能函数了 他可以直接执行他们就象<SQL:query一样 只是执行它是不需要特别指定结果变量来存储语句执行返回的结果
行 既然我们执行了上面的SELECT查询语句 我们就应该把他的返回结果显示出来 <c:forEach 就是JSTL 中一个具有迭代功能的函数 执行它时 我们通过${result rowsByIndex}将返回的每一个数据行信息返回给变量${row} 紧接着在第 行 我们通过<c:out value="${row[ ]}"/>显示返回的每个数据行的第一个数据列中的值 只要你的数据表中包含的字段 你都可以通过改变变量 ${row}中的数字大小来对请求表中的任意一个字段中的值对他们进行访问
行 是HTML 页脚
在你亲自创建JSTL应用程序过程中 可能你还没有发现它有多么的强大 但你应该能够意识到JSTL的功能函数的简单和高效性 试想有了JSTL 整合出一个基于SQL的新闻专栏是何等的快速 集成你现有的web站点是何等的容易
很好 我们的代码很容易理解的 即使一个非专业程序员的话 打个比方就算是一个设计师也能够读懂它 理解它 还可能进行部分的修改 起码是页面布局上的修改
正如我们开始的时候所提到的 为了使我们的JSTL代码正常的运行 我们需要安装Mysql Connector/J 中的JAR 文件 当然还有 JSTL 因为我们使用了Tomcat这个JSp 容器 你需要在Tomcat的文件目录Webapps下创建你自己的文件夹 将你的Hello jsp Continue jsp文件放在你创建的文件目录中 在你创建的目录中你还要创建一个叫做WEB INF 的文件夹 将你的配置文件Web xml放在里面 web xml文件如下
<?xml version=" " encoding="UTF "?>
<!DOCTYPE web app
PUBLIC " //Sun Microsystems Inc //DTD Web Application //EN"
">
<web app />
接下来我们还需要在WEB INF下创建一个叫做lib的子目 并将下列文件放进去
jstl jar
saxpath jar
standard jar
lishixinzhi/Article/program/Java/JSP/201311/20216
如下:
<%@ page language="java" contentType="text/html charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${1 * 2}
</body>
</html>
运行效果:
你好,两个jsp文件,test02.jsp,test03.jsp.代码如下:<%@ page contentType="text/htmlcharset=gb2312" %>
<%
String num = (String)request.getParameter("num")
try{
int n = Integer.parseInt(num)
if(n%2==0)
request.setAttribute("type","偶数")
else
request.setAttribute("type","奇数")
request.getRequestDispatcher("test03.jsp").forward(request,response)
}catch(Exception e){
e.printStackTrace()
}
%>
<%@ page contentType="text/htmlcharset=gb2312" %>
<% String type = (String)request.getAttribute("type")%>
<html>
<head><title>页面一</title></head>
<body>
<form action="test02.jsp" method="get">
请输入一个数字:<input type="text" name="num" />
<input type="submit" value="提交" />
</form>
${type }
</body>
</html>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)