Presentation is loading. Please wait.

Presentation is loading. Please wait.

第十一章 JSP 标准标签库.

Similar presentations


Presentation on theme: "第十一章 JSP 标准标签库."— Presentation transcript:

1 第十一章 JSP 标准标签库

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

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

4 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页面的设计,为页面设计人员和程序开发人员的分工协作提供了便利

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

6 JSTL标签库 JSTL由5个不同功能的标签库组成 功能范围 URI 前缀 core(核心)
c I18N fmt SQL sql XML x funcions fn

7 配置JSTL(了解) 从 下载,下载的文件名为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包

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

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

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

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

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

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

14 remove 标签用于删除具有作用域的变量
通用标签 3-2 插入使用通用标签的指令 taglib uri= 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 标签用于删除具有作用域的变量

15 通用标签 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

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

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

18 条件标签 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

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

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

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

22 forEach 标签将遍历对象集合并显示 1 到 4 之间的数字
迭代标签库 3-2 taglib uri=" 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 将遍历用所提供的分隔符分隔的值并显示所有的名称

23 迭代标签库 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

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

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

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

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

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

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

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

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

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

33 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

34 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

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

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

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

38 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

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


Download ppt "第十一章 JSP 标准标签库."

Similar presentations


Ads by Google