- 浏览: 258574 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (209)
- Ubuntu (16)
- Oracle (16)
- Struts 1.x (3)
- Hibernate (2)
- Struts 2 (13)
- 数据库修改 (1)
- 页面 (8)
- Flex (2)
- Openfire (1)
- 字符集 (1)
- WebService (1)
- 国际化 (1)
- 即时通讯 (6)
- 日记 (0)
- 操作系统 (2)
- 搜索 (1)
- MacOs (1)
- Mysql (2)
- 打包 (1)
- OpenVPN (1)
- XML (1)
- android (7)
- HttpClient (1)
- Grub (1)
- 好文章 (2)
- FTP (2)
- java (1)
- 事物 (1)
- maven (1)
- tomcat (1)
- MySQL BLOB系列 (1)
- Spring JPA (0)
最新评论
-
mikzhang:
3Q , 你的文章帮了我大忙, 但是我想知其所以然
oracle ojdbc6 使用 报错 -
树娟king:
你好 请问如何将svg 格式转换为相应可使用的 javascr ...
html jquery 制作地图 -
wslww007:
楼主,能方便价格扣扣吗?或者你加我扣扣 270835762
Openfire WebService接口实现发送消息 -
sd8089730:
太大了。囧
CF卡 本地磁盘模式转换 -
jisay:
我在DOS下,无法识别16G的CF卡呀?
CF卡 本地磁盘模式转换
推荐博客:http://blog.sina.com.cn/s/blog_4f925fc30101820u.html
怕博主把原文删了,所以在这里先保存一下、
SQL标签库
JSTL提供了与数据库相关操作的标签,可以直接从页面上实现数据库操作的功能,在开发小型网站是可以很方便的实现数据的读取和操作。本章将详细介绍这些标签的功能和使用方法。
SQL标签库从功能上可以划分为两类:设置数据源标签、SQL指令标签。
引入SQL标签库的指令代码为:
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
1 设置数据源
使用<sql:setDataSource>标签可以实现对数据源的配置。
【语法1】:直接使用已经存在的数据源。
<sql:setDataSource dataSource=”dataSource”[var=”name”]
[scope=”page|request|session|application”]/>
【语法2】:使用JDBC方式建立数据库连接。
<sql:setDataSource driver=”driverClass” url=”jdbcURL”
user=”username”
password=”pwd”
[var=”name”]
[scope=”page|request|session|application”]/>
【参数说明】:见表9-15
表9-15 <sql:DataSource>标签属性说明
参数名 |
说明 |
EL |
类型 |
必须 |
默认值 |
dataSource |
数据源 |
是 |
String Javax.sql.DataSource |
否 |
无 |
driver |
使用的JDBC驱动 |
是 |
String |
否 |
无 |
url |
连接数据库的路径 |
是 |
String |
否 |
无 |
user |
连接数据库的用户名 |
是 |
String |
否 |
无 |
password |
连接数据库的密码 |
是 |
String |
否 |
无 |
var |
指定存储数据源的变量名 |
否 |
String |
否 |
无 |
scope |
指定数据源存储的JSP范围 |
否 |
String |
否 |
page |
提示:是否必须是相对的,比如说如果使用数据源则,driver、url等就不再被使用。如果使用JDBC则要用到driver、url、user、password属性。
例如连接SQL Server需要进行如下配置:
Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url=” jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=pubs"
user=”sa”
password=””
使用<fmt:setDataSource>配置的代码如下:
<fmt:setDataSource driver=”com.microsoft.jdbc.sqlserver.SQLServerDriver”
url=”jdbc.microsoft:sqlserver://localhost:1433;DatabaseName=pubs”
user=”sa”
password=””>
如果连接其他数据库,只须把相对应的项修改即可。
提示:可以把数据连接的配置存入session中,如果再用到数据库连接只须配置使用DataSource属性。
2 SQL操作标签
JSTL提供了<sql:query>、<sql:update>、<sql:param>、<sql:dateParam>和<sql:transaction>这5个标签,通过使用SQL语言操作数据库,实现增加、删除、修改等操作。下面将介绍这5个标签的功能和使用方式。
1.<sql:query>标签
<sql:query>标签用来查询数据。
【语法1】:
<sql:query sql=”sqlQuery” var=”name” [scope=”page|request|session|application”]
[dataSource=”dateSource”]
[maxRow=”maxRow”]
[startRow=”starRow”]/>
【语法2】:
<sql:query var=”name” [scope=”page|request|session|application”]
[dataSource=”dateSource”]
[maxRow=”maxRow”]
[startRow=”starRow”]
>
sqlQuery
</sql:query>
【属性说明】:见表9-16。
表9-16 <sql:query>标签属性说明
参数名 |
说明 |
EL |
类型 |
必须 |
默认值 |
sql |
查询数据的SQL语句 |
是 |
String |
是 |
无 |
dataSource |
数据源对象 |
是 |
String Javax.sql.DataSoutce |
否 |
无 |
maxRow |
设定最多可以暂存数据的行数 |
是 |
String |
否 |
无 |
startRow |
设定从那一行数据开始 |
是 |
String |
否 |
无 |
var |
指定存储查询结果的变量名 |
否 |
String |
是 |
无 |
scope |
指定结果的作用域 |
否 |
String |
否 |
page |
使用<sql:query>必须指定数据源,dataSource是可选的,如果未给定该属性标签会在page范围内查找是否设置过数据源,如果没有找到将抛出异常。
一般情况下使用<sql:setDateSource>标签设置一个数据源存储在session范围中,当需要数据库连接时使用dataSource属性并实现数据库的操作。
<sql:query>的var属性是必须的用来存放结果集,如果没有指定scope范围则默认为page,即在当前页面我们可以随时输出查询结果。结果集有一系列的属性如表9-17所示。
maxRows和startRow属性用来操作结果集,使用SQL语句首先吧数据放入内存中,检查是否设置了startRow属性,如果设置了就从starRow指定的那一行开始取maxRows个值,如果没有设定则从第一行开始取。
表9-17 结果集参数说明
属性名 |
类型 |
说明 |
rowCount |
int |
结果集中的记录总数 |
Rows |
Java.util.Map |
以字段为索引查询的结果 |
rowsByIndex |
Object[] |
以数字为作索引的查询结果 |
columnNames |
String[] |
字段名称数组 |
limitedByMaxRows |
boolean |
是否设置了maxRows属性来限制查询记录的数量 |
提示:limitedByMaxRows用来判断程序是否收到maxRows属性的限制。并不是说设定了maxRows属性,得到结果集的limitedByMaxRows的属性都为true,当取出的结果集小于maxRows时,则maxRows没有对结果集起到作用此时也为false。例如可以使用startRow属性限制结果集的数据量。
结果集的作用就是定义了数据在页面中的显示方式。下面给出了结果集每个属性的作用。
q rowCount属性。该属性统计结果集中有效记录的量,可以使用于大批量数据分页显示。
q Rows属性。等到每个字段对应的值。返回的结果为:字段名={字段值···}
q rowsByIndex属性。常用得到数据库中数据的方式,从有效行的第一个元素开始遍历,到最后一个有效行的最后一个元素。
q columnNames属性。用于得到数据库中的字段名。
q limitedByMaxRows属性。用于判断是否受到了maxRows的限制。
【示例代码】:代码9.20给出了配置数据库连接,和使用<sql:query>查询数据以及结果集属性的使用。
代码9.20 数据库示查询示例:sqldemo01.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page contentType="text/html;charset=GBK"%>
<html>
<head>
<title>JSTL: SQL标签</title>
</head>
<body >
<h3>SQL标签库</h3>
<hr>
<sql:setDataSource driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"
user="sa" password="" />
<sql:query var="result" sql="select * from person" maxRows="2" startRow="1"/>
结果集的实质是:${result}<br>
得到的行数为:${result.rowCount}<br>
是否收到了maxRows的限制:${result.limitedByMaxRows}
<hr>
<table border="1" align="center">
<tr><c:forEach var="columnName" items="${result.columnNames}">
<td>
<c:out value="${columnName}"/>
</td>
</c:forEach> </tr>
<c:forEach var="row" items="${result.rowsByIndex}">
<tr>
<c:forEach var="column" items="${row}">
<td><c:out value="${column}"/></td>
</c:forEach>
</tr>
</c:forEach>
</table>
</body>
</html>
【代码解析】:
(1)配置数据源。使用<sql:dataSource>标签配置数据源,因为只共本页使用因此存储在默认的page范围中。
(2)使用<sql:query>标签进行数据库查询,并定义了maxRows和startRow属性。并把结果集存储于作用于page范围的result变量。使用${result}输出可以发现结果集就是一个ResultImpl类。
提示:在进行数据源配置时程序不会检查数据库连接是否配置正确,直接根据设定的数据库及连接访问,如果没有找到则抛出操作的表异常,因此要放如<c:catch></c:catch>同时在编写程序时一定要注意数据源是否配置正确。
(3)使用结果集的rowCount属性得到记录的总量。代码为:
${result.rowCount}
(4)使用结果集的limitedMaxRows属性判断是否收到maxRows设定的影响。代码为:
${result.limitedMaxRows}
(5)从结果集中得到数据库中定义的所有的字段。${result.columnnames}得到的结果是一个字符串数组,因此需要使用<c:forEach>循环输出。代码如下:
<c:forEach var="columnName" items="${result.columnNames}">
<c:out value="${columnName}"/>
</c:forEach>
(6)从结果集中得到所有的值。首先要遍历每一行,然后遍历每一行中的元素,因此需要循环嵌套。代码如下:
<c:forEach var="columnName" items="${result.columnNames}">
<c:out value="${columnName}"/>
</c:forEach>
<c:forEach var="row" items="${result.rowsByIndex}">
<c:forEach var="column" items="${row}">
<c:out value="${column}"/></td>
</c:forEach>
</c:forEach>
提示:在代码解析中省略了html元素表格等标签的元素,本示例适用于任何数据库表,只要把数据库的URL、使用的JDBC进行相应的配置和操作的数据表名进行相应的修改即可看到结果。
2.<sql:update>标签
<sql:update>用来实现操作数据库如:使用create、update、delete和insert等SQL语句,并返回影响记录的条数。
【语法1】:SQL语句放在标签属性中。
<sql:update sql=”SQL语句” [var=”name”] [scope=”page|request|session|application”]
[dateSource=”dateSource”]/>
【语法2】:SQL语句放在标签体内。
<sql:update [var=”name”] [scope=”page|request|session|application”]
[dateSource=”dateSource”]
>
SQL语句
</sql:update>
【参数说明】:见表9-18。
表9-18 <sql:update>标签属性说明
参数名 |
说明 |
EL |
类型 |
必须 |
默认值 |
sql |
查询数据的SQL语句 |
是 |
String |
是 |
无 |
dataSource |
数据源对象 |
是 |
String Javax.sql.DataSoutce |
否 |
无 |
var |
指定存储查询结果的变量名 |
否 |
String |
是 |
无 |
scope |
指定结果的作用域 |
否 |
String |
否 |
page |
提示:<sql:update>标签的属性同<sql:query>标签的属性相比只减少了maxRows和startRow2个属性。其他参数用法一样。
使用<sql:update>可以实现数据表的创建、插入数据、更行数据、删除数据。使用时只须在标签中放入正确的SQL语句即可,同时要捕获可能产生的异常。本节只对一个简单的插入操作进行说明。
【示例代码】:代码9.21实现了创建一个表、实现数据的插入。
代码9.21 数据库创建、数据插入示例:sqldemo02.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page contentType="text/html;charset=GBK"%>
<html>
<head>
<title>JSTL: SQL标签</title>
</head>
<body >
<h3>SQL标签库</h3>
<hr>
<sql:setDataSource driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"
user="sa" password="" />
实现数据库表的创建<br>
<sql:update var="result1">
create table c_user (
id int primary key ,
name varchar(80),
sex varchar(80),
)
</sql:update>
<c:catch var="error">
<sql:update var="result2" >
insert c_user values(05,'Linda','女')
insert c_user values(01,'Rom','男' )
</sql:update>
影响的记录数为:<c:out value="${result2}"></c:out>
</c:catch>
<c:out value="${error}"></c:out><br>
<hr>
</body>
</html>
【代码解析】:
(1)配置数据源。
(2)使用<sql:update>标签创建一个新表。
(3)向表中插入两行数据。
提示:本示例也没有针对固定的表进行操作,在使用时直接运行即可,如果使用的是其他数据库,需要更改数据源配置和SQL语句部分修改。
使用<sql:update>的var属性记录结果是不准确的,尤其是在一个标签中使用多条sql语句只能记录下第一条。
3.<sql:param>标签
<sql:param>标签用于动态的为SQL语句设定参数,同<sql:query>标签共同使用。可以防止SQL注入作用类似于java.sql.PreparedStatement。
【语法1】:
<sql:param value=”value”/>
【语法2】:
<sql:param>
Value
</sql:param>
【参数说明】:
value的作用为SQL中的参数赋值。
【使用示例】:
<sql:query var=”result”>
select * from person where 序号=?
<sql:query>
4.<sql:dateParam>标签
<sql:dataParam>标签主要用于为SQL标签填充日期类型的参数值。
【语法】:
<sql:dateParam value=”date”[type=”timestamp|time|date”]/>
【参数说明】:
q value属性:java.util.Date类型的参数。
q type属性:指定填充日期的类型timestamp(全部日期和时间)、time(填充的参数为时间)、date(填充的参数为日期)。
5.<sql:transaction>标签
<sql:transaction>标签提供了数据操作的一种安全机制(即事务回滚),当操作数据库的某条SQL语句发生异常时,取消<sql:transaction>标签体中的所有操作,恢复原来的状态,重新对数据库进行操作。
【语法】:
<sql:transaction [dataSource=”dataSource”]
[isolation=”read_committed|read_uncommitted|repeatable|serializable”]
>
<sql:query>
<sql:uptade>
</sql:transation>
发表评论
-
Struts2 国际化
2012-08-24 16:42 732<constant name="struts. ... -
JSTL FN标签
2012-06-05 15:44 566<%@ taglib uri="http:// ... -
Log4j配置每天生成
2012-03-27 14:38 1184YOYO posted @ 2008年11月06日 20:2 ... -
ValueStack与ContentMap
2012-02-08 13:24 840在方法 <action name="zi ... -
Struts2相关细节
2012-02-07 09:18 678this.getRequest().getRequestDis ... -
optiontransferselect 标签
2011-12-09 13:26 1286创建一个选项转移列表组件, 由两个<select ... ... -
JQuery Ajax用法
2011-10-14 23:13 687$.ajax({ type:"POST&q ... -
拼音转换
2011-02-28 11:18 879一个强大的中文转换拼音的开源组件。 package co ... -
Struts2 blob(转)
2011-02-27 22:15 1042最近在项目中第一次使用 struts2,在将文件上传到数据库( ... -
Struts2上传下载(转)(二)
2011-02-27 22:13 846文件上传: 1,upload ... -
Hibernate3 struts2 spring2 clob操作
2011-02-27 22:12 623对象的hbm配置文件中 <property name= ... -
Struts2上传下载(转)
2011-02-27 22:11 7941. 文件上传的原 ...
相关推荐
3. **JSTL SQL标签** SQL标签库允许在JSP页面上执行数据库查询,但现代Web应用通常更倾向于使用DAO层来处理这些操作,以保持MVC架构的清晰性。 4. **JSTL XML标签** XML标签库支持XML文档的处理,包括XPath表达式...
JSTL SQL标签库** SQL标签库用于执行数据库查询、事务管理等操作。这些标签包括: - `<sql:query>`:执行SQL查询语句。 - `<sql:update>`:执行SQL更新语句。 - `<sql:transaction>`:管理数据库事务。 **4. ...
JSTL SQL标签** - **<sql:query>**:执行SQL查询。 - **<sql:update>**:执行SQL更新语句。 - **<sql:param>**:传递参数到SQL语句。 - **<sql:transaction>**:管理数据库事务。 **6. JSTL XML标签** - ****:...
4. JSTL SQL标签库: 支持执行SQL查询、更新、删除和插入操作。`<sql:query>`用于执行SQL查询,结果可以存储在JSP作用域中供后续使用。 5. JSTL XML标签库: 处理XML文档,包括解析、操作和转换XML。`<x:parse>`...
JSTL SQL标签库** JSTL SQL库提供了一组与数据库交互的标签,包括执行SQL查询、更新、插入和删除操作。然而,由于安全和性能原因,实际项目中较少使用,通常推荐使用Java Persistence API (JPA) 或 Hibernate 这样...
3. **JSTL SQL标签库** 支持数据库查询和操作,包括执行SQL查询、处理结果集等。 4. **JSTL XML标签库** 处理XML文档,如解析、创建和操作XML数据。 5. **配置JSTL** 要在JSP项目中使用JSTL,首先需要将`jstl-...
JSTL的SQL标签库允许开发者执行数据库查询、更新、插入和删除操作,尽管在现代Web应用中,这些功能通常由持久层框架如Hibernate或JPA来实现,但在一些简单的场景下,JSTL SQL标签库仍具有一定的实用性。 为了在项目...
3. **JSTL SQL标签库**: 提供了与数据库交互的功能,如`<sql:update>`执行SQL更新,`<sql:query>`执行查询,`<sql:resultSet>`处理查询结果。 4. **JSTL XML标签库**: 用于处理XML文档,如`<x:parse>`解析XML,`...
5. **JSTL SQL标签库**: 用于执行数据库查询和操作,虽然现在不推荐在JSP中直接进行数据库操作,但在过去,`<sql:query>`和`<sql:update>`等标签被广泛使用。 **相关jar文件** - **jstl.jar**: 包含了JSTL的核心...
JSTL 的核心功能包括表达式语言(EL)、I/O、XML、SQL 和国际化标签。在本源码学习中,我们将重点探讨 JSTL 的使用方法和常见应用场景。 **1. JSTL 表达式语言(EL)** JSTL EL 是一个强大的表达式语言,它允许在 ...
标题中的“jstl sqlserver mysql驱动包”指的是一个包含与Java服务器页面标准标签库(JSTL)、SQL Server数据库以及MySQL数据库相关的驱动程序的压缩文件。这个压缩包为开发者提供了一站式解决方案,方便他们在Java...
**JSTL SQL标签库详解:** - `<sql:update>`:执行SQL更新语句。 - `<sql:query>`:执行SQL查询,并获取结果集。 - `<sql:param>`:传递参数给SQL语句。 - `<sql:transaction>`:处理SQL事务。 **JSTL Functions库...
**JSTL SQL标签库** JSTL SQL库允许开发者在JSP页面中执行SQL查询。通过`<sql:query>`、`<sql:update>`、`<sql:delete>`、`<sql:insert>`等标签,可以直接在数据库上执行CRUD操作。然而,由于安全性和性能的原因,...
JSTL sql标签库** sql库用于执行数据库操作,包括连接数据库、执行SQL语句、处理结果集等,如: - `<sql:query>`:执行SQL查询 - `<sql:update>`:执行SQL更新 - `<sql:params>`:传递参数到SQL语句 **5. JSTL xml...
**五、JSTL SQL标签库** 用于与数据库交互,如 `<sql:query>` 执行SQL查询, `<sql:update>` 更新数据, `<sql:params>` 传递参数。 **六、JSTL XML标签库** 1. ****: 解析XML文档。 2. ****: 使用XSLT转换XML...
JSTL主要由两个核心部分组成:Core(核心)标签库和JSTL SQL标签库。在"JSTL - jar包"中,通常会包含`standard.jar`和`jstl.jar`这两个文件。** **`standard.jar`是核心标签库,提供了处理基本页面逻辑的功能,如...
5. **JSTL SQL标签库**:用于执行SQL查询和操作数据库,如`<sql:update>`、`<sql:query>`,但现代开发中由于安全和性能原因,不推荐使用。 在Eclipse中,导入JSTL的jar包步骤如下: 1. 首先,你需要下载JSTL的库。...
1. **JSP SQL 标签库**:在JSP中,SQL标签库(如JSTL SQL)简化了与数据库的交互。JSTL(JavaServer Pages Standard Tag Library)是一组标准标签库,包括SQL、Core、XML、Function等多个标签集。在本投票系统中,`...
虽然在现代开发中,通常推荐使用更高级的框架如Hibernate或JPA,但在一些简单场景下,JSTL SQL标签库依然实用。例如`<sql:update>`, `<sql:query>`, `<sql:transaction>`等。 **JSTL 1.2版本的改进与特点** 1. **...