posts - 37, comments - 8, trackbacks - 0, articles - 0
          1、I18N與格式化標(biāo)簽庫
              國際化(I18N)與格式化標(biāo)簽庫可用于創(chuàng)建國際化的WEB應(yīng)用程序,它們對數(shù)字和日期、時間的輸出進(jìn)行了標(biāo)準(zhǔn)化。國際化的應(yīng)用程序支持多種語言。在JSP頁面導(dǎo)入國際化與格式化標(biāo)簽的語法是:
          <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
          常用的標(biāo)簽有:<fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>等。
              1)<fmt:setLocale>標(biāo)簽用于重寫客戶端指定的區(qū)域設(shè)置。它將區(qū)域設(shè)置存儲在javax.servlet.jsp.jstl.fmt配置變量中。setLocale是一個空標(biāo)簽,其使用用法為:
          <fmt:setLocale value="setting" variant="variant" scope="page/request/session/application"/>
          value:包含一個含有兩個小寫字母的語言代碼和一個含有兩個大寫字母的國家或地區(qū)代碼。語言和國家或地域代碼應(yīng)用連字符或下劃線分隔,如:zh_CN.
          variant:指定特定于瀏覽器的變量,它是可選的。
          scope:指定配置變量的范圍。
              2)<fmt:setLocale>標(biāo)簽使用演示:
          <%@ page contentType="text/html; charset=GBK"%>
          <%@ page import="java.util.*"%>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
          <%
          //獲得本區(qū)域
          String locale=request.getLocale().toString();
          Date now=new Date();
          pageContext.setAttribute(
          "now",now);
          %>
          <h3>數(shù)字格式化示例:</h3>
          <fmt:formatNumber value="999.9999" type="number" maxFractionDigits="4" />
          <h3>貨幣格式化示例:</h3>
          <c:set var="salary" value="12000"/>
          本地格式化:
          <fmt:formatNumber type="currency" value="${salary}"/>
          ;en_US格式化:
          <fmt:setLocale value="en_US"/>
          <fmt:formatNumber type="currency" value="${salary}"/>
          <h3>日期格式化示例:</h3>
          en_US格式化:
          <fmt:formatDate value="${now}"/>
          ;本地格式化:
          <fmt:setLocale value="${locale}"/>
          <fmt:formatDate value="${now}"/>
              3)<fmt:bundle>標(biāo)簽,用于創(chuàng)建一個I18N本地化上下文,并將這的資源包加載到其中。資源包的名稱由<fmt:bundle>標(biāo)簽的basename屬性指定。其語法為:
          <fmt:bundle basename="basename">
          本體內(nèi)容
          </fmt:bundle>
              4)<fmt:message>標(biāo)簽,用于給出資源包的輸出值,其屬性key指定消息的關(guān)鍵字。此標(biāo)簽的語法為:
          <fmt:message key="messagekey">
              5)<fmt:bundle>標(biāo)簽與<fmt:message>標(biāo)簽的使用演示:
              首先定義好兩個資源包,英文版input.properties,中文版input_zh_CN.properties,把兩者拷貝到WEB應(yīng)用下的“WEB-INF/classes”目錄下。讀取資源的JSP文件的源碼如下:
          <%@ page contentType="text/html; charset=GBK"%>
          <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
          <html>
          <fmt:bundle basename="input">
              
          <head>
                      
          <title><fmt:message key="title" /></title>
              
          </head>
                  
          <h1>
                      
          <fmt:message key="hello" /> 
                  
          </h1>
          </fmt:bundle>
          </html>
              英文版input.properties的內(nèi)容:
          title=this is a fmtdemo
          hello=welcome you to here!
              中文版input_zh_CN.properties的內(nèi)容:
          title=\u56fd\u9645\u6f14\u793a
          hello=\u55ef\uff0c\u4e0d\u9519~\u52a0\u6cb9\uff01
             調(diào)試的時候,要設(shè)置瀏覽器的語言設(shè)置來調(diào)用不包的資源包。比如IE:工具-->internet選項(xiàng)-->語言,進(jìn)行相應(yīng)的設(shè)置。
              中文版input_zh_CN.properties的內(nèi)容是經(jīng)過nuicode編碼后形成,這是因?yàn)閖ava對于資源文件的處理只支持單字節(jié),要作這樣的處理。在JDK的bin目錄下有一個native2ascii可以完成這個功能。首先用中文寫一個資源文件china.properties,然后進(jìn)行編譯即可,代碼如下:
          native2ascii -encoding gb2312 china.properties input_zh_CN.properties
          china.properties的內(nèi)容:
          title=國際演示
          hello=嗯,不錯~加油!
          注:native2ascii可以解決亂碼問題。
              6)<fmt:setBundle>創(chuàng)建一個I18N本地化的上下文,并將它存儲在范圍變量中。它是一個空標(biāo)簽,其語法如下:
          <fmt:setBundle basename="basename" var="varName" scope="page/request/session/application"/>
          basename:指定資源包的名稱。
          var:指定導(dǎo)出的范圍變量的名稱,它存儲在I18N本地化上下文。
          scope:指定var的范圍。
              7)<fmt:setBundle>標(biāo)簽使用演示:
          <%@ page contentType="text/html; charset=GBK"%>
          <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
          <html>
              
          <head>
                  
          <fmt:setLocale value="zh_CN" scope="page" />
                  
          <fmt:setBundle basename="input" scope="page" />
                  
          <title><fmt:message key="title" /></title>
              
          </head>
              
          <body>
                  
          <h1>
                      
          <fmt:message key="hello" />   
                  
          </h1>
              
          </body>
          </html>
              采有這種方式導(dǎo)入包,即使改變?yōu)g覽器的語言設(shè)置,也是始終按所設(shè)置的本地語言顯示。
          2、SQL標(biāo)簽庫
              JSTL的SQL標(biāo)簽用于訪問各種關(guān)系數(shù)據(jù)庫,是為了基于WEB的小型應(yīng)用程序而設(shè)計的。它提供的各種標(biāo)簽可以在JSP頁面內(nèi)直接訪問數(shù)據(jù)庫,在JSP頁面中導(dǎo)入SQL標(biāo)簽庫的語法是:
          <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
              此處重點(diǎn)介紹<sql:setDataSource>、<sql:query>、<sql:update>、<sql:transaction>等幾個常用標(biāo)簽的使用方法。
              1)<sql:setDataSource>標(biāo)簽用于為數(shù)據(jù)庫設(shè)置數(shù)據(jù)源。它是一個空標(biāo)簽,其語法為:
          <sql:setDataSource DataSource="datasource" url="jdbcrul" driver="driverclassdriver" user="username" password="usepwd" var="varname" scope="page|request|session|application"/>
          DataSource:可以是Java命名和目錄接口資源的路徑或JDBC參數(shù)字符串。
          url:是與數(shù)據(jù)庫關(guān)聯(lián)的URL。
          driver:是一個JDBC參數(shù),其值為驅(qū)動程序的類名。
          user:是數(shù)據(jù)庫的用戶名。
          password:是用戶的密碼。
          var:是指定數(shù)據(jù)源的導(dǎo)出范圍變量的名稱。
          scope:指定范圍。
              注意,在<sql:setDataSource>中,如果使用了DataSource屬性,則無法使用URI屬性。
              2)<sql:query>標(biāo)簽用于搜索數(shù)據(jù)庫并返回包含數(shù)據(jù)行的結(jié)果集。其語法為:
          <sql:query var="varname" dataSource="datasource" scope="page|request|session|application" maxRows="maxrows" startRow="startRow">
          要執(zhí)行的SQL語句
          <sql:param/>
          </sql:query>
          var:為查詢結(jié)果指定導(dǎo)出的范圍變量的名稱。
          scope:指定變量的范圍。
          dataSource:指定與要查詢的數(shù)據(jù)庫關(guān)聯(lián)的數(shù)據(jù)源。
          maxRows:指定結(jié)果中所包含的數(shù)據(jù)的最大行數(shù)。
          startRow:指定從指定索引開始的數(shù)據(jù)行。
              3)<sql:update>標(biāo)簽用于執(zhí)行insert、update和delete語句。如果所有數(shù)據(jù)行都沒有受到插入、更新或刪除操作的影響,則會返回0。其語法為:
          <sql:update datasource="datasource" var="varName" scope="page|request|session|application">
          SQL語句
          <sql:param/>
          </sql:update>
          其中:
          SQL語句:指定的update、insert、delete語句。
          dataSource:是與要更新的數(shù)據(jù)庫關(guān)聯(lián)的數(shù)據(jù)源。
          var:為數(shù)據(jù)庫更新的結(jié)果指定導(dǎo)出的范圍變量的名稱。
          scope:指定變量的范圍。
              4)<sql:transaction>標(biāo)簽用于為<sql:query>標(biāo)簽和<sql:update>標(biāo)簽建立事務(wù)處理上下文。其語法為:
          <sql:transaction dataSource="datasource" isolation="isoationLevel">
          使用
          <sql:query><sql:update>語句
          </sql:transaction>
          dataSource:設(shè)置SQL的數(shù)據(jù)源,它可以是字符串或一個DataSource對象。
          isolation:設(shè)置事務(wù)處理的隔離級別。隔離級別可以是read_committed、read_uncommitted、repeatable_read或serializable。
              5)使用sql標(biāo)簽的實(shí)例演示:
          <%@ page contentType="text/html; charset=GBK"%>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
          <html>
              
          <head>
                  
          <title>sqldemo</title>
              
          </head>
              
          <body bgcolor="#ffffff">
                  
          <h1>
                      使用 SQL 標(biāo)簽庫
                  
          </h1>
                  
          <c:set var="valprice" value="1000" />
                  
          <sql:setDataSource
                      
          driver="oracle.jdbc.driver.OracleDriver"
                      url
          ="jdbc:oracle:thin:@127.0.0.1:1521:wzz"
                      user
          ="scott" password="tiger" var="conn" />
                  
          <sql:transaction dataSource="${conn}">
                      
          <sql:update var="newTable">
                          create table PRODUCTDETAILS
                          (
                            PRODUCTNAME NVARCHAR2(20) not null,
                            PRODUCTTYPE NVARCHAR2(15) not null,
                            PRICE       NVARCHAR2(5) not null,
                            BRAND       NVARCHAR2(25) not null,
                            DESCRIPTION NVARCHAR2(50) not null
                          )
                      
          </sql:update>
                  
          </sql:transaction>
                  
          <sql:update var="newrow" dataSource="${conn}">
                      INSERT INTO ProductDetails(ProductName, ProductType,
                      Price, Brand, Description)
                      VALUES('JSP專家導(dǎo)學(xué) ', '編程書籍', '1000', 'Lee', '適合大專院校的教材或參考書籍')
                  
          </sql:update>
                  
          <sql:query var="products" dataSource="${conn}">
                      select * from ProductDetails
                  
          </sql:query>

                  
          <table border="1">
                      
          <c:forEach items="${products.rows}" var="row">
                          
          <tr>
                              
          <td>
                                  ${row.ProductName}
                              
          </td>
                              
          <td>
                                  ${row.ProductType}
                              
          </td>
                              
          <td>
                                  ${row.Price}
                              
          </td>
                              
          <td>
                                  ${row.Description}
                              
          </td>
                          
          </tr>
                      
          </c:forEach>
                  
          </table>
              
          </body>
          </html>
              注:本實(shí)例連接的oracle,要將classes.jar導(dǎo)入到相應(yīng)的目錄下。
          3、XML標(biāo)簽庫
              JSTL提供了一些有關(guān)XML的標(biāo)簽,讓開人員可不用深入了解SAX和DOM等API,就可以輕易地處理XML文件。在頁面中導(dǎo)入XML標(biāo)簽庫的語法:
          <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
              1)<x:parse>標(biāo)簽用解析XML文件,其語法為:
          <x: parse={var="var"[scope="{page|request|session|application}"]|varDom="var"[scopeDom="{page|request|session|application}"]}[systemId="systemId"[filter="filter"]>
          需要解析的XML文檔
          </x:parse>
          var:儲存解析后的XML文件。
          scope:變量的JSP范圍。
          varDom:儲存解析后的XML文件(類型為org.w3c.dom.Document)。
          scopeDom:屬性varDom指出變量的有效范圍。
          systemId:XML文件的URI。
          filter:XMLFilter過濾器。
              2)<x:out>標(biāo)簽主要來取出XML中的節(jié)點(diǎn)數(shù)。其語法:
          <x:out select="XpathExpression" [escapeXml="{true|false]"]/>
          select:XPath語句。
          escapeXml:是否轉(zhuǎn)換特殊字符,例如:
          <轉(zhuǎn)換成&lt;
              3)<x:set>標(biāo)簽將從XML文件中取得的內(nèi)容存儲至JSP范圍中,其語法為:
          <x:set select="XPathExpression" var="var" [scope="{page|request|session|application}"]/>
          select:XPath語句。
          var:將XML文件中取得的內(nèi)容儲存至varName中。
          scope:變量的JSP范圍。
              4)XML標(biāo)簽實(shí)例:book.xml與readBook.jsp
          book.xml的代碼如下:
          <?xml version="1.0" encoding="GBK"?>
          <books>
              
          <book lang="java">
                  
          <title>《Java 編程思想》</title>
                  
          <author>Bruce Eckel</author>
              
          </book>
              
          <book lang="java">
                  
          <title>《JSP 專家導(dǎo)學(xué)》</title>
                  
          <author>希賽顧問團(tuán)</author>
              
          </book>    
              
          <book lang=".net">
                  
          <title>《專家導(dǎo)學(xué).NET開發(fā)框架》</title>
                  
          <author>希賽顧問團(tuán)</author>
              
          </book>
          </books>
          readBook.jsp的源代碼如下:
          <%@ page language="java"  contentType="text/html; charset=GBK"%>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
          <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

          <html>
            
          <head>   
              
          <title>XML標(biāo)簽示例程序</title> 
              
            
          </head>  
            
          <body> 
              
          <x:parse var="sampleXml">
                  
          <c:import charEncoding="GBK" url="Books.xml"/>
              
          </x:parse>
              
          <h3>裝載XML文件成功</h3>    
              
          <h3>顯第一本書的標(biāo)題:</h3>    
              
          <x:out select="$sampleXml//title"/><br/>    
              
          <h3>查找.net書:</h3>    
              
          <x:set select="$sampleXml//book[@lang='.net']" var="DoNetBook"  />    
              
          <x:out select="$DoNetBook"/>
            
          </body>
          </html>
          注:使用XML標(biāo)簽時,Web應(yīng)用環(huán)境中除了裝載jstl.jar和standard.jar外還應(yīng)加入xalan.jar和xercesImpl.jar兩文件。 
          主站蜘蛛池模板: 广宗县| 上杭县| 防城港市| 北辰区| 吉木萨尔县| 怀仁县| 兰州市| 兴业县| 蒙自县| 稻城县| 台南县| 奈曼旗| 公安县| 福泉市| 曲靖市| 山阳县| 宜川县| 龙胜| 贵德县| 类乌齐县| 梁河县| 弋阳县| 土默特左旗| 分宜县| 沧州市| 陆河县| 梅河口市| 宁南县| 泰安市| 五常市| 綦江县| 乌鲁木齐县| 上高县| 哈巴河县| 湘阴县| 海晏县| 榆中县| 湟源县| 南和县| 黔南| 黔西|