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>


 



<%@ 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>


 

五.结束语

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

时间: 2024-09-20 06:01:14

JSTL详解的相关文章

JSTL 模板中 &amp;lt;c:forEach&amp;gt; 标签详解

<c:forEach>详解 <c:forEach>标签的语法定义如下所示.                     <c:forEach var="name" items="expression" varStatus="name"                               begin="expression" end="expression" step=&qu

Spring MVC 详解

第一章 Web MVC简介Web MVC简介 1.1.Web开发中的请求-响应模型:   在Web世界里,具体步骤如下: 1.  Web浏览器(如IE)发起请求,如访问http://sishuok.com 2.  Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html). 3.web服务器处理完成后,返回内容给web客户端(一般就是我们的浏览器),客户端对接收的内容进行处理(如web浏览器将会对接收到的html内容进行渲染以展示给客户)

springmvc与mybatis集成配置实例详解_java

简单之美,springmvc,mybatis就是一个很好的简单集成方案,能够满足一般的项目需求.闲暇时间把项目配置文件共享出来,供大家参看: 1.首先我们来看下依赖的pom: <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.ve

JSP安全开发之XSS漏洞详解_java

前言      大家好,好男人就是我,我就是好男人,我就是-0nise.在各大漏洞举报平台,我们时常会看到XSS漏洞.那么问题来了,为何会出现这种漏洞?出现这种漏洞应该怎么修复? 正文 1.XSS?XSS?XSS是什么鬼?      XSS又叫跨站脚本攻击(Cross Site Scripting),我不会告诉他原本是叫CSS的,但是为了不和我们所用的层叠样式表(Cascading Style Sheets)CSS搞混.CSS(跨站脚本攻击),CSS(层叠样式表)傻傻分不清.所以就叫XSS咯.

Javaweb El表达式实例详解_java

EL全称 Expression Language(表达式语言),是jsp2.0最重要的特性之一,可以利用EL表达式来访问应用程序中的数据,来消除jsp页面中的java脚本. el表达式的语法 expression例如x+y可以写成{x+y} el中的关键字 以下是el中的关键字,他们不能用做标识符: and,eq,gt,true,instanceof,or,ne,le,false,empty,not,lt,ge,null,div,mod 一.EL表达式简介 EL 全名为Expression La

JavaWeb实现文件上传与下载实例详解_java

 在Web应用程序开发中,文件上传与下载功能是非常常用的功能,下面通过本文给大家介绍JavaWeb实现文件上传与下载实例详解. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,common-fileupload是依赖于

详解JavaEE使用过滤器实现登录(用户自动登录 安全登录 取消自动登录黑用户禁止登录)_java

在我们生活中,对于账户的自动登录已经很常见了,所以利用过滤器实现这个功能. 主要介绍用户的自动登录和取消自动登录,以及实现一天自动登录或者n天实现自动登录,当用户ip被加入到黑名单之后,直接利用过滤器返回一个警告页面. 过滤器的功能很是强大,我们只需要在写好的前台后servlet之后进行添加就可以实现这个功能 Ps:这个仅仅只是一个演示而已,里面的访问数据库的部分,自己随意模拟了下,主要是突出实现自动登录的功能. 前台代码: 前台代码是成功与否都在这个页面显示.用到的技术:jstl标签的应用,s

JSP使用MVC模式完成删除和修改功能实例详解_JSP编程

本文实例讲述了JSP使用MVC模式完成删除和修改功能的方法.分享给大家供大家参考.具体如下: 目标: ① 进一步理解MVC模式: ② 掌握删除功能的基本实现过程: ③ 掌握修改功能的基本实现过程. 主要内容: ① 使用MVC完成删除功能: ② 使用MVC模式完成信息更新功能. 1.如何使用MVC模式完成删除功能 根据MVC模式的特点,分别考虑MVC的3个部分. ① 首先考虑V部分: 输入:通常删除功能是在查询的基础上完成的,所以在用户信息列表界面上可以添加删除的超链. 输出:提示用户删除是否成功

JAVA Eclipse使用Maven构建web项目详解(SSM框架)

tips: 启动项目后,welcome-file的链接即为测试用例 https://github.com/sheep0704/JAVA-SSM-Spring 部署maven web项目 Eclipse使用Maven构建web项目详解 pom.xml添加webapp依赖: <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId>