<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 37, comments - 8, trackbacks - 0, articles - 0

    jsp程序設計:jstl之JSTL標簽庫(中)

    Posted on 2008-10-26 15:58 夢與橋 閱讀(2092) 評論(0)  編輯  收藏 所屬分類: jsp程序設計
    1、I18N與格式化標簽庫
        國際化(I18N)與格式化標簽庫可用于創建國際化的WEB應用程序,它們對數字和日期、時間的輸出進行了標準化。國際化的應用程序支持多種語言。在JSP頁面導入國際化與格式化標簽的語法是:
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    常用的標簽有:<fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>等。
        1)<fmt:setLocale>標簽用于重寫客戶端指定的區域設置。它將區域設置存儲在javax.servlet.jsp.jstl.fmt配置變量中。setLocale是一個空標簽,其使用用法為:
    <fmt:setLocale value="setting" variant="variant" scope="page/request/session/application"/>
    value:包含一個含有兩個小寫字母的語言代碼和一個含有兩個大寫字母的國家或地區代碼。語言和國家或地域代碼應用連字符或下劃線分隔,如:zh_CN.
    variant:指定特定于瀏覽器的變量,它是可選的。
    scope:指定配置變量的范圍。
        2)<fmt:setLocale>標簽使用演示:
    <%@ 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" %>
    <%
    //獲得本區域
    String locale=request.getLocale().toString();
    Date now=new Date();
    pageContext.setAttribute(
    "now",now);
    %>
    <h3>數字格式化示例:</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>標簽,用于創建一個I18N本地化上下文,并將這的資源包加載到其中。資源包的名稱由<fmt:bundle>標簽的basename屬性指定。其語法為:
    <fmt:bundle basename="basename">
    本體內容
    </fmt:bundle>
        4)<fmt:message>標簽,用于給出資源包的輸出值,其屬性key指定消息的關鍵字。此標簽的語法為:
    <fmt:message key="messagekey">
        5)<fmt:bundle>標簽與<fmt:message>標簽的使用演示:
        首先定義好兩個資源包,英文版input.properties,中文版input_zh_CN.properties,把兩者拷貝到WEB應用下的“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的內容:
    title=this is a fmtdemo
    hello=welcome you to here!
        中文版input_zh_CN.properties的內容:
    title=\u56fd\u9645\u6f14\u793a
    hello=\u55ef\uff0c\u4e0d\u9519~\u52a0\u6cb9\uff01
       調試的時候,要設置瀏覽器的語言設置來調用不包的資源包。比如IE:工具-->internet選項-->語言,進行相應的設置。
        中文版input_zh_CN.properties的內容是經過nuicode編碼后形成,這是因為java對于資源文件的處理只支持單字節,要作這樣的處理。在JDK的bin目錄下有一個native2ascii可以完成這個功能。首先用中文寫一個資源文件china.properties,然后進行編譯即可,代碼如下:
    native2ascii -encoding gb2312 china.properties input_zh_CN.properties
    china.properties的內容:
    title=國際演示
    hello=嗯,不錯~加油!
    注:native2ascii可以解決亂碼問題。
        6)<fmt:setBundle>創建一個I18N本地化的上下文,并將它存儲在范圍變量中。它是一個空標簽,其語法如下:
    <fmt:setBundle basename="basename" var="varName" scope="page/request/session/application"/>
    basename:指定資源包的名稱。
    var:指定導出的范圍變量的名稱,它存儲在I18N本地化上下文。
    scope:指定var的范圍。
        7)<fmt:setBundle>標簽使用演示:
    <%@ 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>
        采有這種方式導入包,即使改變瀏覽器的語言設置,也是始終按所設置的本地語言顯示。
    2、SQL標簽庫
        JSTL的SQL標簽用于訪問各種關系數據庫,是為了基于WEB的小型應用程序而設計的。它提供的各種標簽可以在JSP頁面內直接訪問數據庫,在JSP頁面中導入SQL標簽庫的語法是:
    <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
        此處重點介紹<sql:setDataSource>、<sql:query>、<sql:update>、<sql:transaction>等幾個常用標簽的使用方法。
        1)<sql:setDataSource>標簽用于為數據庫設置數據源。它是一個空標簽,其語法為:
    <sql:setDataSource DataSource="datasource" url="jdbcrul" driver="driverclassdriver" user="username" password="usepwd" var="varname" scope="page|request|session|application"/>
    DataSource:可以是Java命名和目錄接口資源的路徑或JDBC參數字符串。
    url:是與數據庫關聯的URL。
    driver:是一個JDBC參數,其值為驅動程序的類名。
    user:是數據庫的用戶名。
    password:是用戶的密碼。
    var:是指定數據源的導出范圍變量的名稱。
    scope:指定范圍。
        注意,在<sql:setDataSource>中,如果使用了DataSource屬性,則無法使用URI屬性。
        2)<sql:query>標簽用于搜索數據庫并返回包含數據行的結果集。其語法為:
    <sql:query var="varname" dataSource="datasource" scope="page|request|session|application" maxRows="maxrows" startRow="startRow">
    要執行的SQL語句
    <sql:param/>
    </sql:query>
    var:為查詢結果指定導出的范圍變量的名稱。
    scope:指定變量的范圍。
    dataSource:指定與要查詢的數據庫關聯的數據源。
    maxRows:指定結果中所包含的數據的最大行數。
    startRow:指定從指定索引開始的數據行。
        3)<sql:update>標簽用于執行insert、update和delete語句。如果所有數據行都沒有受到插入、更新或刪除操作的影響,則會返回0。其語法為:
    <sql:update datasource="datasource" var="varName" scope="page|request|session|application">
    SQL語句
    <sql:param/>
    </sql:update>
    其中:
    SQL語句:指定的update、insert、delete語句。
    dataSource:是與要更新的數據庫關聯的數據源。
    var:為數據庫更新的結果指定導出的范圍變量的名稱。
    scope:指定變量的范圍。
        4)<sql:transaction>標簽用于為<sql:query>標簽和<sql:update>標簽建立事務處理上下文。其語法為:
    <sql:transaction dataSource="datasource" isolation="isoationLevel">
    使用
    <sql:query><sql:update>語句
    </sql:transaction>
    dataSource:設置SQL的數據源,它可以是字符串或一個DataSource對象。
    isolation:設置事務處理的隔離級別。隔離級別可以是read_committed、read_uncommitted、repeatable_read或serializable。
        5)使用sql標簽的實例演示:
    <%@ 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 標簽庫
            
    </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專家導學 ', '編程書籍', '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>
        注:本實例連接的oracle,要將classes.jar導入到相應的目錄下。
    3、XML標簽庫
        JSTL提供了一些有關XML的標簽,讓開人員可不用深入了解SAX和DOM等API,就可以輕易地處理XML文件。在頁面中導入XML標簽庫的語法:
    <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
        1)<x:parse>標簽用解析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>標簽主要來取出XML中的節點數。其語法:
    <x:out select="XpathExpression" [escapeXml="{true|false]"]/>
    select:XPath語句。
    escapeXml:是否轉換特殊字符,例如:
    <轉換成&lt;
        3)<x:set>標簽將從XML文件中取得的內容存儲至JSP范圍中,其語法為:
    <x:set select="XPathExpression" var="var" [scope="{page|request|session|application}"]/>
    select:XPath語句。
    var:將XML文件中取得的內容儲存至varName中。
    scope:變量的JSP范圍。
        4)XML標簽實例: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 專家導學》</title>
            
    <author>希賽顧問團</author>
        
    </book>    
        
    <book lang=".net">
            
    <title>《專家導學.NET開發框架》</title>
            
    <author>希賽顧問團</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標簽示例程序</title> 
        
      
    </head>  
      
    <body> 
        
    <x:parse var="sampleXml">
            
    <c:import charEncoding="GBK" url="Books.xml"/>
        
    </x:parse>
        
    <h3>裝載XML文件成功</h3>    
        
    <h3>顯第一本書的標題:</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標簽時,Web應用環境中除了裝載jstl.jar和standard.jar外還應加入xalan.jar和xercesImpl.jar兩文件。 
    主站蜘蛛池模板: 日韩中文无码有码免费视频| 亚洲七久久之综合七久久| 国产片免费福利片永久| 无码精品一区二区三区免费视频 | 久久久久国色AV免费观看| 亚洲自偷自偷在线成人网站传媒| 亚洲精品你懂的在线观看| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲国产欧美一区二区三区| 亚洲综合图片小说区热久久| 亚洲小说区图片区另类春色| 国产18禁黄网站免费观看| 久久久久久久久免费看无码| 在线免费中文字幕| 无人在线观看免费高清| 91视频免费网站| 日本一区二区三区免费高清在线 | 一二三四视频在线观看中文版免费 | 99久久久国产精品免费牛牛 | 亚洲免费一区二区| 国产三级电影免费观看| 国产高清在线免费| 在线jlzzjlzz免费播放| 国内精品免费视频自在线| AV免费网址在线观看| 在线观看免费人成视频色9| 波多野结衣免费在线观看| 免费专区丝袜脚调教视频| 91精品国产免费入口| 99精品视频在线免费观看| 91久久青青草原线免费| 57pao一国产成永久免费| 欧洲精品99毛片免费高清观看| 午夜精品一区二区三区免费视频| 性xxxx视频免费播放直播| 久久久久久久岛国免费播放 | 中文字幕亚洲综合久久2| 亚洲蜜芽在线精品一区| 亚洲国产精品无码久久久| 2020国产精品亚洲综合网| 亚洲精品无码一区二区|