JSP前端總結

1、C標籤
    一】 <c:out value="..." default="..." escapeXml="true">
            escapeXml:將value中的特殊符號進行轉義。若是不指定爲false,那麼默認值爲true。
            value:輸出到瀏覽器中的值
            default:value值找不到時的默認值
        code:javascript

       <c:out value="hello word!" />
            <% pageContext.setAttribute("username", "jack"); %>
            <br /> 用戶名:<c:out value="${username}" /> <br /> 用戶名:<c:out value="${fdusername}" default="未知"/> <br /> 連接:<c:out value="<a href='#'>下載</a>" escapeXml="false" /> <br /> 連接:<c:out value="<a href='#'>下載</a>" escapeXml="true" />  <br /> 連接:<c:out value="<a href='#'>下載</a>" /> <br/>

 


        
    二】<c:set var/value/scope/target/property>
         var: 有兩成含義。變量名 和 存入域對象的名稱。
         target和property是針對於javaBean的。

         code:java

           <c:set var="name" value="傑克" scope="page"/>
            <c:out value="${name}" /> <br />

            <jsp:useBean id="user" class="com.suse.domain.User" scope="page" />
            <c:set target="${user}" property="userName" value="jack" />
            <c:out value="${user.userName}" /> <br />
            
            <% Map<String, Integer> map = new HashMap<String, Integer>(); pageContext.setAttribute("map", map); %>
            <c:set target="${map}" property="key"  value="jack"/>
            <c:set target="${map}" property="value" value="7000"/>
            
            <c:out value="${map.key}" /> <br />
            <c:out value="${map.value}" />    

 



    三】<c:remove />
        <c:remove var="varName" [scope="{page|request|session|application}"]>
        code:web

            <c:set var="name" value="jack" scope="page" />
            <c:out value="${name}" default="未知" />
            <c:remove var="name" scope="page"/>
            <c:out value="${name}" default="未知" />


    四】<c:catch var="..">
            ...可能出錯的代碼
        </c:cath>
        var:會將錯誤信息封裝在此

        code:正則表達式

         <c:catch var="message">
                    <%
                    int a = 10/0; %>
            </c:catch>
            <c:out value="${message}" default="無異常!" />


    五】<c:if var/test/scope >
            var:保存test屬性的結果。true or false
            test:布爾值決定是否處理標籤體中的內容
            scope:將test屬性的結果保存到哪一個域對象中。
        code:數組

             <c:if test="${25>16}" var="flag" scope="request">
                25>16
            </c:if>
            <jsp:forward page="value.jsp" />


    六】<c:choose>
            <c:when test="...">
                    。。。
            </c:when>
            <c:otherwise>
                    。。。
            </c:otherwise>
        </c:choose>

        **${param.age}  獲得地址欄參數age的值

        code:瀏覽器

          <c:choose>
                <c:when test="${param.age > 16}"> 你成年了 </c:when>
                <c:otherwise> 你還未成年 </c:otherwise>
            </c:choose>

 



    七】<c:forEach var/items/varStatus/begin/end/step> .. </c:forEach>

        var:將當前迭代到的元素保存到page這個域對象中的屬性名稱
        items:要進行迭代的的集合對象
        varStatus:是個page域對象。保存着此時迭代的信息。
                    屬性:first:是否爲第一個(true or false)  index:當前下標
                          count:計數          end:是否爲最後一個(true or false)

        code:          安全

            <% List<String> list = new ArrayList<String>(); list.add("jack"); list.add("merry"); list.add("berry"); list.add("xixi"); list.add("sisi"); request.setAttribute("list", list); %>
            <c:forEach var="item" items="${list}" varStatus="status"> ${status.index} - ${item} - ${status.first} - ${status.last} - ${status.count} <br />
            </c:forEach>


    八】 <c:url var/value/scope>
    九】 <c:param name/value>
    十】<c:redirect url> 重定向
            eg:cookie

               <c:redirect url="/value.jsp">
                    <c:param name="country" value="美國">
                    <c:param name="tel" value="123">
                </c:redirect>

    十一】中文經過GET方式傳參的亂碼解決問題session

 傳統方式: <a href="/day17/c/value.jsp?country=<%=URLEncoder.encode("中國", "UTF-8")%>&age=21"> 傳統方式傳中文 </a> JSTL標籤方式:(<c:url>、<c:redirect>須要配合<c:param>聯合使用) <c:url    var="myUrl" value="/c/value.jsp" scope="page">
                <c:param name="country" value="中國" />
                <c:param name="age" value="15" />
            </c:url>
            <a href="${myUrl}"> JSTL標籤傳遞中文方式 </a>


2、EL表達式
    一】獲取數據:(獲取的對象必須是域對象中存儲了的對象)
        普通變量
        JavaBean對象
            略
        Collection(Set和List)對象
        code:
          多線程

             <c:set var="name" value="jack" scope="page"/> 姓名:${name} <br />
            
            <% List<String> list = new ArrayList<String>(); list.add("jack"); list.add("merry"); list.add("berry"); pageContext.setAttribute("list", list); %> 用戶列表: <br /> ${list[0]},,,,, ${list[1]} ,,,,,, ${list[2]} Map對象 code: <% Map<String, String> map = new LinkedHashMap<String, String>(); map.put("name", "xixi"); pageContext.setAttribute("map", map); %>
            <br /> ${map.key} —— ${map.value} or ${map['name']}---${map['age']} eg: <c:forEach var="entry" items="${map}"> ${entry.key} : ${entry:value} </c:forEach> 數組對象 eg: <%
                int[] intArray = {10, 20, 30}; pageContext.setAttribute("intArray", intArray); %> 第一個元素:${intArray[0]} 第二個元素:${intArray[1]}

        注意:
            一、必需要放到域對象中。
            二、若找不到,返回空白字符串,而不是null
        總結:
            ${user.address.city}
            ${user.like[0]} :獲取有序集合某個位置的元素
            ${user.['key']} : 得到map集合中指定key的值

    二】執行運算
        1)關係運算符
            等於:     == 或 eq   eg: ${5 == 5} 、 ${5 eq 5}   
            不等於: != 或 ne   eg: ${4 != 5} 、 ${4 ne 5}
            小於:   < 或者 lt
            大於:     > 或者 gt
            小於等於:<= 或者 le
            大於等於:>= 或者 ge
        2)邏輯運算符
            交集:&& <==> and   eg: { A && B } <==> ${A and B}
            並集:|| <==> or    eg: { A || B}  <==> ${A or B}
            非:  !  <==> not    eg: {!A}       <==> ${not A}
        3)**重點使用:
            empty:檢查變量是否爲null或者"";
            二元表達式:${user!=null ? user.name : ""}
            eg:(用戶類型:用戶或者遊客顯示)
            <c:set var="username" value="jack" scope="session"/>
            歡迎${!empty username?username:"遊客" }光臨!

    三】獲取web開發經常使用對象(隱式方法)
        1)jsp九大內置對象:
            page/pageContext -> request -> session -> application
            response/out
            config/exception

        2)web開發經常使用EL對象(總共11個):
            1>pageContext
                eg:
                    獲得對應的web應用名稱:
                        ${pageContext.request.contextPath}
            2>pageScope、requestScope、sessionScope、applicationScope
                eg:
                    <c:set var="username" value="jack" scope="page"/>
                    <c:set var="username" value="merry" scope="request">
                    用戶名:
                        ${pageScope.username} <br/>  ==>jack
                        ${pageScope.username} <br/>  ==>merry
            3>param和paramValues(取得地址欄的請求參數)
                param:取得單個參數
                    eg:
                        <a href="${pageContext.request.contextPath}/param.jsp?username=jack&password=123">
                        ----------
                        用戶名:${param.username}    =>jack
                        密碼:${param.password}         =>123
                paramValues:取得全部的參數
                    eg:
                        <a href="${pageContext.request.contextPath}/param.jsp?like=sing&like=dancing&like=eat">
                        ---
                        愛好:${paramValues[0]}、${paramValues[1]}、${paramValues[2]}
            4)header和headerValues取得請求頭字段
                eg:
                    瀏覽器相關信息:${header['User-Agent']}<br/>   ==>Mozlila/4.0...
                    字符編碼相關信息:${headerValues['Accept-Encoding'][0]}  ==>gzip.deflate

            5)cookie取得Cookie的值
                eg:
                    <%
                        Cookie cookie  = new Cookie("username", "jack");
                        cookie.setMaxAge(5*60);
                        response.addCookie(cookie)
                    %>
                Cookie的名:${cookie.username.name} <br/>  ==>username
                Cookie的值:${cookie.username.value} <br/> ==>jack
            6)initParam獲取web初始化參數
                WebName = ${initParam.webName} <br/>
                WebAuthor = ${initParam.webAuthor} <br/>

        補充:
            1)web初始化參數:配置web.xml得到
            <context-param>
                <param-name>webName</param-name>
                <param-value>day17</param-value>
            </context-param>
            <context-param>
                <param-name>webAuthor</param-name>
                <param-value>jack</param-value>
            </context-param>
            <context-param>
                <param-name></param-name>
                <param-value></param-value>
            </context-param>    
            2)jsp有9個內置對象

    四】EL自定義函數
        過程:
            1)寫一個EL函數處理類,該類無需繼承和實現任何類或接口
            2)在WEB-INF下建立一個tld文件,描述自定義函數和對應處理類的關係(函數聲明必定要使用全類型)
            3)在須要使用的jsp文件中,經過<%@taglib%>指令引入對應的EL函數

        eg:將特殊字符進行轉換EL自定義函數的實現

             code:
                public class Filter {
                    public static String filter(String message) {
                        ...轉換代碼....
                    }
                }
            tld:
                <tlib-version>1.0</tlib-version>
                <short-name>skyel</short-name>
                <uri>http://www.suse.com/jsp/jstl/el</uri>
                <function>
                    <name>filter</name>
                    <function-class>com.suse.el.Filter</function-class>
                    <function-signature>java.lang.String filter(java.lang.String)</function-signature> //函數的簽名,參數和返回值必定要用全類型
                </function>

jsp(使用過濾標籤): ${el:filter(
"<script>while(true){alert('haha');}</script>")} eg2:驗證函數: ${el:checkPwd("123456", "123456")} 1,檢查密碼是否都填寫了 2,檢查密碼是否爲6位數字(正則表達式) 3,檢查兩次密碼是否一致
code:
public class CheckFunction { //注意:此方法必須爲static,不然會拋出空指針異常 public static Boolean check(String password, String repassword) { if (password == null || password.trim().length() == 0) return false; if (password == null || repassword.trim().length() == 0) return false; if (!password.equals(repassword)) return false; return true; } } tld: jsp(使用):


    五】EL自定義函數和自定義標籤有何不一樣?適合於什麼樣的場景?
        EL自定義函數:
            適合於與非web相關的應用,例如字符串相關的處理
            相關函數開發過程,參見《EL自定義函數開發步驟.txt》
        自定義標籤:
            適用於與web相關的應用,由於標籤中有pageContext對象

    六】EL內置函數(導入標籤庫functions)
        1)字符串轉小寫fn:toLowerCase("ABC") 、fn:toUpperCase("abc")
            eg:
                轉大寫:${fn:toUpperCase("abc")}
                轉小寫:${fn:toLowerCase("ABC")}
        2)刪除字符串首位空格: trim
                eg:
                    ${fn:trim(" abc ")}
        3)求字符串長度: length
                eg:
                    ${fn:length(" abc ")}  ==>5
                    ${fn:length(fn.trim(" abc "))}  ==>3
        4)*分隔字符串,生成字符串數組: split
                eg:
                    ${cn:split("www.suse.com", ".")[0]} <br/> ==>www
                    ${cn:split("www.suse.com", ".")[1]} <br/> ===>suse
        5)*合併字符串數組爲字符串
                eg:
                    <%
                        String[] sArr = {"www", "suse", "cn"};
                        pageContext.setAttribute("SARR", sArr);
                    %>
                    合併字符串:${fn:join(SARR, ".")} =>www.suse.cn
        6)子串在字符串的位置fn:indexOf
                eg:
                    ${fn.indexOf("www.suse.com", "suse")}  ==>4
                    ${fn.indexOf("www.suse.com", "sfds")}  ==>-1(找不到。返回-1)
        7)是否包含子串 fn:contains 和 fn:containsIgnoreCase
                eg:
                    ${fn:contains("www.suse.com", "suse")} ==>true
                    ${fn:contains("www.suse.com", "suSe")} ==>false
                    ${fn:containsIgnoreCase("www.suse.com", "suSe")} ==>true
        8)fn:startsWith 和 fn:endsWith  判斷字符串是否按指定子串開始或者結束
                eg:
                    ${fn:startsWith("http://localhost:8080/.../a.jsp", "http")}  ==>true                        
                    ${fn:endsWith("http://localhost:8080/.../a.jsp", "jsp")}     ==>true
        9)替換字符串 fn:replaces
                eg:
                    ${fn:replaces("www suse com", " ", ".")}  ==>www.suse.com
        10)*截取子串:fn:substring 和 cn:subStringBefore  、 subStringAfter
                eg:
                    ${fn:substring("www.suse.com", 4, 8)} ==>suse
                    ${fn:substringAfter("www.suse.com", ".")} ==>suse.com
                    ${fn:subStringBefore("www.suse.com", ".")} ==>www.suse
3、國際化
    一】概念:
        1)不一樣的國家訪問同一個jsp頁面,顯示的內容和樣式是不一樣的,這樣的jsp頁面技術就叫作國際化。
        2)不能在jsp頁面中寫固定的內容
    二】國際化的特徵
        1》固定數據:
            方法一:利用javase類:ResourceBundle
                ResourcesBundle:建立時指定資源包的基名和對應的Locale(語言和國家的集合:【經過瀏覽器的工具-->Internet選項-->語言-->添加】查看某個國傢俱體的集合信息。)
                步驟:
                    1)寫一個本地化的jsp頁面
                    2)再將本地化的jsp頁面中的內容提出到資源包中,即:*.properties文件
                    3)經過ResourceBundle加載資源包
                注意:在找不到匹配的資源包時,會首先尋找操做系統語言標準的資源文件,若尚未找到,纔會找默認的資源文件。
                eg1:
                    1)properties:
                    //en_US和zn_CN是按照標準寫的
                    美國資源文件:    message_en_US.properties
                                    hello=Hello
                    中國資源文件:    message_zh_CN.properties
                                    hello=\u4F60\u597D
                    默認資源文件:    message.properties
                                    hello=xxxxx
                        注:當沒有對應國家的配置文件時,先找操做系統所對應的語言的配置文件,再走默認的配置文件。
                    2)code:
                        //使用JavaAPI操做國際化資源
                        //a)綁定對應的資源文件
                        ResourceBundle rb = ResourceBundle.getBundle("com/suse/message", Locale.CHINA);
                        //b)從資源文件中獲取對應的信息
                        String value = rb.getString("Hello");
                        //c)顯示國際化信息
                        System.out.println("value=" + value);//中國
                        注意:Locale.US ==>hello
                              Locale.getDeafult() ==>你好
                        code:

                ResourceBundle rb = ResourceBundle.getBundle("com/suse/config/message", Locale.CHINA);
                            String value = rb.getString("hello");
                            System.out.println(value);//hello
                            rb = ResourceBundle.getBundle("com/suse/config/message", Locale.US);
                            value = rb.getString("hello");
                            System.out.println(value);//你好
                            rb = ResourceBundle.getBundle("com/suse/config/message", Locale.getDefault());
                            System.out.println(value);//你好

 

 


            方法二:web方案(經過ServletRequest能夠獲取到請求用戶的Locale)
                    總結: 開發步驟:
                        1>寫一個本地化的jsp頁面
                        2>將本地化的jsp頁面中的內容踢出到資源包中,即屬性文件*.oproperties
                        3>經過ResourceBundle加載資源包

                    eg2:

                    //properties
                        //message_en_US.properties
                        login.title=LOGIN IN
                        login.username=USERNAME
                        login.password=PASSWORD
                        login.submit=SUBMIT
                        //message_zh_CN.properties
                        login.title=LOGIN IN
                        login.username=USERNAME
                        login.password=PASSWORD
                        login.submit=SUBMIT
                    //jsp
                        <%
                            ResourceBundle bundle = ResourceBundle.getBundle("com/suse/config/message",request.getLocale());
                        %>
                        <form action="" method="post">
                            <table border="2" align="center">
                                <caption><%= bundle.getString("login.title")%></caption>
                                <tr>
                                    <th><%= bundle.getString("login.username")%></th>
                                    <td><input type="text" name="username"/></td>
                                </tr>
                                <tr>
                                    <th><%= bundle.getString("login.password") %></th>
                                    <td><input type="password" name="password"/></td>
                                </tr>
                                <tr>
                                    <td colspan="2" align="center">
                                        <input type="submit" value='<%= bundle.getString("login.submit")%>'/>
                                    </td>
                                </tr>
                            </table>    

 

 


            *方法三:國際化標籤
                **需導入包:fmt
                注意:在web中。若請求找不到對應的Locale,即訪問默認的.properties文件資源包。
              

            //properties
                        //message_en_US.properties
                        login.title=LOGIN IN
                        login.username=USERNAME
                        login.password=PASSWORD
                        login.submit=SUBMIT
                        //message_zh_CN.properties
                        login.title=LOGIN IN
                        login.username=USERNAME
                        login.password=PASSWORD
                        login.submit=SUBMIT
                    //jsp
                        <%
                            ResourceBundle bundle = ResourceBundle.getBundle("com/suse/config/message",request.getLocale());
                        %>
                        <form action="" method="post">
                            <table border="2" align="center">
                                <caption><%= bundle.getString("login.title")%></caption>
                                <tr>
                                    <th><%= bundle.getString("login.username")%></th>
                                    <td><input type="text" name="username"/></td>
                                </tr>
                                <tr>
                                    <th><%= bundle.getString("login.password") %></th>
                                    <td><input type="password" name="password"/></td>
                                </tr>
                                <tr>
                                    <td colspan="2" align="center">
                                        <input type="submit" value='<%= bundle.getString("login.submit")%>'/>
                                    </td>
                                </tr>
                            </table>


            code:
                經過下拉框,由用戶本身選擇語言的實現原理:

                   

            <script type="text/javascript">
                        function refresh() {
                            var myForm = document.getElementById("form");
                            myForm.submit();
                        }
                    </script>

                    <body>
                        <fmt:setLocale value="${param.language}" />
                        <fmt:setBundle basename="com/suse/config/message" />
                        當前語言爲:${param.language}
                        <br />

                        <fmt:message key="language.title" />
                        <form id="form" action="/day17/practice/language.jsp" method="POST">
                            <select name="language" onchange="refresh()">
                                <option value="zh_CN"
                                    ${('zh_CN'==param.language) ? 'selected' : ''}>
                                    <fmt:message key="language.chinese" />
                                </option>
                                <option value="en_US"
                                    ${('en_US'==param.language) ? 'selected' : ''}>
                                    <fmt:message key="language.english" />
                                </option>
                            </select>
                        </form>
                    </body>

 

 


            
        2》動態數據的國際化    
            一)format方法: 日期 ===> 字符串
                1)格式化日期時間————Calendar類(查文檔)
                    Canlendar c = Canlendar.getInstance(Local.CHINA);
                    c.setTime(date);//設置Date對象
                    c.get(Canlendar.YEAR);//獲得年份
                    c.get(Canlendar.MONTH);//獲得月份
                    c.get(Canlendar.DAY_OF_MONTH);//獲得一個月的第幾天
                    c.get(Canlendar.DAY_OF_YEAR);//獲得一年的第幾天
                    c.get(Canlendar.DAY_OF_WEEK);//獲得一週中的第幾天
                    ...
                2)格式化日期時間————DateFormat類和SimpleDateFormat類(查文檔)
                    日期:DataFormat dateFormat = DateFormat.getInstance(DateFormat.FULL, Locale.CHINA);
                          String time = dateForamt.format(new Date());
                        中國:                       美式:
                            SHORT:年-月-日                 SHORT:日/月/年      
                            DEFAULT:2014-12-11               DEFAULT:Dec 11, 2014
                            MEDIUM:2014-12-11               MEDIUM:Dec 11, 2014
                            FULL:2014年12月11日 星期四       FULL:Thursday, December 11, 2014
                        eg:  

                       DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);
                             String time = dateFormat.format(new Date());
                             System.out.println(time);
                           
                             dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
                             time = dateFormat.format(new Date());
                             System.out.println(time);
                           ///////////////////////////////////////////////////////
                              String time = "2014-12-11 下午09時58分07秒 CST";
                              DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.FULL , Locale.CHINA);
                              Date date = dateFormat.parse(time);
                              Calendar c = Calendar.getInstance(Locale.CHINA);
                              c.setTime(date);
                              System.out.println(c.get(Calendar.YEAR));
                              System.out.println(c.get(Calendar.MONTH));
                              System.out.println(c.get(Calendar.DAY_OF_MONTH));

 

 



                    時間:DateFormat dateFormat = DateFormat.getTimeInstance(DateForamt.FULL, Locale.CHINA)
                             String time = dateFormat.format(new Date());
                             結果省略.
                             DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.FULL , Locale.CHINA);
                          String date = dateFormat.format(new Date());
                          System.out.println(date); //2014-12-11 下午09時58分07秒 CST

                       使用SimpleDateFormat類,此類是DateFormat類的子類:
                           eg:
                               SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd", Locale.CHINA);
                               Date date = sdf.parse("2014-12-11");
                               ///////////////////////////////////////////////////////
                               SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
                               String str = sdf.format(new Date());
                               System.out.println(str);

                       總結:
                           1)DateFormat不適合對日期進行判斷
                           2)DateFormat在多線程訪問下不安全,須要使用ThreadLocale<DateFormat>類確保線程安全.
                二)parse方法: 字符串 ===> 日期
                    (略)
            **標籤:<fmt:format> 和 <fmt:timeZone>
           

            <%
                //建立時區(默認+08:00時區,即北京時區)
                TimeZone tz = TimeZone.getDefault();
                pageContext.setAttribute("tz", tz);
            %>
            <jsp:useBean id="now" class="java.util.Date" scope="page" />
            中國:
            <fmt:timeZone value="${tz}">
                <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/>
            </fmt:timeZone>
            <hr />
            
            美國:
            <fmt:timeZone value="GMT-08:00">
                <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/>
            </fmt:timeZone>
            <hr />
            開羅:
            <fmt:timeZone value="GMT+02:00">
                <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/>
            </fmt:timeZone>
            <hr />
            
            <fmt:formatDate value="${now}" pattern="yyyy-MM-dd-w-F-E hh:mm:ss" timeZone="GMT-08:00"/>

 


            3)時區:timeZone
                 (略)

            4)格式化數字————NumberFormat類
                    format方法:將一個數值格式化爲符合某個國家地區習慣的數值字符串
                    parse方法:將符合某個國家地區習慣的數值字符串解析爲對應的數值
                    getIntegerInstance(Locale local)方法: 以本地的規範處理整數字符串信息爲數字。
                    getCurrencyInstance(Locale locale)方法: 以本地的規範處理貨幣信息爲數字。
                    getPercentInstance(Locale locale)方法: 以本地的規範處理百分比信息爲數字。
                code:     

            NumberFormat numberFormat = NumberFormat.getIntegerInstance(Locale.CHINA);
                    Long number = numberFormat.parse("123").longValue();
                    System.out.println("num = " + number);
                    String str = numberFormat.format(123);
                    System.out.println(str);
                    
                    numberFormat = NumberFormat.getCurrencyInstance(Locale.CHINA);
                    str = numberFormat.format(123);
                    System.out.println(str);//¥123.00
                    number = numberFormat.parse("¥123.00").longValue();
                    System.out.println(number);//123
                    
                    numberFormat = NumberFormat.getPercentInstance(Locale.CHINA);
                    Double i = numberFormat.parse("50.6%").doubleValue();
                    System.out.println(i);//0.506
                    str = numberFormat.format(0.506);
                    System.out.println(str);//51%

 

 


                 **標籤:

                   數字
                        <fmt:formatNumber value="12.56" type="number"/>
                        <hr/>
                    貨幣
                        <fmt:formatNumber value="1000" type="currency"/>
                        <hr/>
                    百分比
                        <fmt:formatNumber value="0.25" type="percent"/>
                        hr/>

 


            5)格式化文本————MessageFormat類
                總結:
                    佔位符的三種書寫方式:
                        {argumentIndex}:0-9之間,表示要格式化對象數據在參數數組中的索引。
                        {argumentIndex, FormatType}: FormatType表示參數格式化類型
                        {argumentIndex, FormatType, FormatStyle}: FormatStyle格式化的5種樣式,必須與格式化類型FormatType匹配
                code:
                

               //模式字符串,即還有{n}佔位符的字符串
                    String pattern = "On {0}, a hurricance destroyed {1} houses and caused {2} of damage";
                    MessageFormat messageFormat = new MessageFormat(pattern, Locale.US);
                    String message = messageFormat.format(new Object[]{new Date(), 99, "$100000"});
                    System.out.println(message);//On 12/12/14 11:00 PM, a hurricance destroyed 99 houses and caused $100000 of damage
                    //其餘樣式的佔位符
                    pattern = "At {0, time, short} on {0, date}, {1} destroyed \n";
                    messageFormat = new MessageFormat(pattern, Locale.US);
                    message = messageFormat.format(new Object[]{new Date(), 99});
                    System.out.println(message);//At 11:08 PM on Dec 12, 2014, 99 destroyed

 

 

  補充:
    將中文轉換成編碼:
        1)能夠經過eclipse的properties工具自動將中文轉換成編碼

        2)經過jdk的bin目錄下的native2ascii工具:
            //將a.txt以gb2312的方式進行編碼並傳入message_zh_CN中
            進入cmd中:
                 d:\>native2ascii -encoding gb2312 a.txt message_zh_CN

相關文章
相關標籤/搜索