先来搭下环境,jstl的包当然是不能少的拉。其次,下载必须的标签库或者是java的标签库文件。将jstl 1.1.jar加到class中,(这就不要我详细的讲了吧),然后将标签库放到WEB-INF下或则将java的标签库文件(*.jar)放到WEB-INF\lib下,就可以写测试代码了。
first_jstl.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<c:set var="userName" value="hellking"/>
<c:set value="16" var="age"/>
欢迎您,<c: out value="${userName}"/><hr>
<c:forEach var="i" begin="1" end="5">
<font size=${i}>${i}</font>
<br>
</c:forEach>
<c:if test="${age<18}">
对不起,你的年龄过小,不能访问这个网页◎!
</c:if>
<br>
</body>
</html>
web.xml
(使用java的标签库文件*.jar)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">
<display-name>jstl test</display-name>
<description>
jstl test
</description>
</web-app>
(使用标签库文件*.tld)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt<;/taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-rt<;/taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core<;/taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt<;/taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql<;/taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-rt<;/taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x<;/taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x-rt<;/taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
</web-app>
好了,一个最简单的包含有jstl的页面设计完成了。下面测试。
http://localhost:8080/jstl/frist_jstl.jsp
页面输出结果:
欢迎您,hellking
1
2
3
4
5
对不起,你的年龄过小,不能访问这个网页◎!
JSTL详解(二)
一般用途的标签
在JSTL中,一般用途的标签只要是指具有输出,设置变量,和错误处理等功能的标签,他们在jsp中使用很频繁,它们有:
l
<c: out>
l
<c:set>
l
<c:remove>
l
<c:catch>
下面,我来讲述一下他们的作用:
<c: out>
它是一个输出的标签,负责把计算出的结果输出到jspwriter,就跟调用out.println()基本一样。没有BODY的时候,使用下面的语法:
<c: out value=”value” [escapeXml]=”{true|false}” [default=”defaultValue”]/>
有BODY的时候,使用下面的语法:
<c: out value=”value” [escapeXml]=”{true|false}” >
这里是BODY,可以是任何合法的jsp或者是html代码。
</c: out>
注意,escapeXml的作用是是否将代码交给xml解析器解释,true为交给xml解析器解释,false为交给浏览器解释,见红色部分代码
举例:c_out.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL: c: out的使用</title>
</head>
<body bgcolor="#FFFFFF">
<hr>
<c:set var="sessionAttr" value="sessionValue" scope="session"/>
<c:set var="pageAttr" value="pageValue" scope="page"/>
<c:set var="requestAttr" value="requestValue" scope="request"/>
<c: out value="以下输出的是前面设置的属性<br>" escapeXml="false"/>
<c: out value="${sessionAttr}"/>
<c: out value="${pageAttr}"/>
<c: out value="${requestAttr}"/>
<c: out value="${test_nodef}" default="没有test_nodef这个变量"/>
</html>
<c:set>
这个标签用于在某个范围(page,request,session,application)里面设置特定的值(默认为page),或者设置某个已经存在的javabean的属性。类似于<%request.setAttribute(“name”,value)%>
语法:
1、使用value属性设置一个特定范围里面的属性:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”]/ >
2、使用value属性设置一个特定范围里面的属性,带有BODY:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”] >
Body content
</c:set>
3、设置某个特定对象的一个属性:
<c:set value=”value” target=”target” property=”propertyName”/ >
4、设置某个特定对象的一个属性, 带有BODY:
<c:set value=”value” target=”target” property=”propertyName” >
Body content
</c:set>
举例:c_set.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<jsp:useBean id="user" class="com.j2ee14.ch12.User"/>
<html>
<head>
<title>JSTL:的使用c:set</title>
</head>
<body bgcolor="#FFFFFF">
<hr>
设置一个属性,然后输出它<br>
<c:set var="maxCount" value="100"/>
<c: out value="${maxCount}"/>
<hr>设置属性时,把它的值放在标签的body中。
<c:set var="password">
ksdjfxsdf234234
</c:set>
<c: out value="${password}"/>
<hr>设置javaBean的属性,然后输出这些属性值:
<c:set value="hellking" target="${user}" property="userName"/>
userName=<c: out value="${user.userName}"/>
<hr>设置属性,并且指定它们的范围,属性的默认范围是page。
<c:set value="20" var="maxIdelTime" scope="session"/>
<c:set value="next.jsp" var="nextPage" scope="page"/>
</body>
</html>
<c:remove>
它的作用是删除某个变量或者属性。类似于<%session.removeAttribute(“name”)%>,它的语法是:<c:remove var=”varName” [scope= “{page|request|session|application}”]/ >
举例:c_remove.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL:c:remove的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:set value="10000" var="maxUser" scope="application"/>
<c:set value="10" var="count" scope="session"/>
maxUser=<c: out value="${maxUser}"/><br>
count=<c: out value="${count}"/>
<hr>调用c:remove...
<c:remove var="maxUser" scope="application"/>
<c:remove var="count"/>
调用了c:remove后,参数值为:
maxUser=<c: out value="${maxUser}"/>,
count=<c: out value="${count}"/>,
</body>
</html>
<c:catch>
它的作用是捕捉由嵌套在它里面的标签所抛出来的异常。类似于<%try{}catch{}%>,它的语法是:<c:catch [var=”varName”]>nested actions</c:catch>
举例:c_catch.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL:catch的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:catch var="error">
<%
Integer.parseInt("sdkfj");
%>
</c:catch>
<hr>异常:
<c: out value="${error}"/>
<hr>异常 exception.getMessage=
<c: out value="${error.message}"/>
<hr> 异常exception.getCause=
<c: out value="${error.cause}"/>
</body>
</html>
JSTL详解(三)
条件标签包括以下几种:
l
<c:if>;
l
<c:choose>;
l
<c:when>;
l
<c: otherwise>;
下面,我来分别介绍:
l
<c:if>; 它用来做条件判断,功能类似jsp中的<%if(boolean){}%>
语法:
1、无body的情况
<c:if test=”testCondition” var=”varName” [scope=“{page|request|session|application}”]/>
2、有body的情况
<c:if test=”testCondition” var=”varName” [scope=“{page|request|session|application}”]>
Body内容
</c:if>
举例:c_if.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL:c:if的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:set var="count" value="100"/>
<c:if test="${count>78}">
count>78
</c:if>
</body>
</html>
l
<c:choose>; 它是用于条件选择,和<c:when>,<c: otherwise>一起使用,它的条件选择是排斥性的,相当于jsp中的<%switch(i){case 0: … case 1:… default :}%>,也可以完成<%if{}…else if{}….else if{} else{} %>的功能
语法:<c:choose>
Body内容(<c:when>,<c: otherwise>)
</c:choose>
注意:它的body内容只能是由以下的元素组成:
1.
空格;
2.
0个或多个<c:when>子标签,<c:when>必须在<c: otherwise>子标签之前出现;
3.
0个或多个<c: otherwise >子标签
l
<c:when> 它是<c:choose>的一个分支
语法:
<c:when test=”testCondition”>
Body内容
</c:when>
注意:它有两个限制:
1.
必须以<c:choose>作为它的父标签
2.
必须在<c: otherwise>标签之前出现
l
<c: otherwise>他代表了<c:choose>的最后选择相当于jsp的<%switch(i){case 0: … case 1:… default :}%> 中的default语句。
语法:
<c: otherwise>
Conditional block
</c: otherwise>
它的使用有两个限制:
1.
必须以<c:choose>作为它的父标签;
2.
必须以<c:choose>的最后分支方式出现;
<c:choose>,<c: otherwise>,<c:when>举例:c_choose.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<c:set var="count" value="100"/>
<html>
<head>
<title>JSTL:c:choose的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:choose>
<c:when test="${count <=0}">
<font color="blue">
</c:when>
<c:when test="${count<=60&&count>0}">
<font color="red">
</c:when>
<c: otherwise>
<font color="green">
</c: otherwise>
</c:choose>
count的值是:<c: out value="${count}"/>
</font>
</body>
</html>
JSTL详解(四)
迭代标签的使用
如果使用scriptlets,那么,我们经常使用Iterator或者Enumeration来进行迭代,如:
Iterator it = collection.iterator();
while(it.hasNext()){
SomeBean someBean = (SomeBean)it.next();
out.println(someBean.getXXX());
…………..
}
在前面的一次中,我们开发过一个迭代标签,JSTL中也提供了对迭代进行支持的标签,并且,他的功能比上一章的强大的多。JSTL中的迭代标签有两个:
l <c:forEach>;
l <c:forTokens>;
1、<c:forTokens>专门处理TokenString的迭代,可以指定一个或者是多个分隔符。由于他们使用的很少,在这里就不介绍了。
2、<c:forEach>是最常用的,他几乎能够完成所有的迭代任务,就象jsp中的for(int i=j;i<k;i++)下面我来详细介绍。(注意,“[]”里面的是可选条件)
语法:a、在Collection中迭代:
<c:forEach [var=”varName”] items=”collection” [varStatus=”varStatusName”]
[begin=”begin”] [end=”end”] [step=”step”]>
Body 内容
</c:forEach>
b、迭代固定的次数:
<c:forEach [var=”varName”] [varStatus=”varStatusName”]
begin=”begin” end=”end” [step=”step”]>
Body 内容
</c:forEach>
举例:c_forEach1.jsp(在Collection中迭代)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<%@ page import="java.util.*,com.j2ee14.ch12.User"%>
<%
Collection users_c=new ArrayList();
for(int i=0;i<3;i++)
{
User user=new User();
user.setUserName("foo"+i);
user.setPassword("foo"+i);
users_c.add(user);
}
session.setAttribute("users",users_c);
%>
<html>
<head>
<title>JSTL:c:forEach的使用之一</title>
</head>
<body bgcolor="#FFFFFF"><center>
<h4>迭代某个collection中的元素。</h4>
<table border=1>
<tr><td>用户名</td><td>密码</td></tr>
<c:forEach var="users" items="${users}">
<tr>
<td><c: out value="${users.userName}"/></td>
<td><c: out value="${users.password}"/></td>
</tr>
</c:forEach>
</table>
</center></body>
</html>
举例:c_forEach2.jsp(迭代固定的次数)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<html>
<head>
<tcounttle>JSTL:c:forEach的使用之二</tcounttle>
</head>
<body bgcolor="#FFFFFF"><center>
<h4>第二种迭代:50-60</h4>
<c:forEach var="count" begin="50" end="60">
<c: out value="${count}"/> **
</c:forEach>
<h4>第二种迭代:10 to 100,step=10</h4>
<c:forEach var="count" begin="10" end="100" step="10">
<c: out value="${count}"/>**
</c:forEach>
</center>
</body>
</html>
JSTL详解(五)
首先,感谢大家的关注,下面我来继续讲解:URL相关的标签,他们的作用主要是负责页面的导航、重定向、资源的获得以及参数的传递等等,他们有:
l
<c:import>
l
<c:redirect>
l
<c:url>
l
<c:param>
<c:import>
作用:导入一个url的资源,相当于jsp 中的<jsp:include page=”path”>标签,同样也可以把参数传递到被导入的页面。
语法:a、资源的内容使用string对象向外暴露
<c:import url=”url” [context=”context”]
[var=”varName”] [scope=”{page|request|session|application}”]
[charEncoding=”charEncoding”]>
Optional body content for <c:param> subtags
</c:import>
b、资源的内容使用redirect对象向外暴露
<c:import url=”url” [context=”context”]
varReader=”varReaderName”
[charEncoding=”charEncoding”]>
Body content where varReader is consumed by another action
</c:import>
举例:c_import.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL:c:import的使用</title>
</head>
<body bgcolor="#FFFFFF">
<h3>绝对路径 URL</h3>
<blockquote>
<ex:escapeHtml>
<c:import url="http://127.0.0.1:8080/ch12/footer.jsp"/>
</ex:escapeHtml>
</blockquote>
<h3>相对路径并且传递参数到指定的URL</h3>
<blockquote>
<c:import url="footer.jsp" charEncoding="gb2312">
<c:param name="userName" value="hellking"/>
</c:import>
</blockquote>
</body>
</html>
<c:redirect>
作用:把客户的请求发送到另一个资源,相当于jsp中的<% request.sendRedirect(“other.jsp”)%>或者servlet中的RequestDispatch.forward(“other.jsp”)的功能。
语法:a、没有body的情况
<c:redirect url=”value” [context=”context”]/>
b、有body,在body 中查询指定的参数
<c:redirect url=”value” [context=”context”]>
<c:param> subtags
</c:redirect>
举例:c:redirect.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL:c:redirect的使用</title>
</head>
<body bgcolor="#cc99cc">
<c:url value="footer.jsp" var="nextpage"><c:param name="userName" value="hellking"/></c:url>
<c:redirect url="${nextpage}"/>
</body>
</html>
<c:url>
作用:用于构造URL,主要的用途是URL的重写。
语法:a、没有body的情况
<c:url value=”value” [context=”context”]
[var=”varName”] [scope=”{page|request|session|application}”]/>
b、有body ,并在body 中有重写的参数
<c:url value=”value” [context=”context”]
[var=”varName”] [scope=”{page|request|session|application}”]>
<c:param> subtags
</c:url>
举例:c_url.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL c:url 的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:url var="footer" value="footer.jsp" scope="page">
<c:param name="id" value="hellking"/>
</c:url>
<c: out value="${footer}"/>
<br>另一种没有参数的URL<br>
<c:url value="footer.jsp"/>
</body>
</html>
<c:param>
作用:它是在<c:import>,<c:redirectt>,<c:url>中添加请求的参数。和一般的参数没什么区别。
语法:a、参数的值使用value属性指定
<c:param name=”name” value=”value”/>
b、参数的值在body 中指定
<c:param name=”name”>
参数值
</c:param>
举例:c_param.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL c:param的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:redirect url="footer.jsp">
<c:param name="userName">
hellking
</c:param>
</c:redirect>
</body>
</html>
JSTL详解(六)
SQL相关的标签
今天,我来讲解下一些很重要的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 c 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 c 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>
JSTL详解 (七)
<sql:update>
作用:主要是执行插入、更新和删除操作的标签。另外,还有一些没有返回结果集的sql操作也可以使用这个标签。比如
create table tableName(id int….);
drop table tableName
grant tableName 等等。。
语法:a、没有body的情况
<sql:update sql=”sqlUpdate”
[dataSource=”dataSource”]
[var=”varName”]
[scope=”{page|session|request|application}”]/>
b、有body ,并且在body中指定参数
<sql:update sql=”sqlUpdate”
[dataSource=”dataSource”]
[var=”varName”]
[scope=”{page|session|request|application}”] >
<sql:param> actions
</sql:update>
c、有body,在body中指定sql语句和可选的参数
<sql:update sql=”sqlUpdate”
[dataSource=”dataSource”]
[var=”varName”]
[scope=”{page|session|request|application}”] >
Update statement
<sql:param> actions
</sql:update>
举例:sql_update.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL:的使用</title>
</head>
<sql:setDataSource
var="ds2"
dataSource="jdbc/ch12"
/>
更新记录值1<hr>
<sql:update var="update1" dataSource="${ds2}">
update sql_test set power='low' where id=01
</sql:update>
第2种更新:创建表<hr>
<sql:update var="update4" sql="create table sql_temp_901(test varchar(20))" dataSource="${ds2}"/>
第3种更新:增加记录
<sql:update var="update5" sql="insert into sql_temp_901 values('hellking')" dataSource="${ds2}"/>
第4种更新:删除记录<hr>
<sql:update var="update6" sql="delete from sql_temp_901 where test='hellking'" dataSource="${ds2}"/>
第5种更新:删除表<hr>
<sql:update var="update7" sql="drop table sql_temp_901" dataSource="${ds2}"/>
</body>
</html>
<sql:transaction>
作用:用语事务处理,它为<sql:query>和<sql:update>建立事务处理上下文,并且提供相同的数据源。
语法:<sql:transation [dataSource=”dataSourceName”]>
[isolation=”isolationLevel”]>
<sql:query> and <sql:update> statement
</sql:transation>
isolationLevel ::=”read_committed”
|”read_uncommitted”
|”repeatable_read”
|”serializable”
注意:DataSource属性和其他标签的DataSource属性一样,isolactionlevel属性指定事务隔离的级别,如果没有指定它的值,那么就使用自己配置的DataSource事务隔离级别。而且,嵌套在里面的<sql:query> 和 <sql:update>标签不能再指定其他的数据源。<sql:transaction>
是数据库封装的轻量级事务处理,如果你需要复杂的事务处理或者分布试处理,它就不适合。
举例:sql_transaction.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL:sql:transaction的使用</title>
</head>
<sql:setDataSource
var="ds2"
dataSource="jdbc/ch12"
/>
<h2>使用事务处理方式创建一个表:</h2>
<sql:transaction dataSource="${ds2}">
<sql:update var="test_temp902">
create table test_temp902 (
id int primary key,
name varchar(80)
)
</sql:update>
<sql:update sql="insert into test_temp902 values(01,'wyy')"/>
<sql:update sql="update sql_test set power='wyy' where id=01"/>
</sql:transaction>
</body>
</html>
<sql:param>
作用:设置sql语句中“?”表示的占位符号的值。
语法:a、没有body,使用value指定。
<sql:param value=”value”/>
b、在body中指定
<sql:param>
参数值
</sql:param>
举例:sql_param.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page c language="java" %>
<html>
<head>
<title>JSTL:sql:param的使用</title>
</head>
<sql:setDataSource
var="example"
dataSource="jdbc/ch12"
/>
执行更新操作:<hr>
<sql:update var="update2" sql="update sql_test set power=? where id=?" dataSource="${example}">
<sql:param value="high"/>
<sql:param value="01"/>
</sql:update>
</body>
</html>
相关推荐
这份教程可能详细介绍了JSTL的基础概念、核心标签库的用法以及示例,帮助初学者快速掌握JSTL的基本操作。内容可能包括条件标签(如`<c:if>`、`<c:choose>`)、迭代标签(如`<c:forEach>`)、URL处理(如`<c:url>`、`...
EL(Expression Language)是JSTL中的一个重要组成部分,它是基于ECMAScript和XPath的一种轻量级脚本语言。EL用于在JSP页面中检索和操作数据,其语法以`${}`为标识。EL可以访问页面范围内的对象和属性,如...
通过学习"jstl标签和el教程(基础入门)",你可以掌握如何在JSP页面中有效地使用JSTL和EL,提高开发效率,使代码更易于理解和维护。这个教程可能包含示例代码、解释和练习,帮助初学者快速上手。在"Jstl Learn"这个...
JavaEE是企业级应用开发的重要框架,为程序员提供了丰富的组件和服务,使得开发高效、可扩展的Web应用程序变得可能。...对于那些希望通过学习Java EE进入企业级开发领域的人来说,这是一个不容错过的入门资源。
【JSP(Java Server Pages)入门实例教程】是一份针对初学者精心编写的教程,旨在帮助用户快速掌握JSP的基本概念、语法以及实际应用。JSP是Java平台上的动态网页技术,它允许开发者将HTML代码与Java代码结合,实现...
【JSP 入门教程详解】 JSP (JavaServer Pages) 是 Java EE 部分的一个关键组件,它允许开发者创建动态网页。JSP 与 Java 标准版(Java SE)不同,它属于企业级Java平台(Java EE),在这个平台上,还可以找到其他...
本教程《JSP语法简明入门教程大全PDF》是针对初学者精心编排的,旨在帮助学习者快速掌握JSP的基本概念和核心语法。 一、JSP基本概念 1. **JSP页面结构**:一个JSP页面由静态内容(HTML,CSS,JavaScript)和动态...
【Servlet和JSP入门教程】 本教程主要针对的是Servlet 2.4和JSP 2.0,这两个技术是构建Java Web应用的关键组件。Servlet是一种Java编程接口,用于扩展服务器的功能,而JSP(JavaServer Pages)则是一种动态网页技术...
在本教程中,我们将深入探讨如何搭建一个基于Spring框架的Web入门级项目,重点是使用Spring MVC和Spring JDBC实现简单的用户登录功能。Spring是一个广泛使用的Java企业级应用框架,而Spring MVC是它的一个核心模块,...
《Jsp&Servlet入门级项目全程实录》源码是一个非常适合初学者深入理解这两门技术的实践教程。这份源码提供了完整的项目实例,帮助学习者通过实际操作,掌握JSP和Servlet的基础知识和应用技巧。 1. **JSP基础**:JSP...
**JSP(Java Server Pages)入门讲解教程** JSP是Java平台上的一个重要技术,它是一种动态网页开发技术,主要用于创建交互式的、数据驱动的Web应用。对于初学者来说,掌握JSP的基础知识至关重要,因为这将为后续...
### JSP快速入门教程知识点详解 #### 一、JSP与Java的关系及JavaEE概述 JSP(Java Server Pages)是一种动态网页技术标准,它利用Java编程语言在服务器端生成动态网页内容。JSP通常被视为JavaEE(Java Platform ...
JavaWeb是Java技术在Web应用开发中的应用,它包括了Servlet、JSP、JSTL、Filter、Listener等核心技术,是初学者踏入Web开发领域的首选语言。本教程以"走心"为理念,旨在深入浅出地引导学习者掌握JavaWeb开发的基础...
**JSP中文入门基础教程** JavaServer Pages(JSP)是一种动态网页开发技术,由Sun Microsystems(现已被Oracle收购)推出。它允许开发者在HTML、XML或其他标记语言中嵌入Java代码,从而实现服务器端的动态网页生成...
JSP标准标签库(JSTL)和自定义标签库提供了更高级的功能,如循环、条件判断、国际化等,使代码更简洁易读。 **6. JSP与Servlet的关系** JSP最终会被编译为Servlet,JSP的执行过程包括翻译、编译和执行三个阶段。...
JSTL帮助文档.chm和JSTL 入门 IBM文档.chm为开发者提供了JSTL的核心标签库(Core、JDBC、XML、Function、Format和I18N)的详细指南,使开发过程更加规范和简洁。 **Servlet** 是Java Web应用程序的核心部分,用于...
本快速入门教程旨在帮助初学者迅速掌握这两项技术的基本概念和应用方法。 Servlet是Java API的一部分,它提供了一种方式来扩展Web服务器的功能。Servlet是一个Java类,它接收并响应来自客户端(通常是Web浏览器)的...
**JSP绝佳的入门教程** 本教程是一份专为初学者设计的JSP(Java Server Pages)入门资源,采用CHM(Compiled HTML Help)格式,旨在帮助用户轻松、高效地学习JSP的基础知识。CHM格式的优势在于它将一系列HTML页面...