第十一章 JSP 标准标签库.

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

第二章 JSP 编译指令. 课程目标  JSP 编译指令  JSP 页面的表达式  JSP 页面的注释  JSP 页面的声明  Scriptlets.
LOGO 第 9 章 Java Servlet 和 JSP 编程 孙焘. 重点: servlet 编程原理 1 servlet 的基础类与编程实现 2 JSP 编程原理 3 JSP 的常用语法 4.
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
第 7 章 配合 例子源代码一起使用 Power point 制作:耿祥义 张跃平 普通高等教育 “ 十一五 ” 国家级规划教材 JSP 与 JavaBean.
动态Web开发技术--JSP.
第一章 JSP概述.
J2EE——第12章JavaSerer Pages技术
JSTL标签库 讲师:梁 桐 北京传智播客教育 1。缓存数据 2。处理字符乱码 3。监听器中的定时器
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
转正述职报告 乐恩公司 史航
Oracle数据库 Oracle 子程序.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
J2EE与中间件技术 ——Lab.
11-1 JDBC的基礎-說明 昇陽公司提出的資料庫中介軟體(Middleware)稱為「JDBC」(Java Database Connectivity),這是一種開放標準的Java程式介面,可以讓Java程式連接資料庫管理系統, 以Java技術來說,就是實作JDBC驅動程式介面(JDBC Driver.
Hello World 體驗實作第一個JSP程式.
第六章 學習SQL語言.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
第 8 章 資料的 新增、修改與刪除.
专题4:JSP脚本和指令.
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
SVN的基本概念 柳峰
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
第二讲 搭建Java Web开发环境 主讲人:孙娜
管理信息结构SMI.
SQL Injection.
PHP 程式流程控制結構.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
科研信息管理工具 Endnote X4 王辉.
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
JSTL 标签 JSTL 标签种类 说 明 核心标签 包含JSTL核心操作所需的标签,例如数据输出、循环流程控制以及URL操作等
PaPaPa项目架构 By:Listen 我在这.
Windows 7 的系统设置.
YMSM D-PACK 安装手册 作成者:D-PACK维护组(YMSLx) 作成日:
第6章 JSP标签技术.
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
第十二章 过滤器.
Java Server Faces 参考书籍 Java Server Faces 核心编程.
VB与Access数据库的连接.
第三章 SQL Server数据管理.
讲课人:王璞 浙江工商职业技术学院.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
Web安全基础教程
第4章 Excel电子表格制作软件 4.4 函数(一).
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
Delphi 7.0开发示例.
Python 环境搭建 基于Anaconda和VSCode.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
VB与Access数据库的连接.
WEB程序设计技术 数据库操作.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
学习目标 1、什么是列类型 2、列类型之数值类型.
JUDDI安装手册.
Presentation transcript:

第十一章 JSP 标准标签库

回顾 自定义标签是用户定义的 JSP 语言元素 标签处理程序是一个对象,Web 容器调用此对象,以在执行 JSP 页面的过程中解释自定义标签 简单标签的处理程序必须实现 Tag 接口的 doStartTag() 和 doEndTag() 方法 标签库描述符 (TLD, Tag Library Descriptor) 包含库以及该库中所包含的每个标签的信息

目标 理解核心标签库 理解国际化和格式化标签 理解 SQL 标签库

JSTL 在web开发中,有许多功能都是开发人员经常要用到的,JSTL就是定义的一套标准的标签库 JSTL:JavaServer Page Standard Tag Library JSTL规范由sun公司规定,Apache的Jakarta小组负责实现。 JSTL1.0需要支持JavaServlet2.3和JSP1.2的Web容器, JSTL1.1需要支持javaServlet2.4和JSP2.0的Web容器 JSTL的目标是为了简化jsp页面的设计,为页面设计人员和程序开发人员的分工协作提供了便利

用于访问数据库、有条件地执行代码和支持国际化 JSTL Java Server Pages 标准标签库 (JSTL) 包含的各种标签可用于 JSP 页面中 JSTL 的优点 提供一组标准标签 可用于编写各种 动态 JSP 页面 用于访问数据库、有条件地执行代码和支持国际化

JSTL标签库 JSTL由5个不同功能的标签库组成 功能范围 URI 前缀 core(核心) http://java.sun.com/jsp/jstl/core c I18N http://java.sun.com/jsp/jstl/fmt fmt SQL http://java.sun.com/jsp/jstl/sql sql XML http://java.sun.com/jsp/jstl/xml x funcions http://java.sun.com/jsp/jstl/functions fn

配置JSTL(了解) 从http://www.apache.org/dist/jakarta/taglibs/standard/ 下载,下载的文件名为jakarta-taglibs-standard-current.zip 解压后,在lib目录下有两个jar包:jstl.jar和standard.jar Jstl.jar:JSTL规范中定义的类和接口 Standard.jar:对jstl的实现和jstl中5个标签库的tld文件 使用时将两个jar文件复制到 tomcat安装目录\common\lib目录下或者tomcat安装目录\shared\lib目录下,如果只是在当前Web应用程序中使用,可以将这两个文件复制到web应用程序\WEB-INF\lib下 Jbuilder2006中自带有标签库jar包

核心标签库 核心标签库包含以下标签: 核心标签库 通用标签 条件标签 迭代标签

通用标签 3-1 通用标签库用于操作 JSP 页面内的作用域变量 通用标签库中的标签: 通用标签 set remove out catch

通用标签 3-1-1 <c:out>计算一个表达式并将结果输出到当前的JspWrite对象。 类似于jsp的表达式<%=expression%>,或者EL表达式${el-expression} 用法见out.jsp

通用标签 3-1-2 <c:set>用于在某个范围(Request,Session,Application等)中设置某个值,或者设置某个对象的属性 用法见set.jsp

通用标签 3-1-3 <c:remove>用于删除某个变量或者属性 var属性:要删除的参数的名字 Scope属性:参数的范围,如果没有指定,相当于调用pageContext.remove(varName),如果指定了范围,则相当于调用pageContext.remove(varName,scope) 参考remove.jsp

通用标签 3-1-4 <c:catch>将可能抛出异常的代码放置在<c:catch>和</c:catch>之间,如果其中的代码抛出异常,异常将被捕获,并被保存到var所标识的范围变量中,该变量总是有page范围

remove 标签用于删除具有作用域的变量 通用标签 3-2 插入使用通用标签的指令 <%@ taglib uri=http://java.sun.com/jstl/core_rt prefix="c" %> <body> <c:set var= "example" value="${100+1}" scope="session" /> <c:out value="${example}"/> <c:remove var= "example" scope="session"/> </body> set 标签用于给变量设置值和作用域 out 标签显示值的结果 remove 标签用于删除具有作用域的变量

通用标签 3-3 在 JSP 页面中使用通用标签 set、out 和 remove 标签的用法 演示:示例 2 <body> <H1>欢迎来到 Shop Stop</H1> 该 JSP 页面在一个 session 作用域内的变量中存储 sessionvariable, 此 Web 应用程序中的其他 JSP 页面可以访问此变量. <p /> <c:set var="sessionvariable" value="${80+8}" scope="session" /> 在删除 sessionvariable 之前先显示它的值: <c:out value="${sessionvariable}"/> <c:remove var="sessionvariable" scope="session" /> <br/> 显示并删除后的 sessionvariable 的值. <br /> <c:out value=“${sessionvariable}”> sessionvariable为NULL </c:out> </body> 在 JSP 页面中使用通用标签 set、out 和 remove 标签的用法 演示:示例 2

条件标签 2-1 JSTL 提供条件标签以支持 JSP 页面中的各种条件 条件标签包括: 条件标签 if choose when otherwise

条件标签 2-1-1 <c:if>实现java语言中if语句的功能 <c:choose>、<c:when>、<c:otherwise>一起实现互斥条件的执行,类似于java语言的if/else语句 参见choose.jsp

条件标签 2-2 在 JSP 页面中使用条件标签。 if 和 choose 标签的用法。 演示:示例 3 <body> <c:if test="${pageScope.signalStrength < 5}"> <c:set var="signalFailure" value="true" scope="page" /> </c:if> <h1> 使用 If 和 Choose</h1> <c:choose> <c:when test="${pageScope.signalFailure == true}"> 信号断开 </c:when> <c:otherwise> 信号打开 </c:otherwise> </c:choose> </body> 在 JSP 页面中使用条件标签。 if 和 choose 标签的用法。 演示:示例 3

迭代标签库 3-1 在jsp开发中,迭代是经常使用的操作,如果使用Scriptlets,那么常常使用Iterator或者Enumeration来进行迭代 迭代标签用于多次计算标签体 迭代标签库中的标签有: 迭代标签 forEach forTokens

迭代标签库 3-1-1 <c:forEach>对于包含了多个对象的集合进行迭代,重复执行它的标签体,或者重复迭代固定的次数 参见forEach.jsp

迭代标签库 3-1-2 <c:forTokens>用于迭代字符串中由分隔符的各个成员 参见fortokens.jsp

forEach 标签将遍历对象集合并显示 1 到 4 之间的数字 迭代标签库 3-2 <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> <%! String [] numbers = { "1", "2", "3", "4" }; %> <c:set var="member" value="Joe:Petter;Ryan|John" scope="page" /> <BODY> <c:forEach var="numbering" items="<%= numbers %>"> <c:out value="${numbering}" /> </c:forEach> <c:forTokens items="${pageScope.member}" delims=":;|" var="membername"> <c:out value="${membername}" /> <br /> </c:forTokens> </BODY> forEach 标签将遍历对象集合并显示 1 到 4 之间的数字 forTokens 将遍历用所提供的分隔符分隔的值并显示所有的名称

迭代标签库 3-3 在 JSP 页面中使用各种迭代标签 forEach 和 forTokens 标签的用法 演示:示例 4 <body > <H1>显示产品与公司名称</H1> <c:forEach var="company" items="<%= names %>"> ${company} <br/> </c:forEach> <br/> <c:forTokens items="${pageScope.language}" delims=":;|" var="currentName" varStatus="status"> 产品编号为 #P000<c:out value="${status.count}" /> 是<c:out value="${currentName}" /> <br /> </c:forTokens> </body > 演示:示例 4

什么是国际化 在Internet上,大多数的资源都是英文的.为了让不同国家都能看懂,于是定制了多个语言的版本,通过不同的URL访问.如微软中国是:http://www.microsoft.com/china/ 微软日本是:http://www.microsoft.com/japan/ Java语言在其内部采用Unicode字符集,为建立国际化web应用程序奠定了基础 国际化是指:程序在不做任何修改的情况下,就可以在不同的地区和不同的语言环境下,按照当地的语言和格式习惯显示字符. 一个国际化的程序,当它运行在本地机上时,需要根据本地机的语言和地区设置显示相应的字符,这个过程就叫本地化,通常简称L10N

I18N与格式化标签库 3-1 I18N 与格式化标签库可用于创建国际化的 Web 应用程序 分成两部分,一部分是国际化,一部分是日期,时间和数字化. I18N 应用程序的特点是: 可以在全世界运行 支持多语言 可以快速本地化

I18N与格式化标签库 3-2 国际化 (I18N) 与格式化标签库中的标签有: I18N 与格式化标签 setLocale bundle setBundle message

I18N与格式化标签库 3-2-1 <fmt:setLocale>用于设置用户的本地语言环境,并将指定的Locale保存到javax.servlet.jsp.jstl.fmt.locale配置变量中去 应该在I18N标签库中的其他标签前使用<setLocale>标签,通常<setLocale>标签应该放置在页面的开始处 Value属性表示语言和地区代码,必须包含两个小写字母的语言代码,还可以包含两个大写字母的国家和地区代码,之间以”_”或者”-”分割如:”zh_CN”

I18N与格式化标签库 3-2-2 语 言 代 码 语言 代码 汉语(Chinese) zh 英语(English) en 德语(German) de 法语(French) fr 日语(Japanese) ja 朝鲜语(Korean) ko 语 言 代 码

I18N与格式化标签库 3-2-3 国 家 地 区 代 码 国家(地区) 代码 中国(China) CN 美国(United States) US 英国(Great Britain) GB 加拿大(Canada) CA 德国(Germany) DE 日本(Japan) JP 韩国(Korea) KR 台湾(Taiwan) TW 香港(Hongkong) HK 国 家 地 区 代 码

I18N与格式化标签库 3-2-5 <fmt:setBudle>创建一个I18N本地上下文环境,加载资源包到上下文中,资源包的名字通过basename指定.

I18N与格式化标签库 3-2-5 <fmt:message>从资源包中查找一个指定键的值,用于显示本地化的消息 见fmt1.jsp

I18N与格式化标签库 3-2-6 <fmt:formatNumber>按照区域或者定制的方式将数字的值格式化为数字,货币,或者百分数。

I18N与格式化标签库 3-3 在 JSP 页面中使用 I18N 标签库 setLocale 标签的用法: 演示:示例 5 <body> <H2>数字格式示例</H2> 将 <B>123.4</B> 格式化为: <fmt:formatNumber value="123.4" type="number" minFractionDigits="3" /><BR> <HR> <H2>货币格式示例</H2> <c:set var="salary" value="125000" /> 工资: <c:out value="${salary}"/><BR> <fmt:setLocale value="en_GB"/> 用本机的 <B>en_GB</B> 将工资格式化为: <fmt:formatNumber type="currency" value="${salary}" /><BR> <fmt:setLocale value=“zh_CN"/> 用本机的 <B>zh_CN</B> 将工资格式化为: </body> 在 JSP 页面中使用 I18N 标签库 setLocale 标签的用法: 演示:示例 5

SetBundle 示例 为资源包创建各种属性 在 JSP 页面中使用 <setBundle> 标签 演示:示例 6 <c:if test="${param.language == 'en‘ || param.language == null}"> <fmt:setLocale value="en" scope="session" /> </c:if> <c:if test="${param.language == 'sv'}"> <fmt:setLocale value="sv" scope="session" /> <c:if test="${param.language == 'de'}"> <fmt:setLocale value="de" scope="session" /> <fmt:setBundle basename="labels" scope="session" /> . . . <body bgcolor="white"> <fmt:message key="select_language" />: <form action="index.jsp"> <p> <c:set var="currLang" value="${pagesBundle.locale.language}" /> <input type="radio" name="language" value="en" <c:if test="${currLang == ‘en’}“>已检查</c:if>/> <fmt:message key="english" /><br> <input type="radio" name="language" value="sv" <c:if test="${currLang == 'sv'}">已检查</c:if>/> <fmt:message key="swedish" /><br> <input type="radio" name="language" value="de" <c:if test="${currLang == 'de'}">已检查</c:if>/> <fmt:message key="german" /><br> <input type="submit" value="<fmt:message key="new_language" />"> </form> </body> 为资源包创建各种属性 在 JSP 页面中使用 <setBundle> 标签 title=Industry Trends select_language= Select your preferred language new_language= New Language english=English swedish=Swedish german=German title=Industrietendenzen select_language=Wählen Sie die gewünschte Sprache new_language=Neue Sprache english=Englisch swedish=Schwedisch german=Deutsche title=Industri Trender select_language=Välj språk new_language=Nytt Språk english=Engelska swedish=Svenska german=Tyska submit=Rösta 演示:示例 6

SQL 标签库 3-1 通常我们会按照MVC架构模式来设计web应用程序,将对数据库的操作封装在作为模型的javaBean中。然而,在一些小型的、简单的应用中,可能需要在jsp页面中直接编写访问数据库的代码,这时可以使用sql标签库来完成

SQL 标签库 3-1 SQL 标签库用于从 JSP 页面访问和更新数据库。 SQL 标签库具有以下功能: 传递各种数据库查询 访问查询结果 数据库修改 执行各种数据库事务 使用标签库SQL标签库,要用taglib指令指定要引用的标签库 <%@taglib uri=“http://java.sun.com/jsp/jstl/sql” prefix=“sql”%>

SQL 标签库 3-2 SQL 标签库中的标签有: SQL 标签库 setDataSource query update transaction param 设置数据源 数据库查询 用于执行insert,update,delete语句 用于为<sql:query>和<sql:update>子标签建立事务处理上下文 用于设置SQL语句中标记问号(?)的参数值

SQL 标签库 3-3 在 JSP 页面中使用 SQL 标签库 setDataSource 和 update 标签的用法: 演示:示例 7 <body> <h1> 使用 SQL 标签库</h1> <c:set var = "valprice" value = "1000"/> <sql:setDataSource driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver" url = "jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=sho pstop;" user="sa" password="" var="conn"/> <sql:transaction dataSource="${conn}"> <sql:update var="newTable"> CREATE TABLE ProductDetails ( ProductId int IDENTITY (1000, 1) NOT NULL primary key, ProductName varchar (20) NOT NULL , ProductType varchar (15) NOT NULL , Price varchar (5) NOT NULL , Brand varchar (25) NOT NULL , Description varchar (50) NOT NULL ) </sql:update> </sql:transaction> <sql:update var="newrow" dataSource="${conn}"> INSERT INTO ProductDetailss(ProductName, ProductType, Price, Brand, Description VALUES('牛仔裤 ', '衣服', '1000', 'Lee', '品质良好的牛仔裤') <sql:query var="products" dataSource="${conn}"> select * from ProductDetailss </sql:query> 在 JSP 页面中使用 SQL 标签库 setDataSource 和 update 标签的用法: 演示:示例 7

总结 JSTL 标签用于访问数据库、操作、设置和删除作用域变量和国际化标签 核心标签库是最常用的标签库 通用标签用于设置、删除和显示表达式的输出结果 条件标签用于有条件地执行标签 if 和 choose 标签用于有条件地执行标签 迭代标签用于多次执行标签体 forEach 和 forTokens 是迭代标签 I18N 与格式化标签库可用于创建国际化和标准化的 Web 应用程序 SQL 标签用于访问和更新数据库 SQL 标签适用于基于 Web 的小型应用程序