今天,我來講解下一些很重要的jstl標簽,如果運用得當,可以大大的簡化數據庫的操作,減少代碼量。首先sql標簽可以實現包括查詢、更新、事務處理和設置數據源等強大的功能。下面分別講述。
<sql:setDataSource>
<sql:query>
<sql:update>
<sql:transaction>
<sql:param>
<sql:setDataSource>
語法:<sql:setDataSource>用來設置數據源,可以通過scope設置使用范圍,如page、application、session等。有兩種方式可以設置數據源,一種是直接使用在web中配置的數據源,只要指定jndi名就可以了(這個就不要我多講了吧,呵呵),第二種是指定所有的連接屬性。
<sql:setDataSource
{dataSource=”dataSourceName” | url=”jdbcurl”
[driver=”driverClassName”]
[user=”userName”]
[password=”password”]
[var=”varName”]
[scope=”{page|session|request|application}”]/>
舉例:sql_datasource.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
<title>JSTL:<sql:setDataSource>的使用</title>
</head>
<body bgcolor="#FFFFFF">
創建普通的數據源:<br>
<sql:setDataSource
var="ds1"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jstlTest"
user="jstl"
password="jstl"
/>
從jndi名稱空間中獲得一個數據源。<br>
<sql:setDataSource
var="ds2"
dataSource="jdbc/ds2"
/>
</body>
</html>
<sql:query>
作用:不用說都知道了,數據庫操作中最頻繁的查詢。
語法:a、沒有body
<sql:query sql=”sqlQuery”
Var=”varName” [scope=”{page|session|request|application}”]
[dataSource=”dataSourceName”]
[maxRows=”maxRows”]
[startRow=”startRow”] />
b、有一個body ,并在body 中指定了查詢需要的參數
<sql:query sql=”sqlQuery”
Var=”varName” [scope=”{page|session|request|application}”]
[dataSource=”dataSourceName”]
[maxRows=”maxRows”]
[startRow=”startRow”] >
<sql:param> actions
</sql:query>
c、有body,并且可以指定可選的參數(< sql:param >在后面講述)
<sql:query sql=”sqlQuery”
Var=”varName” [scope=”{page|session|request|application}”]
[dataSource=”dataSourceName”]
[maxRows=”maxRows”]
[startRow=”startRow”] >
query
optional<sql:param> actions
</sql:query>
舉例:sql_query.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=gb2312" language="java" %>
<html>
<head>
<title>JSTL:<sql:query>的使用</title>
</head>
<body bgcolor="#FFFFFF">
<sql:setDataSource
var="ds2"
dataSource="jdbc/ch12"
/>
第一種查詢:<hr>
<sql:query var="query" dataSource="${ds2}">
SELECT * FROM sql_test
</sql:query>
<table border="1">
<c:forEach var="row" items="${query.rows}">
<tr>
<td>Name: <c:out value="${row.id}"/></td>
<td>mobile: <c:out value="${row.power}"/></td>
</tr>
</c:forEach>
</table>
<hr>
第2種查詢:<hr>
<sql:query var="query2" sql="SELECT * FROM sql_test where id=?" dataSource="${ds2}">
<sql:param value="01"/>
</sql:query>
<table border="1">
<c:forEach var="row" items="${query2.rows}">
<tr>
<td>Name: <c:out value="${row.id}"/></td>
<td>mobile: <c:out value="${row.power}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>