Java Web应用开发课件第08章_第1页
Java Web应用开发课件第08章_第2页
Java Web应用开发课件第08章_第3页
Java Web应用开发课件第08章_第4页
Java Web应用开发课件第08章_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

8.1JSTL简介JSTL(JSPStandardTagLibrary)

:JSP标准标记库.JSTL目前已有三个版本:Standard-1.0Taglib、Standard-1.1Taglib、jstl-1.2Taglib。Standard-1.0Taglib(JSTLl.0)支持Servlet2.3和JSP1.2规范,Tomcat4支持这些规范

Standard-1.1Taglib(JSTLl.1)支持Servlet2.4和JSP2.0规范,Tomcat5支持这规范

JSTL1.2支持servlet2.5和JSP2.1的规范,

Tomcat6支持这规范

8.2Core标记库Core标记库一共有14个标记,分4类:(1)通用标记:<c:out>、<c:set>、<c:remove>、<c:catch>;(2)条件处理标记:<cif>、<c:choose>、<c:when>、<c:otherwise>;(3)循环控制标记:<c:forEach>、<c:forTokens>.;(4)URL相关标记:<c:import>、<c:url>、<credirect>、<c:param>。8.2.1通用标记1.<c:out>标记:<c:outvalue="expression"default="expression"escapeXml="boolean"/>2.<c:set>标记<c:setvalue="expression"var="varname"scope="scope"/>3.<c:remove>标记<c:removevar="name"scope="scope"/>4.<c:catch>标记<c:catchvar="name">value:输出到页面的数据。可以是EL表达式或常量

var:被赋值的变量名

;Value:值的信息;scope:变量的作用范围

源文件:c_out.jsp<%@pagecontentType="text/html;charset=gb2312"language="java"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><html><head><title>JSTL:c:out的使用</title></head><bodybgcolor="#FFFFFF"><hr><c:setvar="sessionAttr"value="sessionValue"scope="session"/><c:setvar="pageAttr"value="pageValue"scope="page"/><c:setvar="requestAttr"value="requestValue"scope="request"/><c:outvalue="以下输出的是前面设置的属性<br>"escapeXml="false"/><c:outvalue="${sessionAttr}"/><br><c:outvalue="${pageAttr}"/><br><c:outvalue="${requestAttr}"/><c:outvalue="${test_nodef}"default="没有test_nodef这个变量"/><br></body></html>8.2.1通用标记-案例8.2.2条件处理1.<c:if>标记<c:iftest="testCondition"var="varName"[scope="page|request|session|application"]>Bodycontent</c:if>2.<c:choose>标记、<c:when>标记、<c:otherwise>

<c:choose>

<c:whentest="testCondition"

>bodycontent

</c:when>…

<c:otherwise>bodycontent

</c:otherwise>

</c:chosse>test:测试条件;var:保存判断结果

<jsp:useBeanid="date"class="java.util.GregorianCalendar"/><c:setvar="time"value="<%=date.get(GregorianCalendar.AM_PM)%>"/><c:iftest="${time==0}">

早上好</c:if><c:iftest="${time==1}">

下午好</c:if>1.<c:forEach>标记语法格式1:遍历集合对象中的所有成员:<c:forEachitems="collection”[var="varName"][varStastus="varStatusNarne"]>bodycontent</c:forEach>语法格式2:循序指定的次数:<c:forEach[var="varName”][varStastus="varStatusName"][begin="begin"end="end"][step="step"]>bodycontent<c:forEarh>8.2.3循环控制items:进行循环的集合

var:做循环的对象变量名

varStatus:显示循环状态的变量源程序:c_forEach.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><html><head><title>JSTL::c:forEach的使用</title></head><%ArrayListarrayList=newArrayList();ArrayList.add("aa");ArrayList.add("bb");

arrayList.add

("cc"

)

;request.getSession().setAttribute("arrayList",arrayList);%><body>

<c:forEachitems="${sessionScope.arrayList}"var="temp">${temp}</c:forEach></body></html>8.2.3循环控制-案例1.<c:url>标记:用于URL重写<c:urlvalue="expression"[context="context"][var="varName"]

[scope="page|request|session|application"]>[<c:paramname="expression"value="expression"/>]</c:url>8.2.4URL标记2.<c:import>标记:类似JSP的<jsp:incluse>动作<c:importurl="url"[charEncoding="charEncoding"]>[<c:paramname="expression"value="expression"/>]</c:import>3.<c:redirect>标记:相当于response.setRedirect的作用

<c:redirecturl="value“>[<c:paramname="expression"value="expression"/>]</c:redirect>value:用来指定基本URL

var:存储URL的变量名

url:需要导入页面的URL

url:需要重定向的URL

8.3.I18N标记库I18N标记库就是用于在JSP页面中做国际化的动作。该标记库中的标记一共有12个,分为两类,如下所示。(1)国际化标记:<fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>、<fmt:param>、<fmt:requestEncoding>。(2)格式化标记:<fmt:timeZone>、<fmt:setTimeZone>、<fmt:formatNumber>、<fmt:parseNumber>、<fmt:formatDate>、<fmt:parseDate>。8.3.1国际化标记1.<fmt:setLocale>标记:用于设置本地化环境<fmt:setLocalevalue="locale"[scope="{page|request|session|application}"]/>locale

:是命名该语言环境的名称。语言环境名称是这样组成的:小写的两字母表示ISO语言代码,后面可以跟下划线或连字符以及大写的两字母以表示ISO国家或地区代码。scope:用来指定value的作用域<fmt:setLocalevalue="zh_TW"/>表示设置本地环境为繁体中文(中国台湾省)。<fmt:setLocalevalue="zh_CN"scope=”session”/>表示设置本地环境为简体中文。8.3.1国际化标记2.<fmt:bundle>标记:用于资源配置文件的绑定<fmt:bundlebasename="basename"[prefix="prefix"]>bodycontent</fmt:bundle>3.<fmt:setBundle>标记<fmt:setBundlebasename="basename"[var="varName"][scope="{page|request|session|application}"]/>basename:资源配置文件的指定,只需要指定文件名而无须扩展名。prefix:消息前缀

它与<fmt:bundle>的区别在于,<fmt:bundle>标记将资源配置文件绑定在标记体中显示,<fmt:setBundle>标记则允许将资源配置文件保存为一个变量

8.3.1国际化标记4.<fmt:message>标记:显示资源配置文件中定义的信息<fmt:messagekey="messageKey"[bundle="resourceBundle'][var=="varName"][scope='{page|request|session|application}"]><fmt:paramvalue="paramValue"/>]</fmt:message>5.<fmt:param>标记<fmt:paramvalue="paramValue"/>key:资源配置文件的“键”指定var:将显示信息保存为一个变量(如果没有指定var属性,显示信息直接输出)bundle:若使用<fmt:setBundle>保存了资源配置文件,该属性就可以从保存的资源配置文件中进行查找6.<fmt:requestEncoding>标记<fmt:requestEncodingvalue="charsetName"/>

8.3.1国际化标记-案例applicationMpertieslogin.userName=userNamelogin.password=passwordlogin.title=loginlogin.submit=loginlogin.cancel=cancel基本资源文件applicationMessage_zh_CN.propertieslogin.userName=\u7528\u6237\u540Dlogin.password=\u5BC6\u7801login.title=\u767B\u5F55login.submit=\u63D0\u4EA4login.cancel=\u53D6\u6D88中文资源文件applicationMessage.txtlogin.userName=用户名login.password=密码login.title=登录login.submit=登录login.cancel=取消在命令行窗口,输入下面的命令:D:\>native2ascii.exeapplicationMessage.txtapplicationMessage_zh_CN.properties<fmt:setBundlebasename="applicationMessage"var="applicationBundle"/><html><head><title>

<fmt:messagekey="login.title"bundle="${applicationBundle}"/></title>

</head><body><formaction=""><fmt:bundlebasename="applicationMessage"prefix="login."><fmt:messagekey="userName"/><inputtype="text"name="userName"><p>

<fmt:messagekey="password"/><inputtype="password"name="password"><p><inputtype="submit"value="<fmt:messagekey='submit'/>"><inputtype="reset"value="<fmt:messagekey='submit'/>"></fmt:bundle></form></body></html>8.3.1国际化标记-案例添加<fmt:setLocalevalue=“en”/>标记或在非中文客户端访问的结果添加<fmt:setLocalevalue=“zh”/>标记或在中文客户端访问的结果8.3.1国际化标记-案例8.3.2格式化标记1.<fmt:timeZone>标记:用于设定时区<fmt:timeZonevalue="timeZone">bodycontent</fmt:timeZone>2.<fmt:setTimeZone>标记<fmt:setTimeZonevalue="timeZone"[var="varName"][scope="{page|request|session|application}"]/>timeZone:时区代码与<fmt:timeZone>的区别是:<fmt:timeZone>标记将使得在其标记体内的工作可以使用该时区设置,<fmt:setTimeZone>标记则允许将时区设置保存为一个变量,在之后的工作可以根据该变量来进行3.<fmt:formatNumber>标记<fmt:formatNumbervalue="numericValue"[type="{number|currency|percent}"][pattern="customPattern"][currencyCode="currencyCode"][currencySymbol="currencySymbol"][groupingUsed="{true|false}"][maxIntegerDigits="maxIntegerDigits"][minIntegerDigits="minIntegerDigits][maxFractionDigits="maxFractionDigits"][minFractionDigits="minFractionDigits"][var="varName"][scope="{page|request|session|application}]/>8.3.2格式化标记type:取值为number、currency、percent之一

pattern:格式化模式

例如:<fmt:formatNumbervalue="1000.888"type="currency"var="money"/>${money}该结果将被保存在money变量中,将根据Locale环境显示当地的货币格式。如果没有设置Locale,在中文客户端浏览器中的结果为:¥1,000.89符号

意义0

一个数位#

一个数位,前导零和追尾零不显示.

小数点分割位置,

组分隔符的位置-

负数前缀%

用100乘,并显示百分号pattern:格式化模式

例:<fmt:formatNumbervalue="123456.7"pattern="#,#00.0#"/>该例显示结果为:123,456.7。8.3.2格式化标记4.<fmt:parseNumber>标记<fmt:parseNumbervalue="numericValue"[type="{number|currency|percent}"][pattern="customPattern"][parseLocale="parseLocale"][integerOnly="{true|false}"][var="varName"][scope="{page|request|session|application}"]/>例如:<fmt:parseNumbervalue="15%"type="percent"var="num"/>解析之后的结果为0.15。8.3.2格式化标记5.<fmt:formatDate>标记:用于格式化日期<fmt:formatDatevalue="date"[type="{time|date|both}"][dateStyle="{default|short|medium|long|full}"][timeStyle="{default|short|medium|long|full)"][pattern="customPattern"][timeZone="timeZone"][var="varName"][scope="{page|request|session|application}"]/>例如:

<%request.setAttribute("date1",newDate());%>

<fmt:formatDatevalue="${date1}"pattern="yyyy-MM-ddhh:mm:ss"type="date"dateStyle="long"/>注:时间pattern表示方法:hh:mm:ss按12小时制显示,HH:MM:SS按24小时制显示。8.4SQL标记库1.<sql:setDataSource>标记用于设置数据源。有两种语法格式,一种是JNDI数据源(由WEB服务器提供),一种是JDBC数据源。语法格式1-JNDI数据源:

<sql:setDataSourcedataSource="dataSource"[var="varName"][scope="scope"]/>语法格式2-JDBC数据源:

<sql:setDataSourceurl="jdbcUrl"driver="driverClassName"user="userName"password="password"[var="varName"][scope="scope"]/>dataSource:为WEB服务器中配置的数据源(参考例8-9)

driver:jdbc驱动url:数据库的URLuser:用户password:密码8.4SQL标记库2.<sql:query>标记:用于查询数据库语法格式l:<sql:querysql="sqlQuery"var="varName"[scope="scope"][dataSource="dataSource"][maxRows="maxRows"][startRow="startRow"]/>语法格式2:<sql:queryvar="varName"[scope="scope"][dataSource="dataSource"][maxRows="maxRows"][startRow="startRow"]>query<sql:param></sql:query>dataSource:数据来源sql:查询语句var:查询结果保存变量该语法可以通过<sql:param>给SQL语句传递参数8.4SQL标记库3.<sql:param>标记:用于设置SQL预处理语句中的参数<sql:paramvalue="value"/>或:<sql:param>value</sql:param>4.<sql:dateParam>标记<sql:dateParam>标记用于向SQL语句传递java.util.Date类型的参数。语法格式如下:<sql:dateparamvalue="value"[type="date|time|timestamp"]/>Value:表示参数值只用于传日期参数8.4SQL标记库5.<sql:update>标记:用于更新数据库它的标记体内可以是一句SQL更新语句。其使用和<sql:query>标记没有什么不同6.<sql:transaction>标记:用于数据库的事务处理<sql:transaction[dataSource="dataSource"][isolation="read_committed|read_uncommitted|repeatable_read|serializable"]<sql:query>or<sql:update><sql:transaction>8.4SQL标记库-案例例8-9:利用SQL标记查询数据库数据(1)把MySQL的JDBC驱动拷贝到Tomcat安装目录\common\lib目录下。(2)配置数据库连接池:在Tomcat安装目录/conf目录下,找到server.xml,并用记事本或写字板打开,在其中添加下面这段代码:<Contextpath="/JstlTest"docBase="JstlTest"debug="5"reloadable="true"crossContext="true"><Resourcename="myds"auth="Container"type="javax.sql.DataSource"maxActive="5"maxIdle="3"maxWait="10000"username="root"password="root"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/mytest?autoReconnect=true"/></Context>Tomcat数据库连接池配置(3)新建一个JSP文件,文件名为sqlQuery.jsp。代码如下:8.4SQL标记库-案例<%@pagepageEncoding="gb2312"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><%@taglibprefix="sql"uri="/jsp/jstl/sql"%><html><head><title>sqlquery</title></head><body><h1>学生信息浏览</h1>

<sql:setDataSourcedataSource="myds"var="mysql"/>

<sql:querysql="selectsno,snamefromstudents"var="rs"dataSource="${mysql}"/><tableborder="1"width="200px"><tr><th>学号</th><th>姓名</th></tr><c:forEachvar="row"items="${rs.rows}">

<tr><td>${row.sno}</td><td>${row.sname}</td></tr></c:forEach></table></body></html>8.5XML标记库XMLprocessing标记库为程序设计者提供了基本的对XML格式文件的操作。该标记库中一共有10个标记,分为3类。

核心操作标记:<x:parse>、<x:out>、<x:set>。流程控制标记:<x:if>、<x:choose>、<x:when>、<x:otherwise>、<x:forEach>。转换操作标记:<x:transform>、<x:param>。8.5.1核心操作1.<x:parse>标记:用于解析XML文件<x:parsedoc="XMLDocument"[var="varName"[scope="scope"]]/>doc:源XML的内容var:将解析后的XML保存在该属性所指定的变量中例如:<c:importvar="xmlFile"url="/SampleXmLxml"/><x:parsevar="parseFile"doc="${xmlFile}"/><c:import>标记将源XML文件的内容保存在xmlFile变量中.<x:parse>标记根据xmlFile变量的值解析SampleXml.xml。并将解释后的结果保存到

parseFile变量中8.5.1核心操作2.<x:out>标记:从<x:parse>标记解析后保存的变量中取得需要的XML文件内容,并显示在页面上.

<x:outselect="xPathExpression"[escapeXml="{true|false}"]/>select:XPath表达式escapeXml:当特殊字符如<、>、&、‘、“等出现在取得的结果字符串中时,是否将以转义字符来替换3.<x:set>标记:将某个源XML中元素的实体内容或属性保存到一个变量中去<x:setselect="xPathExpression"var="varName"[scope="scope"]/>8.5.1核心操作-案例例8-10

:<x:parse>与<x:out>标记应用示例

book.xml<?xmlversion="1.0"encoding="utf-8"?><xml-body><books><book><title>cobol</title><author>roy</author></book><book><title>java</title><author>herbert</author></book><book><title>c++</title><author>robert</author></book></books></xml-body>xmlTagTest.jsp<%@pagepageEncoding="utf-8"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><%@taglibprefix="x"uri="/jsp/jstl/xml"%><html><head><title>TEST</title></head><body>

<c:importurl="/book.xml"var="xmlFile"/>

<x:parsevar="parseXmlFile"doc="${xmlFile}"/>name:<x:outselect="$parseXmlFile/xml-body/books/book/author"/><br>

</body></html>8.5.2流程控制1.<x:if>标记:允许由XPath的boolean()函数得到的判断结果来判断是否显示其标记所包含的内容<x:ifselect=“XPathExpression”var="varName”[scope=“scope"]>Bodycontent</x:if>例如:<c:setvar="s"value="roy"></c:set><c:importurl="/book.xml"var="xmlFile"/><x:parsevar="parseXmlFile"doc="${xmlFile}"/><x:ifselect="$parseXmlFile/xml-body/books/book/author=$s"><x:outselect="$parseXmlFile/xml-body/books/book/title"/></x:if>8.5.2流程控制2.<x:choose>标记<x:choose>

bodycontent(<when>and<otherwise>)</x:chosse>3.<x:when>标记<x:whenselect=“XPathExpression”>bodycontent</x:when>4.<x:otherwise>标记<x:othwise>bodycontent</x:otherwise>8.5.2流程控制5.<x:forEach>标记:对XML文件中同一

温馨提示

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

评论

0/150

提交评论