一.理论准备

        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. HDU 1242 rescue and 优先级队列的条目

    Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is ...

  2. 【Leetcode】Binary Tree Level Order Traversal

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  3. CentOS 6.7安装Tomcat 7

    1.下载Tomcat 7 wget http://apache.fayea.com/tomcat/tomcat-7/v7.0.67/bin/apache-tomcat-7.0.67.tar.gz 2. ...

  4. 关于jquery获取服务器端xml数据

    其实这个很简单,但是有时候简单的东西会让你犯一些低级错误. 今天写了个spring mvc 的服务器端接口,主要是用来共享一些数据库数据. 请求字段:http://localhost:8080/XXX ...

  5. JS2 for应用

    for应用  再谈js获取元素一二: var oUl=document.getElementById('list');      //静态方法 var oUl=document.getElements ...

  6. 记录Access数据库更新操作大坑一个

    对于更新Access数据库的操作,必须保持参数数组与sql语句中参数顺序一致,如下: public bool Update(MyModel model) { StringBuilder strSql ...

  7. onTextChanged参数解释及实现EditText字数监听

    http://www.picksomething.cn/?p=34 由于最近做项目要检测EditText中输入的字数长度,从而接触到了Android中EditText的监听接口,TextWatcher ...

  8. SQL通过传递参数方式备份数据库.

    存储过程的SQL代码: ALTER PROCEDURE USP_DBBackup ), --存储目录. ) --存储数据库名. AS SET NOCOUNT ON ) select @name = r ...

  9. oracle sql语句

    一.ORACLE的启动和关闭1.在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oracle a.启动ORACLE系统oracle>svrmgrlSVRM ...

  10. .NET下的加密解密大全(1): 哈希加密

    .NET有丰富的加密解密API库供我们使用,本博文总结了.NET下的Hash散列算法,并制作成简单的DEMO,希望能对大家有所帮助. MD5[csharp]using System; using Sy ...