JSTL详解
一.理论准备
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详解的更多相关文章
- JSTL详解(二)
JSTL详解(二) 在JSTL中,一般用途的标签只要是指具有输出,设置变量,和错误处理等功能的标签,他们在jsp中使用很频繁,它们有: l <c:out> l ...
- JSTL详解(一)
将jstl.jar包导入到工程中 jstldemo1.jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/ ...
- JSTL详解实例
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定 ...
- JSTL详解(常用标签以及c:forEach遍历集合)
JSTL标签 一. JSTL的简介 1. 什么是JSTL 2. JSTL常用标签库 3. JSTL使用步骤 二. 核心标签库常用标签 1. c: set 标签 2. c: out 标签 3. c: i ...
- 详解JSTL的forEach标签
详解JSTL的forEach标签 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍. <c:forEach> 标签的语法 说明 : 语法:迭代一集合对象之所有 ...
- 【jsp】JSTL标签大全详解
一.JSTL标签介绍 1.什么是JSTL? JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...
- 详解javaweb中jstl如何循环List中的Map数据_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 详解javaweb中jstl如何循环List中的Map数据 第一种方式: 1:后台代码(测试) List<Map& ...
- MyBatis的动态SQL详解
MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下 MyBatis 的一个强大的特性之一通常是它 ...
- Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解
一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求并将其转换为一个模型.在Spring MVC中一个控制器可以包含多个Action(动作. ...
随机推荐
- [转]TCP和Http的区别!我都搞懂了,你就别迷糊了!
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助. 1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可 ...
- Android开发_控制硬加速hardwareAccelerated
控制硬加速 hardwareAccelerated也是一种优化的手段 从Android3.0 (API level11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承 ...
- Btrace是一个实时监控工具
http://blog.csdn.net/gzh0222/article/details/9731031 Btrace是一个实时监控工具,可以无需修改应用代码(事实上它修改了字节码),来达到不可告人的 ...
- linux 安装软件的地方
用下边这个命令:mysqladmin -u root -p variables root是你的数据库帐号回车后会提示你输入密码,输入上边填写的帐号对应的密码 回车后出来一个大表,找到datadir这一 ...
- &&与&
if((2>1)&&(4>3))System.out.printf("两边都是true"); else System.out.println(&qu ...
- jquery判断div是否显示或者隐藏
jquery判断div是否显示或者隐藏 很多时候会要判断一个div是不是显示着,没显示要怎么处理,显示的如何处理: 方法很简单,选择到你要判断的div,再用is(':hidden')判断是否隐藏:或者 ...
- c语言学习之基础知识点介绍(十):内存空间模型、地址解释及指针变量
一.内存 /* 内存: 存在内存里的. 内存分了N多个小空间,每个小空间1个字节 每个小空间有它自己的地址.每个地址之间差1 int类型占用4个字节,等于占了4个空间(有4个地址),不需要记住4个地址 ...
- a*b(高进度乘以int类型的数)
以下是我今日的a-b(高精度)的程序,\(^o^)/偶也偶也偶也偶也! 程序: #include<stdio.h> #include<string.h> char s[1000 ...
- jquery之分页插件smartpaginator
今天推荐一个分页工具条插件:Smart Paginator,这个插件用途还是很广的,而且可定制性相当不错,目前内置三种颜色,有需要的话,可以自己改css定制颜色 1.如何使用Smart Paginat ...
- Eclipse Git和sourceTree用法
Eclipse Git和sourceTree用法 Eclipse Git: 提交代码到git: 1.team->Repository->pull 若没有冲突: 2.team->com ...