第11章JSP标准标签库_第1页
第11章JSP标准标签库_第2页
第11章JSP标准标签库_第3页
第11章JSP标准标签库_第4页
第11章JSP标准标签库_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程名称:Java Web应用开发 北大青鸟Aptech·学术部Java Web应用开发教案第十一章 JSP标准标签库2011-7-171.回顾:10分钟22.课程知识点讲解:22.1.JSTL 简介5分钟32.2.核心标签库20分钟32.3.国际化与格式化标签库30分钟52.4.SQL 标签库30分钟73.本章总结 10分钟84.考核点95.扩展部分:96.学员问题汇总:97.作业:91 回顾:10分钟2 课程知识点讲解11 JSTL 简介5分钟核心标签库、国际化(I18N) 与格式化标签库、XML 标签库以及SQL 标签库;JSTL 标签库的两种版本;使用JSTL 的taglib

2、 指令;12 核心标签库20分钟<c:set>、<c:remove>;<c:out>;<c:if>;<c:choose>;<c:forEach>;<c:forTokens>;13 国际化与格式化标签库30分钟<fmt:setLocale>;<fmt:bundle>;<fmt:setBundle>;<fmt:message>;理解资源文件;14 SQL 标签库30分钟<sql:setDataSource>;<sql:query>;<sq

3、l:update>;<sql:transaction>;<sql:param>;3 本章总结10分钟4 学员问题汇总5 作业授课教师:谢华军课时:2小时l 本章主要目的1、理解核心标签库2、理解I18N 和格式标签3、理解SQL 标签库l 本章重点理解JSTL 的概念和如何使用标准标签库编写JSP 页面l 本章难点SQL 标签库1. 回顾:10分钟提问:定义简单标签的处理程序文件需要几个步骤?自定义标签是用户定义的 JSP 语言元素标签处理程序是一个对象,Web 容器调用此对象,以在执行 JSP 页面的过程中解释自定义标签简单标签的处理程序必须实现 Tag 接口的

4、 doStartTag() 和 doEndTag() 方法标签库描述符 (TLD, Tag Library Descriptor) 包含库以及该库中所包含的每个标签的信息标签文件,用更简单的方式来自定义标签。2. 课程知识点讲解:2.1. JSTL 简介5分钟从上节自定义标签作引入:我们无论做什么系统,在jsp编写中或许会遇到相同或者相似的操作,例如对变量的输出以及赋值操作,一些条件处理以及对一个集合的循环操作,还有连接查询数据库等通用的操作,这些如果用标签实现是不是要每做一个项目都要作一套标签么?如果有现成的这种标准库那不就方便多了!答案是肯定的!下面要讲述的就是这种标签库。JSTL 是什么

5、:Java Server Pages 标准标签库 (JSTL) 包含的各种标签可用于 JSP 页面中。 JSP 标准标签库 (JSTL) - 提供两组标签,一组使用 EL(Expression Language,表达式语言),而另一组支持使用请求时表达式。为什么要用JSTL:可以编写没有java代码的jsp页面。使JSP页面很容易被WEB设计人员理解,表达更清晰。减少程序出错,是程序容易维护。 JSP 标准标签库包括:核心标签库,I18N与格式化标签库,SQL标签库,XML标签库。核心标签库:包含各种常用的标签,如通用,迭代,条件等标签。I18N与格式化标签库:包含国际化标签和格式化标签。SQ

6、L标签库:包含数据库访问和更新的标签。XML标签库:包含对XML操作的标签。2.2. 核心标签库20分钟要使用核心标签库,必须先导入核心标签库的URI,语法如下:<% taglib uri=” prefix=”c” %>1. 通用标签通用标签库用于操作 JSP 页面内的作用域变量。<c:set>:设置jsp中的变量,如果不存在就创建它。语法:<c:set var=”变量名” value=” 变量值” scope=”作用域范围”>作用域范围,是page,request,session,application中的一个,默认是page。<c:remove&g

7、t;:用于删除创建的变量。语法:<c:set var=”变量名” scope=”作用域范围”>作用域范围,是page,request,session,application中的一个,默认是page。<c:out>:输出表达式值到页面。语法:<c:out value=”要输出的值” escapeXml=”truefalse” default=”默认值”>escapeXml,确定是否将结果中的字符(如<,>,&,”,)转化乘字符实体代码,默认为true。教材192上有个转换表。示例: <% page contentType="

8、text/html; charset=GBK" %><% taglib uri=" prefix="c" %><html><head><title>dtjsp</title></head><body bgcolor="#ffffff"><c:set var="co" scope="page" value="1"/>输出变量<c:out value="$co&q

9、uot;/><c:remove var="co" scope=”page” />删除后输出变量<c:out value="$co"/></body></html>2. 条件标签JSTL 提供条件标签以支持 JSP 页面中的各种条件。<c:if>:用于有条件的执行代码。是容器标签。语法:<c:if test=”条件表达式” var=”变量名” scope=”变量范围”>内容</c:if>提示:属性var和scope是可选。<c:choose>:用于执行条件

10、语句块,类似 Java中的switch语句。是容器标签。和<c:when><c:otherwise>一起使用。语法:<c:choose><c:when test=”条件1”>内容</c:when><c:otherwise>内容</c:otherwise></c:choose>3. 迭代标签迭代标签用于多次计算标签体,循环计算。<c:forEach>:语法:<c:forEach var="变量名" items="要遍历的对象集合" v

11、arStatus=”变量状态” begin=”开始位置” end=”结束位置”>内容</c:forEach><c:forTokens>:用于遍历用分隔符的值的集合。语法:<c:forTokens var="变量名" items="要遍历的对象集合" delims=”分隔符” varStatus=”变量状态” >内容</c:forEach>示例: <% page contentType="text/html; charset=GBK" %><% taglib uri

12、=" prefix="c" %><html><head><title>dtjsp</title></head><body bgcolor="#ffffff"><% String str = "hello","haha","hi" pageContext.setAttribute("sts",str);%>用forEach输出数组对象<br><c:forEach

13、 var="va" items="$pageScope.sts" varStatus="ss"><c:out value="第$ss.count个 : $va"/><br></c:forEach><br><c:set var="co" scope="page" value="1;2:3'45|9.6"/>用forTokens输出$co<br><c:forTokens

14、 delims=":'|." items="$co" var="so" varStatus="soo"><c:out value="第$soo.count个 : $so"/><br></c:forTokens></body></html>2.3. 国际化与格式化标签库30分钟什么叫国际化?例如我开发一套系统中国人用,英国人也用,就是说要求系统界面要有中文的和英文的,系统里边日期货币等格式问题也不同,是不是我们就要做两套系统

15、,起码要做两套jsp呢?如果是,将来系统维护升级一个地方,我就要修改这两套系统的代码,麻烦!有没有办法把不同的语言统一到一个系统里边呢?当然有,我们下边的国际化和格式化标签库就可以很方便的解决问题!I18N(在英文中, 国际化(Internationalization)被缩写为I18N, 即只取首尾两个字母, 中间字母为18个) 与格式化标签库可用于创建国际化的 Web 应用程序。它也可用于对经过格式化的数字和日期-时间的输出结果进行标准化。I18N 应用程序的特点是: 可以在全世界运行;支持多语言;可以快速本地化。首先导入国际化和格式化标签库:<% taglib uri="

16、prefix="fmt" %>国际化 (I18N) 与格式化标签库中的标签有:<fmt:setLocale>:用于重写客户端指定的区域设置。这是空标签。<fmt:bundle>:创建一个I18N本地化上下文,并加载它的资源包。容器标签。<fmt:setBundle>:创建一个I18N本地化上下文,并加载它的资源包,存储在范围变量里。空标签。<fmt:message>用于给出资源包的输出值。注意:资源文件要保存在/WEB-INF/classes目录下;页面的字符集要设置为utf-8。需要把资源文件的本地编码转换为unico

17、de编码,用jdk工具native2ascii。示例: reg.jsp<% page contentType="text/html; charset=utf-8" %><% taglib uri=" prefix="c" %><% taglib uri=" prefix="fmt" %><c:if test="$param.lang = 'zh_CN' | param.lang = null"> <fmt:setLocale

18、value="zh_CN" scope="session"/></c:if><c:if test="$param.lang = 'en'"> <fmt:setLocale value="en" scope="session"/></c:if><fmt:setBundle basename="reg" scope="session"/><html><head&

19、gt;<title>regjsp</title><style type="text/css"><!-.style1 font-size: 36px;font-weight: bold;-></style></head><body><p align="center" class="style1"><fmt:message key="title"/></p><form name="fo

20、rm1" method="post" action="savereg.jsp"> <table width="400" border="1" align="center"> <tr> <td width="178"><div align="right"><fmt:message key="username"/></div></td> &l

21、t;td width="206"><input name="username" type="text" id="username"></td> </tr> <tr> <td><div align="right"><fmt:message key="password"/>&nbsp;</div></td> <td><input name=&

22、quot;password" type="text" id="password"></td> </tr> <tr> <td><div align="right"><fmt:message key="email"/>&nbsp;</div></td> <td><input name="email" type="text" id="e

23、mail"></td> </tr> <tr> <td><div align="center"> <input type="reset" name="Submit" value="<fmt:message key="reset"/>"> </div></td> <td><div align="center"> <input t

24、ype="submit" name="Submit2" value="<fmt:message key="submit"/>"> </div></td> </tr> </table></form><fmt:message key="select_lang"/>: <a href="regjsp.jsp?lang=zh_CN"><fmt:message key="

25、;lang1"/></a> <a href="regjsp.jsp?lang=en"><fmt:message key="lang2"/></a></body></html>示例: reg_en. propertiestitle=Registerselect_lang=Select your perferred languagelang1=u4e2du6587lang2=Englishusername=User Namepassword=PassWordemail=E

26、-mailsubmit=Submitreset=Reset示例: reg_zh_CN. propertiestitle=u6ce8u518cselect_lang=u9009u62e9u60a8u559cu6b22u7684u8bedu8a00lang1=u4e2du6587lang2=Englishusername=u7528u6237u540dpassword=u5bc6u7801email=u90aeu7bb1submit=u63d0u4ea4reset=u91cdu7f6e2.4. SQL 标签库30分钟SQL 标签库用于从 JSP 页面访问和更新数据库。SQL 标签库具有以下功能:传

27、递各种数据库查询;访问查询结果;数据库修改;执行各种数据库事务。导入标签库:<% taglib uri=" prefix="sql" %>SQL 标签库中的标签有:<sql:setDataSource>用于为数据库设置数据源。空标签。<sql:query>:查询数据标签。<sql:update>:更新数据标签,包括了sql语句里的insert,update,delete操作。<sql:transaction>:事务标签。<sql:param>:sql参数标签,和<sql:query>

28、;或<sql:update>一起使用。示例: savereg.jsp<% page contentType="text/html; charset=GBK" %><% taglib uri=" prefix="c" %><% taglib uri=" prefix="sql" %><sql:setDataSource url="jdbc:odbc:liu" driver="sun.jdbc.odbc.JdbcOdbcDriver&q

29、uot; user="" password="" var="conn" scope="session"/><sql:update dataSource="$conn" var="result" scope="page"><%- insert into users(username,userpwd,email) values('$param.username','$param.password',

30、9;$param.email') -%>insert into users(username,userpwd,email) values(?,?,?)<sql:param value="$param.username"/><sql:param value="$param.password"/><sql:param value="$param.email"/></sql:update><html><head><title>savereg&l

31、t;/title></head><body bgcolor="#ffffff"><c:if test="$result > 0">$'注册成功'</c:if><c:if test="$result <= 0">$'注册失败'</c:if></body></html>示例: showuser.jsp 显示用户表里所有用户。<% page contentType="text/ht

32、ml; charset=GBK" %><% taglib uri=" prefix="c" %><% taglib uri=" prefix="sql" %><sql:setDataSource url="jdbc:odbc:liu" driver="sun.jdbc.odbc.JdbcOdbcDriver" user="" password="" var="conn" scope=&quo

33、t;session"/><sql:query var="user" dataSource="$conn" scope="page">select * from users</sql:query><html><head><title>showuser</title></head><body bgcolor="#ffffff"><table border="1"> <tr

34、> <c:forEach var="colname" items="$user.columnNames"> <th> <c:out value="$colname"> </c:out> </th> </c:forEach> </tr><c:forEach var="row" items="$user.rowsByIndex"> <tr> <c:forEach var="

35、;col" items="$row"> <td><c:out value="$col"></c:out></td> </c:forEach> </tr></c:forEach></table></body></html>3. 本章总结 10分钟五分钟: 让学员提问方式来提出没学懂的地方三分钟: 总结本课堂:JSP标签库是一个通用的标准标签库,给我们提供了很多通用的操作。我们可以象用普通的HTML标签一样来应用它。注意区别

36、forEach标签和forTokens标签。重点是要熟练综合应用本标签库对数据库进行操作以及展示数据。4. 考核点 考核点1:标准标签库的结构 考核点2:SQL标签的用法5. 扩展部分:<% taglib prefix="c" uri=" %><% taglib prefix="sql" uri=" %><html><head><title>所有客户</title></head><body bgcolor="white">

37、;<c:set var="noOfRows" value="2" /><sql:setDataSource driver ="com.microsoft.jdbc.sqlserver.SQLServerDriver" url ="jdbc:microsoft:sqlserver:/accp:1433;DataBaseName=pubs;" user="sa" password="sa" var="conn"/><c:if te

38、st="$custList = null"><sql:query var="custList" scope="session"sql="SELECT * FROM Customers ORDER BY LastName"dataSource="$conn"/></c:if><c:choose><c:when test="$custList.rowCount = 0">此处不再有其他客户.</c:when><

39、;c:otherwise><b>以下是客户列表:</b><p><table border="1"><th>姓氏</th><th>名字</th><th>年龄</th><c:forEach items="$custList.rows" var="row"begin="$param.start" end="$param.start +noOfRows - 1"><tr><td><c:out value="$row.LastName" /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论