我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks
          Struts-Bean??標簽庫
          ? 此標簽庫和Java Bean有很強的關聯性,設計的本意是要在JSP 和JavaBean 之間提供一個接口。Struts 提供了一套小巧有用的標簽庫來操縱JavaBean和相關的對象:cookie、?header、?parameter、?define、write、message、?include、page、resource、size、struts。
          1. bean:cookie、bean:header、bean:parameter
            這三個標簽用來重新得到cookie, request header和request parameter。
            bean:header和bean:parameter標簽定義了一個字符串;bean:cookie標簽定義了一個Cookie對象。你可以使用value屬性做為默認值。如果找不到指定的值,且默認值沒有設定的話,會拋出一個request time異常。如果你期望返回多個值的話,可把multiple屬性設為true。
            ?<bean:cookie id="sessionID" name="JSESSIONID" value="JSESSIONID-ISUNDEFINED"/>
            ?// 這段代碼定義了一個名為sessionID的腳本變量,如果找不到一個名為JSESSIONID的cookie,那sessionID
            ?// 的值就被設置為JSESSIONID-ISUNDEFINED。

            下面代碼會輸出一些Cookie對象的一些屬性:
            ?<jsp:getProperty name="sessionID " property="comment"/> …
            ?<jsp:getProperty name="sessionID" property="domain"/> …
            ?<jsp:getProperty name="sessionID" property="maxAge"/> …
            ?<jsp:getProperty name="sessionID" property="path"/> …
            ?<jsp:getProperty name="sessionID" property="value"/> …
            ?<jsp:getProperty name="sessionID" property="version"/> …

            下面是在request中輸出所有header的例子:?
            ?<%
            ??????? java.util.Enumeration names =((HttpServletRequest) request).getHeaderNames();
            %>

            <%
            ??????? while (names.hasMoreElements()) {
            ??????? String name = (String) names.nextElement();
            %>
            <bean:header id="head" name="<%= name %>"/>
            … <%= name %>
            … <%= head %>

            <%
            ??????? }
            %>

            下面是parameter的例子:
            ?<bean:parameter id="param1" name="param1"/>
            ?<bean:parameter id="param2" name="param2" multiple="true"/>? // 此處定義了一個param2[]。
            ?<bean:parameter id="param3" name="param3" value="UNKNOWN VALUE"/>

            于其它標簽結合使用:
            ?<bean:header id="browser" name="User-Agent"/>
            <P>You are viewing this page with: <bean:write name="browser"/></P>
            ----------------------------------------------------------------------------------------------------------------------------------
            <bean:cookie id="username" name="UserName" scope="session"
            value="New User" />
            <P>Welcome <bean:write name="username" property="value"/!</P>?
            ? // 根據cookie創建一個新的Bean,如果用戶名稱已經存儲在cookie中,它就不顯示為一個新用戶。?

          2. bean:define:有三個用途。
            一是定義新字符串常量:
            ?<bean:define id="foo" value="This is a new String"/>
            ?<bean:define id="bar" value='<%= "Hello, " + user.getName() %>'/>
            ?<bean:define id="last" scope="session" value='<%= request.getRequestURI() %>'/>

            二是復制一個現有的bean給新的bean:
            ?<bean:define id="foo" name="bar"/>???
            ?<bean:define id="baz" name="bop" type="com.mycompany.MyClass"/>? //定義腳本變量的類型,默認為Object

            三是復制一個現有的bean的屬性給新的bean:
            ?<bean:define id="bop" name="user" property="role[3].name"/>
            ??<bean:define id="foo" name="bar" property="baz" scope="request"? toScope="session"/>?
            ??//toScope屬性指新bean的scope,默認為page???
            上段代碼的意思是把名為bar的bean的baz屬性賦值給foo,foo的類型為String(默認)。
          3. bean:include
            這個標簽和bean:include標簽和相似,不同點就是它定義了一個可以復用的腳本變量。用id屬性命名一個新的腳本變量,還支持forward、href、page和transaction.屬性,和html:link中的屬性意義一樣。
            ?<bean:include id="footerSpacer"? page="/long/path/footerSpacer.jsp"/>?
            ?然后你能夠在多個地方(scope為page)調用:
            ?<bean:write name="footerSpacer" />

          4. bean:message
            用來實現對國際化的支持的一個標簽,配合java.util數據包中定義的Locale和ResourceBundle類來完成這個任務,用java.text.MessageFormat類配置消息的格式。
            ??? 首先要指定資源文件的名稱。這個文件會包含用默認語言編寫的在程序中會出現的所有消息,這些消息以“關鍵字-值”的形式存儲。文件需要存儲在類路徑下,路徑要作為初始化參數傳送給ActionServlet。
            ??? 實現國際化的規定:所有的資源文件必須都存儲在基本資源文件所在的目錄中?;举Y源文件包含的是用默認地區語言-本地語言編寫的消息。如果基本資源文件的名稱是ApplicationResources.properties,那么用其他特定語言編寫的資源文件的名稱就應該是ApplicationResources_xx.properties(xx為ISO編碼,如英語是en)。因此這些文件應包含相同的關鍵字,但關鍵字的值是用特定語言編寫的。
            ??? 然后,ActionServlet的區域初始化參數必須與一個true值一起傳送,這樣ActionServlet就會在用戶會話中的Action.LOCALE_KEY關鍵字下存儲一個特定用戶計算機的區域對象?,F在可以運行一個國際化的web站點,它可以根據用戶計算機上的設置的區域自動以相應的語言顯示。

            使用特定的字符串來替換部分消息:

            ? 在資源文件中的定義:info.myKey = The numbers entered are {0},{1},{2},{3}
            ?標記的使用:<bean:message key="info.myKey" arg0="5" arg1="6" arg2="7" arg3="8"/>
            ?Jsp頁面的顯示:The numbers entered are 5,6,7,8? // 最多支持4個參數


          5. bean:page:把Jsp中的內部對象做為腳本變量。
            <bean:page id="requestObj" property="request"/>?

          6. bean:resource:獲得應用程序的資源,這個資源可以是一個String或從java.io.InputStream中讀入。使用ServletContext.getResource()ServletContext.getResourceAsStream() 方法檢索web應用中的資源,如果在檢索資源時發生問題,就會產生一個ruquest time異常。?
            ?<bean:resource id="webxml" name=
            ???????????????? "/WEB-INF/web.xml"/>
            使用input屬性時,資源會做為一個InputStream,如果不指定就被當成一個String。

          7. bean:size:得到存儲在array、collection或map中的數目,類型為java.lang.Integer。
            ?<bean:size id="count" name="employees" />

          8. bean:struts:復制Struct 對象(三種類型)給新的bean,scope為page。
            ?<bean:struts id="form" formBean="CustomerForm"/>???
            ?<bean:struts id="fwd" forward="success"/>
            ?<bean:struts id="map" mapping="/saveCustomer"/>

          9. bean:write:以字符串形式輸出bean的屬性值。
            filter屬性:設為true時,將HTML保留字轉換為實體("<" 轉換為 &lt);
            ignore屬性:如果對象不存在,不會拋出異常。
            ?<bean:write name="userRegistration" property="email" scope="request"/>


          posted on 2007-01-10 11:52 java_蟈蟈 閱讀(294) 評論(0)  編輯  收藏 所屬分類: STRUTS
          主站蜘蛛池模板: 大姚县| 上蔡县| 大庆市| 吉首市| 绍兴县| 左贡县| 锦州市| 苏尼特右旗| 鹤壁市| 潜山县| 资源县| 龙口市| 随州市| 陵川县| 搜索| 织金县| 泰兴市| 鄂尔多斯市| 繁峙县| 京山县| 霍州市| 永福县| 花莲县| 集贤县| 随州市| 清涧县| 苗栗市| 定南县| 义马市| 宜城市| 永川市| 观塘区| 长乐市| 瑞安市| 长丰县| 翼城县| 青海省| 岳池县| 定陶县| 阳泉市| 呼图壁县|