JSP~~JSTL~~SQL标签库

9 篇文章 0 订阅

JSTL 标准标签库还提供了数据库操作的标准标签,使得 Web 开发者不再需要在 JSP 页面中嵌入脚本语言或者编写 JavaBean 类来连接数据库,使得页面风格更加统一和易于维护。用于数据库操作的主要标签包括如下:

  • <sql:setDataSource>:该标签用于数据库连接设置。
  • <sql:transaction>:把其他<sql:query>以及<sql:update>操作放置在一个事务中。
  • <sql:query>:进行数据库查询操作。
  • <sql:update>:进行数据库更新操作。
  • <sql:param>:进行参数的设定。
  • <sql:dateParam>:进行日期型参数的设置。

下面通过一个简单的案例来介绍JSTL的SQL标签库的使用

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql"    prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page contentType="text/html;charset=GBK"%>
<%@ page isELIgnored="false" %>
<html>
<head>
  <title>JSTL: SQL</title>
</head>
<body bgcolor="#FFFFFF">
<h3>SQL 标签库</h3>
<hr>
<%
//设定 newName 变量,并保存在 request 范围内
request.setAttribute("newName", new String("Jake")); 
//设数据库连接驱动到 session 范围的 myDbDriver 变量中
session.setAttribute("myDbDriver","com.mysql.jdbc.Driver");
//设定数据库连接到 session 范围的 myDbUrl 变量中
session.setAttribute("myDbUrl","jdbc:mysql://localhost:3306/jspdbyjydb");
session.setAttribute("myDbUserName","root");//设定数据库用户名
session.setAttribute("myDbPassword","admin");//设定数据库用户密码
%>
<!-- 首先设定数据库连接 -->
<sql:setDataSource 
   var="example"   driver="${sessionScope.myDbDriver}"
   url="${sessionScope.myDbUrl}"   user="${sessionScope.myDbUserName}"
   password="${sessionScope.myDbPassword}"
/>
<!-- 把数据库查询和更新操作放在一个事务中 -->
<sql:transaction dataSource="${example}">
<!-- 使用sql:update标签创建一个数据库表 mytable -->
<sql:update var="newTable"> 
create table mytable (nameid int primary key,name varchar(80)  )
</sql:update>

<!-- 向 mytable 表中插入数据 -->
<sql:update var="updateCount">INSERT INTO mytable VALUES (1,'Tom')</sql:update>
<!-- 向 mytable 表中插入数据,并使用sql:param标签插入参数值 -->
<sql:update var="updateCount">INSERT INTO mytable VALUES (?,'Johnson')<sql:param value="2"/></sql:update>
<!-- 向 mytable 表中插入数据 -->
<sql:update var="updateCount">INSERT INTO mytable VALUES (?,?)<sql:param value="3"/>
<sql:param value="${newName}"/></sql:update>

<!-- 查询数据库表 mytable 中所有内容 -->
<sql:query var="deejay">SELECT * FROM mytable</sql:query>
</sql:transaction>

<!-- 对返回的 Result 结果中的每行的列进行迭代处理 ,取出每一列-->
<table border="1">
<c:forEach var="row" items="${deejay.rowsByIndex}">
    <tr><c:forEach var="column" items="${row}">
        <td><c:out value="${column}"/></td>
    </c:forEach></tr>
</c:forEach>
</table>

<!-- 没有指定每行的列索引,注意与上面的不同, 这里可以指定取出哪一列-->
<table border="1">
<c:forEach var="row" items="${deejay.rows}">
    <tr>
      <td><c:out value="${row.nameid}"/></td>
      <td><c:out value="${row.name}"/></td>
    </tr>
</c:forEach>
</table>

<!-- 把 mytable 数据库表删除 -->
<sql:update var="newTable" dataSource="${example}">
  drop table mytable
</sql:update>
</body>
</html>

程序说明:

首先进行了数据库连接的各参数的设定,并把它们存储在 session 范围内的变量中,这样有利于在整个 Web 应用中的其他页面中进行调用。

把整个的数据库表的创建、插入以及查询操作放置在<sql:transaction>标签设定的一个事务中。

在获取查询信息时,本实例使用了两种方法,前一种方法使用索引迭代取出行中每个列的数据;第一种方法没有使用索引,而是通过指定行中的特定列来取得数据。

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值