jsp 标准标签库简析

一、JSTL简介
引入:在JSP以及javaBean中 ,当我们在网页中使用循环,或者使用对象方法连接数据库时,我们都不可避免的需要使用到jsp的脚本编制元素,其中嵌有大量的java代码,现在开发者想尽可能的避免使用jsp脚本编制元素,进一步将应用程序的显示层和业务层完全分离,更加有利于应用程序的分工协作,jsp开发者指定了 JSTL ,提供了一组统一的通用的自定义标签文件,并将这些文件组合在一起,形成了jsp标准标签库,即JSTL。
1) 定义:包含编写和开发JSP页面的一组标准标签
a) 特点:为开发者提供了一个无脚本环境,无需编写JAVA脚本
b) 包含
1. 核心标签库
2. SQL标签库
3. 国际化(I18N)与格式化标签库
4. XML标签库
c) 分类 : 两个版本
1. 使用 EL
2. 使用请求时表达式
2) 作用
a) 进一步简化开发,简化页面, 实现页面脱离jsp脚本元素
b) 让页面尽可能少的出现java代码
c) 优势:与EL表达式配合使用,可以用EL 代替属性值 进一步动态改变
3) 使用
a) 导入标签库(Eclipse等工具中需要做这一步)
b) 使用标签库中标签的实施步骤
i. 将JSTL对应的JAR文件:jstl.jar、standard.jar添加到应用程序的WEB-INF/lib目录(这两个jar文件见课件目录” JSTL标签库”)
ii. 在编写的jsp页面中指定标签库的描述信息:
语法:<%@ taglib prefix=”c” uri=”http://java.sun.com/jstl/core_rt” %>
关于上述语法使用的扩充:
<%@ taglib prefix =”标签别名” uri =”标签库的位置“>
1. 标签别名常用c
2. 标签库的位置:(即uri的设置)
a) 教材上:” http://java.sun.com/jstl/core_rt “ 指向sun公司网站上的库文件地址,注意这里只是个地址指向,即使没有上网,在工具中也已经对应到工程中的路径了(注意:此时要先将标签库的两个jar文件放入”工程\WEB-INF\lib”目录下。)
b) 也可使用:”/WEB-INF/c.tld ”(但要注意:此时要先将标签库两个jar文件中的一个standard.jar文件解压后的目录META-INF中的所有*.tld文件放入”工程名/WEB-INF/”目录下,即保证该目录下有c.tld文件)
注意:上述两种导入标签库的方式,以第一种为佳,即只需要将两个标签库jar文件放入”工程\WEB-INF\lib”目录下即可。
c) 在JSP中使用
3. <c: xxxxxx 属性名=“属性值” 属性名=“属性值”>
4. xxxxx就是标签库中提供的各种功能,详述如下:
二、核心标签库-----core 或 c.tld
a) 分类:
1. 通用标签:操作JSP页面创建的范围变量
2. 条件标签:操作条件运算 判断与处理
3. 循环标签:操作循环运算
b) 通用标签
1. 设置,删除,显示在JSP页面内创建的变量值或对象值
2. 变量的范围是由设置时的scope 属性决定
3. <c: set> 用于设置变量或者对象属性的值
<c:set var=”变量名” value=”变量值” scope=”作用域范围”/>
<c:set target=”对象名” property=”属性名” value=”值”/>
:注意: “变量值” 可以是 EL表达式
4. <c: out> 用于动态显示数据(功能类似于EL)
1:<c:out value=” 表达式” default=”默认值” escapeXml=”true/false” >
2: 注意:表达式 可以是 1》普通的常量值
2》输出已经设置的变量值:${变量的名称}
5. <c: remove>用于删除创建的变量
a) <c:remove var=”变量的名称” scope =”作用域”>
(案例:演示上面几个标签)
c) 条件标签
1. 提供条件运算, 两种类型: if choose
2. <c: if> 语法
a) <c:if test=”条件 ” var=” 存放测试条件结果的变量” scope=”作用域” >
b) 。。。。。。。条件体
c) </c:if>
d) var 存放的是:结果为true 或 false
e) 不能实现else 由下面的实现
3. <c:choose>语法
a) <c:choose>
i. <c:when test=”条件表达式1”>
ii.需要处理的语句1
iii. </c:when>
iv. <c:when test=”条件表达式2”>
v.需要处理的语句2
vi. </c:when>
vii. <c:otherwise>
viii.需要处理的语句
ix. </c:otherwise>
b) </c:choose>
(案例 three.jsp)
d) 迭代标签
1. 分两种: forEach forTokens
2. forEach
简单的应用
<c:forEach var=”循环控制变量” test=”循环条件” begin=”循环开始值” end=”循环结束值” varStatus=”保存循环状态的变量”>
循环体
</forEach>
用于集合对象的访问
<c:forEach var=”存放集合当前记录的变量” items=”要轮循的集合名” begin=”集合的起始索引位置” end=”集合的结束位置”>
</forEach>
注意:如果没有设置begin,end将检索所有元素,step没设置默认为1
3. forTokens (与<c:forEach>有区别,用于轮循一个字符串)
<c:forTokens items=”要轮循的字符串” delims=”单词的分界符” var=”存放单词的变量”>
</c:forTokens>
(案例: 演示上面几个标签)
三、SQL 标签库---- sql.tld
一般的企业级的应用是离不开数据库操作的,在许多时候都需要在JSP页面中访问数据库,因此提供对数据库访问的支持就变的十分重要了,在JSTL中的SQL标记库就提供了一套可以对数据库进行访问,查询,更新等操作的标记,极大的方便了JSP页面中数据库访问
1、 作用:用于进行数据库的操作
2、 在JSP页面中加入标签库
<%@ taglib uri=“http://java.sun.com/jstl/sql_rt ” prefix=”sql” %>
3、 具体使用标记
a) 设置数据源<sql:setDataSource>
具体用法:<sql:setDataSource driver=”驱动类路径” url=”连接的数据库设置” user=”用户名” password=”密码” var=”连接对象名”/>
b) 查询数据<sql:query>
具体用法:
① <sql:query sql=”查询语句” var=”结果集名” scope=”结果集保存的范围” dataSource=”关联的数据源对象” maxRows=”最大行数” startRow=”开始行的索引”/>
② <sql:query var=”结果集名” scope=”保存范围”>
select 语句
</sql:query>
操作获取的结果集
<sql:query var=”students” scope=”session” sql=”select * from stu” dataSource=”conn”/>
${students.rowCount}可返回结果集中的数据行数
${students.columnNames}可返回所有字段的集合
${students.rowByIndex}返回结果集中某行的数据集合
c) 数据更新<sql:update>
具体用法:
① <sql:update sql=”SQL语句” dataSource=”数据源对象名”/>
② <sql:update dataSource=”数据源对象名”>
SQL语句
</sql:query>
d) 事务应用<sql:transaction>
具体用法:
<sql:transaction dataSource=”数据源对象名”isolation=”事务隔离级别”>
<sql:query>或者<sql:update>
</sql:transaction>
其中上面的隔离级别:
read_committed,read_uncommited,repeatable,serializable
注意:如果在事务中设置了dataSource属性,在里面的标记中就不需设置了。
e) 参数设置<sql:param>
① 作用:在作查询或者数据操作时参数的设置
② 使用:通常是做为<sql:query>和<sql:update>标记的子标记
案例:
<sql:query dataSource=”conn” var=”stus” scope=”page”>
select * from student where stuage>?
<sql:param value=”参数值”/>
</sql:query>
四、国际化和格式化标签----fmt 或 fmt.tld
1、 作用:对数字和日期时间的输出进行标准化,解决中文乱码问题
2、 在jsp页面加入标签库
<%@ taglib uri=“http://java.sun.com/jstl/fmt_rt” prefix=”fmt” %>
3、 具体标签的使用
a) <fmt:setLocale>
① 作用:用于JSP页面的本地化
② 使用:<fmt:setLocale value=”语言和区域”/>
b) <fmt:formatNumber>
① 作用:用于JSP页面数据的格式化
② 使用:<fmt:formatNumber type=”number|currency|percent” value=”要格式化的数据” />
c) <fmt:formatDate>
① 作用:用于JSP页面日期的格式化
② 使用:<fmt:formatDate type=”time|date|both” value=”要格式化的日期数据”/>
d) <fmt:requestEncoding>
① 作用:指定请求数据的编码方式
② 使用:<fmt:requestEncodding value=”编码方式” />
例如:<fmt:requestEncoding value=”gb2312”/>
一般地,也可这样使用:
a) 创建好 属性文件 比如叫 len_zh .properties
b) <fmt:setLocale value=”指向文件的名称 zh”> (zh为中文,en为英文,固定的,Y2课程里会讲到。)
c) <fmt:setBundle basename=”文件的名称 len”> (len为自起名称)
d) <fmt:message key=”属性文件中的关键字”> (属性文件为len_zh .properties)
注意:国际化时,*.properties文件要放在classes目录下。

(0)

相关推荐

  • JSP自定义标签Taglib实现过程重点总结

    Taglib指令介绍 Taglib指令,其实就是定义一个标签库以及自定义标签的前缀. 比如struts中支持的标签库,html标签库.bean标签库.logic标签库. 其中的具体的实现方式,我们不过多介绍,我们给大家从宏观的角度以及解决其中的疑难点,后面会大家介绍相应的学习资料. 除了struts的标签库,我们常见还有jstl标签库. 这样在界面jsp中引入其中的标签库或者标签库文件,然后才可以正常使用其中定义的标签. 复制代码 代码如下: <%@ taglib prefix ="bea

  • JSP使用自定义标签防止表单重复提交的方法

    本文实例讲述了JSP使用自定义标签防止表单重复提交的方法.分享给大家供大家参考.具体如下: 1. 编写servelt: package cn.itcast.apsliyuan.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletReques

  • 用定制标签库和配置文件实现对JSP页面元素的访问控制

    控制客户端访问是开发一个基于B/S的架构的系统的开发者必须考虑的问题.JSP或SERVLET规范的基于配置文件的安全策略对资源的控制是以文件为单位的,即只可以定义某个视图全部可以或全部不能被访问.一个比较复杂的系统往往要要求对视图的一部分(如JSP页面里的一个按钮)提供访问控制,只允许被某种角色的用户访问.如果采用可编程的安全策略,因为对用户角色和操作的定义在开发时不能定义,而且这种策略加大了程序员的工作量,它可能不是一种好的办法. 我采用定制标签库和和配置文件来解决这个问题:把要权限控制的JS

  • jsp自定义标签之ifelse与遍历自定义标签示例

    第一个示例: 简单的jsp自定标签获取内容: 首先创建一个jsp实例类然后继承SimpleTagSupport类 然后实现父类的doTag()方法 在这个方法里获取标签体里的内容this.getJspBody(); 返回的是JspFragment 类,根据这个类对象调用invoke(this.getJspContext().getOut()); 这个方法里面也可以写空,所表达的意思也是输出到浏览器: 复制代码 代码如下: public class SimpleDmeo1 extends Simp

  • jsp中自定义标签用法实例分析

    本文实例讲述了jsp中自定义标签用法.分享给大家供大家参考.具体如下: 这里简单的写了一个自定义标签,自己定义标签的好处就是在jsp页面中可以使用自己定义的功能,完全与Java代码分离 1. tld文件如下: 首先是要写×.tld文件,当项目随着服务器启动的时候,会检查项目中有没有*tld文件. 写的tld文件 <?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://ja

  • JSP自定义标签获取用户IP地址的方法

    1.编写一个实现tag接口的标签处理器类 复制代码 代码如下: package cn.itcast.web.tag; import java.io.IOException; import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.PageContext;import j

  • JSP 自定义标签之一 简单实例

    在JSP中使用自定义标签可以达到这样的目的,事实上,我们所熟知的各类框架基本上都是通过自定义标签的形式来实现的. 通过使用自定义标签,我们可以将实现复杂的逻辑在页面用简单的标签来加以展示.下面我们来实现一个非常简单的自定义标签,期望通过这个简单的实例引领各位进入自定义标签的领域.我们准备定义的这个自定义标签所实现的功能是在JSP页面中显示出版权信息,并且在以后的博文中,我们还会对它进行升级改造. 首先,打开编辑器,创建以下Java代码: 复制代码 代码如下: package com.yanzhi

  • jsp通过自定义标签库实现数据列表显示的方法

    本文实例讲述了jsp通过自定义标签库实现数据列表显示的方法.分享给大家供大家参考,具体如下: 1. 定义标签库类 UserListTag.java package com.yanek.cms.tag; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.jsp.JspException; impo

  • JSP自定义分页标签TAG全过程

    首先我们需要在WEB-INF/tld/目录下创建page.tld文件 <?xml version="1.0" encoding="ISO-8859-1"?> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>page</short-name> <u

  • jsp 自定义标签实例

    分三步: 一.在WEB-INF 下建一个名为tlds的文件夹,再建一个tld文件,如 formatTime.tld,内容为: 复制代码 代码如下: <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://jav

  • jsp自定义标签用法实例详解

    本文实例讲述了jsp自定义标签用法.分享给大家供大家参考.具体如下: 在JSP中有一种机制,可以让你在JSP页面中插入与HTML类似的标记.本文介绍JSP定制标记的基本概念和构成,以及如何开发和应用JSP定制标记. 什么是标记 使用HTML语言我们可以这样去编辑我们的网页: <HTML> <HEAD> <TITLE> HELLO WORLD </TITLE> </HEAD> <BODY> HELLO WORLD </BODY&g

  • 基于JSP 自定义标签使用实例介绍

    添加JSP自定义标签: 先添加一个tld文件到WEB-INF文件夹中<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://

随机推荐