一.理论准备

        JSP 标准标记库( Standard Tag Library , JSTL) 是一组以标准化格式实现许多通用的 Web 站点功能的定制标记,主要是为了方便页面的编写。

        JSTL包括,core(c),format(fmt),sql(sql),xml(xml),functions(fn)。

       使用包括两个 JAR 文件, jstl.jar 和 standard.jar 。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

二.Core 标签库

        Core 标签库主要包括了一般用途的标签,如条件标签、迭代标签和 URL 相关的标签。

       一般用途的标签有 <c:out> 、 <c:set> 、 <c:remove> 、 <c:cath>

         1.<c:out>

         用于计算一个表达式并将结果输出。类似于 JSP 中 <%=%> 表达式,或者是 EL 中 ${el-expression} 。

//escapeXml默认true,对><空格等转换为对应的html
<c:out value="欢迎访问" /><br>
<c:out value="${session.username}" default="anonymous" /><br>
<c:out value="${username}" default="anonymous" /><br>
//下面这个必须指定为false,因为有<>
<c:out value="<h1>欢迎访问</h1>" escapeXml="false" />
<c:out value="<h1>欢迎访问</h1>" /><br>

       2.<c:set>用于设置范围变量的值或者 javabean 对象的属性。

<c:set var="username" value="SunWukong" scope="session" />
<c:set var="username" scope="session">
      SunWukong
</c:set>		

        3.<c:remove>

        相对 <c:set> 其作用是移除范围变量。比如: <c:remove var=”nusername” scope=”session”/>

//不带范围的话在四个范围中一次查找
<c:remove var="username" scope="session"/>	

        4.<c:catch>

         用于捕获在其中嵌套的操作所抛出的异常对象,并将异常信息保存到变量中。

<c:catch var="ex">
<%
     String number = "none";
     int i = Integer.parseInt(number);
%>
</c:catch>
${ex}

         条件标签包括 <c:if><c:choose><c:when><c:otherwise>

          1.<c:if>

          用于实现 java 中的 if 语句功能。

<c:if test="${session.username=='system'}">
欢迎系统管理员!
</c:if>

          2.<c:choose>

          <c:choose> 和 <c:when> 、 <c:otherwise> 类似switch、case、default。

<c:choose>
<c:when test="${param.age>70}">
 欢迎老人
 </c:when>
<c:when test="${param.age<=70 and param.age>=35}">
 欢迎中年人
 </c:when>
<c:when test="${param.age<=35 and param.age>=0}">
 欢迎年轻人
 </c:when>
<c:otherwise>
 可能你还没有出生呢
 </c:otherwise>
</c:choose>

            迭代标签 迭代标签有 <c:forEach> 和 </c:forEach>

<%
	String names[] = new String[4];
	names[0] = "孙悟空";
	names[1] = "猪八戒";
	names[2] = "沙僧";
	names[3] = "唐僧";
	pageContext.setAttribute("names", names);
%>
 <c:forEach items="${names}" var="name">
 	${name}<br>
 </c:forEach>

 <c:forEach items="${names}" var="name" begin="0" end="3" step="1">
 	${name}<br>
 </c:forEach>

 <c:forEach items="${names}" var="name" varStatus="i">
 ${name}<br>
 index: ${i.index}<br>
 count: ${i.count}<br>
 first: ${i.first}<br>
 last: ${i.last}<br>
</c:forEach> 

 

       其他

//生成带参数的url:http://www.v512.com?param=value
<c:url var="website" value="http://www.v512.com" >
    <c:param name="param" value="value" />
</c:url>
<a href="${website}">v512工作室</a>

 

//类似<jsp:include >不同的是可以包含其他web工程下的内容
<c:import url="http://www.v512.com/html/news.html" />
c:forTokens items="a:b:c:d" delims=":" var="token">
<c:out value="${token}"/><br>
</c:forTokens>

 

三. 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”]/>

其中database是javax.sql。DataSource(接口)

2 SQL操作标签

         JSTL提供了<sql:query>、<sql:update>、<sql:param>、<sql:dateParam>和<sql:transaction>这5个标签,通过使用SQL语言操作数据库,实现增加、删除、修改等操作。下面将介绍这5个标签的功能和使用方式。

1.<sql:query>标签

<sql:query>标签用来查询数据。

<sql:setDataSource dataSource="jdbc/oracleds" var="ds"/>
<sql:query   var="result"    dataSource="${ds}"  sql="select * from guestbook order by id desc" />

<table border="1">
  <c:forEach   var="row"  items="${result.rows}" >
 <tr>
    <td> <c:out value="${row.id}" /></td>
    <td> <c:out value="${row.name}" /></td>
    <td> <c:out value="${row.email}" /></td>
 </tr>
 </c:forEach>  

 

rows Java.util.Map 字段为索引的查询结果
rowCount int 总记录数
rowsByIndex object[] 数字索引结果

其他的需要时候自己查。

四. xml标签

            解析如下的xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<softwares>
	<software>
		<name>Windows XP</name>
		<producer>Microsoft</producer>
	</software>
	<software>
		<name>Oracle 11g</name>
		<producer>Oracle</producer>
	</software>
	<software>
		<name>Eclipse</name>
		<producer>Eclipse.org</producer>
	</software>
</softwares>


 

XSL. 可扩展样式表语言(Extensible Stylesheet Language)。
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<html>
	<body>
		<c:import url="softwares.xml" var="url" />
		//有人用doc表示要解析的文档
		<x:parse xml="${url}" var="doc" />
		<table border=1>
			<tr>
				<td>软件	</td>
				<td>生产公司</td>
			</tr>
			<x:forEach var="n" select="$doc/softwares/software">
				<tr>
				<td>
					<x:out select="$n/name" />
				</td>
				<td>
					<x:out select="$n/producer" />
				</td>
				</tr>
			</x:forEach>
		</table>
	</body>
</html>


 

         这个不知道什么用。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	version="1.0">
<xsl:template match="/">
<html>
<body>
<table border="1">
	<tr>
	<td>软件</td>
	<td>生产公司</td>
	</tr>
	<xsl:for-each select="softwares/software">
		<tr>
			<td><xsl:value-of select="name" /></td>
			<td><xsl:value-of select="producer" /></td>
		</tr>
	</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


 

五.结束语

        剩下的两个和不会的遇到的时候自己查就是了。

JSTL详解的更多相关文章

  1. JSTL详解(二)

    JSTL详解(二) 在JSTL中,一般用途的标签只要是指具有输出,设置变量,和错误处理等功能的标签,他们在jsp中使用很频繁,它们有: l         <c:out> l        ...

  2. JSTL详解(一)

    将jstl.jar包导入到工程中 jstldemo1.jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/ ...

  3. JSTL详解实例

    JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定 ...

  4. JSTL详解(常用标签以及c:forEach遍历集合)

    JSTL标签 一. JSTL的简介 1. 什么是JSTL 2. JSTL常用标签库 3. JSTL使用步骤 二. 核心标签库常用标签 1. c: set 标签 2. c: out 标签 3. c: i ...

  5. 详解JSTL的forEach标签

    详解JSTL的forEach标签 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍.      <c:forEach> 标签的语法 说明 : 语法:迭代一集合对象之所有 ...

  6. 【jsp】JSTL标签大全详解

    一.JSTL标签介绍 1.什么是JSTL? JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...

  7. 详解javaweb中jstl如何循环List中的Map数据_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 详解javaweb中jstl如何循环List中的Map数据 第一种方式: 1:后台代码(测试) List<Map& ...

  8. MyBatis的动态SQL详解

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下 MyBatis 的一个强大的特性之一通常是它 ...

  9. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求并将其转换为一个模型.在Spring MVC中一个控制器可以包含多个Action(动作. ...

随机推荐

  1. 第一个Android项目——计算器

    第一个Android项目——计算器 效果 开始学Android一两个星期了,学习了一下基本的Activity.简单控件及几个简单布局,打算找个东西来练练手,于是就选择发计算器.关于计算器中用到的四则运 ...

  2. http 与https 安全链接

    安全连接 Web应用最常见的用途之一是电子商务,可以利用Web服务器端程序使人们能够网络购物,需要指出一点是,缺省情况下,通过Internet发送信息是不安全的,如果某人碰巧截获了你发给朋友的一则消息 ...

  3. web服务构架

    以我的理解大流量电商网站,一般构架如下: CDN 负载均衡集群 < === >  缓存服务器集群 反向代理服务器集群 web服务器集群(日志采集) < === > 缓存系统集群 ...

  4. 过滤器(filter)实现用户登录拦截

    过滤器(filter)实现用户登录拦截 >>>>>>>>>>>>>>>>>>>> ...

  5. android应用一(调用WebServices)

    搞了一个月的android,现学现卖,终于还是搞完了,停下来,整理思路,写写记录吧. 我们知道android访问远程数据库主要有两种协议,一种是SOAP,另外一种就是HTTP.而我们再看看WebSer ...

  6. php并发处理

       最近某个项目用php生成文件,但是由于文件量太大,单个进程生成需要很长的时间,所以想并发进行处理.    网上查找了下相关的资料,php本身是没有多线程的概念的,那就只能用多进程了,再找资料却是 ...

  7. php快速排序

    快速排序是排序中常用的,效率据说还不错,它使用分治算法实现 将一个大的需要排序的序列,分成两个较小的序列!怎么分呢,需要从序列中找出一个元素作为参考元素,通常的做法是拿第一个元素作为参考元素.当一个序 ...

  8. java 函数形参传值和传引用的区别

    java方法中传值和传引用的问题是个基本问题,但是也有很多人一时弄不清. (一)基本数据类型:传值,方法不会改变实参的值. public class TestFun { public static v ...

  9. H TML5 之 (6)下雨效果

    在对HTML5进行研究之后,有了一点想法,思考出游戏其实感觉就是四个步骤 1.创建一个你需要的对象,赋予属性(一些影响方法的属性),方法(运动,叫....) 2.实例化这个对象,让它成为一个或者多个个 ...

  10. Linux同步时间命令ntpdate

    转自:http://orgcent.com/linux-ntpdate/ 由于要同步Linux服务器的时间,为了保证时间的高度准确性,放弃date命令而转向ntpdate(同步时间命令). 方案如下: ...