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

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

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

    posts - 78, comments - 34, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    2009-12-22 傳智播客——Struts1

    Posted on 2009-12-22 23:55 長城 閱讀(271) 評論(0)  編輯  收藏

             今天是Sturts1的最后一天,老佟下午做了一個綜合性練習,十分經典!通過這個練習也讓我感覺到了老佟的功力深厚。這個練習明天我再做。

     

             今天的重點內容有:MappingDispatchAction、動態的ActionForm、預顯表單、struts國際化和文件上傳!

     

    一、MappingDispatchAction

             我們知道一個DispatcherAction可以處理多個用戶請求(通過sturts-config.xml配置),但一個DispatchAction只能有一個ActionForm。這就是它的最大缺點,所以Sturts為我們提供了一個折中的處理辦法——MappingDiapatchAction(位于ActionDispatchAction之間)。

             我們在工程中新添加一個MappingDispathAction

    import javax.servlet.http.*;

    import org.apache.struts.action.*;

    import org.apache.struts.actions.MappingDispatchAction;

     

    public class TestMappingDispatchAction extends MappingDispatchAction {

        // add處理

        public ActionForward add(ActionMapping mapping, ActionForm form,

               HttpServletRequest request, HttpServletResponse response)

               throws Exception {

           System.out.println("TestDispatchAction.add");

           return mapping.findForward("success");

        }

        // find處理

        public ActionForward find(ActionMapping mapping, ActionForm form,

               HttpServletRequest request, HttpServletResponse response)

               throws Exception {

           System.out.println("TestDispatchAction.find");

           return mapping.findForward("success");

        }

    }

     

             struts-config.xml添加:

    <action path="/add"

               type="cn.itcast.cc.actions.TestMappingDispatchAction"

               parameter="add"

               name="AddActionForm">

    </action>

    <action path="/find"

               type="cn.itcast.cc.actions.TestMappingDispatchAction"

               parameter="find"

               name="FindActionForm">

    </action>

     

             此時JSP頁面中的請求連接必須修改為:

    <html:link action="/add">add</html:link>

    <html:link action="/find">find</html:link>

            

    老佟推薦使用MappingDispatchAction。在特殊情況下使用DispatchedAction吧!

     

    二、動態的ActionForm

             我們在使用ActionForm時,我們必需手動添加代碼。如果ActionFrom非常多時我們就需要手動添加大量代碼。動態的ActionForm則不老板娘我們手動添加代碼。

     

             例,處理用戶登陸的動態ActionForm,向struts-config.xml中添加:

    <form-beans>

           <form-bean name="dynaAction" type="org.apache.struts.action.DynaActionForm">

               <form-property name="username" type="java.lang.String" />

               <form-property name="password" type="java.lang.String" />

           </form-bean>

    </form-beans>

             不需要手動編寫ActionForm,“type="org.apache.struts.action.DynaActionForm"”是struts中自帶的ActionForm。“name="username"”必須與表單的字段名稱相對應。“type="java.lang.String"”字段值的類型,需要指定全類名。

     

    三、預顯表單

             比如用戶修改自己的信息,當用戶修改并提交了錯誤信息里。表單頁面需要給出提示,并回顯用戶提交的數據(而不是顯示空表或修改之前的原表),因為用戶可能修改了五個地方,確只有一個地方的數據不合法。

             這個解決方法很簡單,只需要使用strutsHTML標簽即可。比如顯示用戶名的標簽“<html:text property="username"/>”。因為我們在struts-config.xml中配置了這個頁面的namescope屬性,所以,struts先去到scope指定的域中查找名稱為name的屬性指定的ActionForm

             當請求派發到指定的頁面之前,Strtus會取出ActionForm中對應的字段值,并生成value=”字段值添加到<input …>中。

             除了使用插件結合html標簽進行校驗外,這個回顯的功能也是strutshtml標簽的一大特色!

     

    四、Struts國際化

             還記得以前學習的WEB應用的國際化嗎?(使用的是JAVA國際化組件)回憶一下,我們需要編寫一個屬性文件,比如名為“language.properties”它是默認的文件如果國際化組件找不到與本地語言對應的配置文件就會使用這個默認文件。中文的文件名應該為“language_zn_CN.properties”、英文的文件名為“language_en_US.properties”,它們的鍵名稱相同,但值是相應國家的同義文字。然后我們需要調用ResourceBundle.getBundle(“language”);返回一個ResourceBundle對象,它根據計算機本地默認語言加載對應的配置文件。之后根據需要調用ResourceBundle.getString(String key); 返回需要的值。

     

             嗯嗯,Struts中的國際化與此相同。比如我們之前使用的錯誤信息資源文件“MessageResources.properties”我們在struts-config.xml指定了它被做為struts的資源:

    <message-resources parameter="MessageResources"></message-resources>

    同樣,我們定義中文的資源文件為“MessageResources_zh_CN.properties”、英文的資源文件為“MessageResources_en_US.properties”,它們的鍵名相同,但值是相應國家的同義文字。struts-config.xml不需要修改。這樣,Struts在加載struts-config.xml文件時,也會自動根據本地默認語言加載相應的資源文件。這樣在以后的應用直,直接使用鍵名即可獲取本地語言的值。比如:

    new ActionMessage("username.exist")

    如果本地默認語言是中文,則信息值為:“用戶已存在!”。如果本地默認語言是英文,則信息值為:“user name already exist!”。

     

    五、文件上傳

             這個也很簡單哦~~(說著簡單,看著也簡單,做就是另一回事兒了!)。

    我們以前的文件上傳是怎么實現的?需要加載“commons-fileupload”和“commons-io”兩個jar包,在處理文件上傳表單的servlet中調用“ServletFileUploadObj.parseRequest(request);”方法解析request,然后遍歷它返回的List并調用“FileItemObj.isFormField()”判斷這一項是表單字段還是文件上傳,如果是文件上傳則保存文件

     

    Struts中的文件上傳也需要使用“commons-fileupload”和“commons-io”兩個jar包。我們設計的表單必須使用strutshtml標簽,在文件上傳標簽處使用“<html:file…>”:

    file: <html:file property="file"></html:file>

     

             在對應的ActionForm中需要添加一個“FormFile”類型的成員,它用于存放提交的文件信息和文件輸入流。Ok,這樣我們就可以在處理表單的Action中直接獲取文件提交字段了!

     

             今天做一下簡單的總結,沒有添加代碼詳細說明。框架是簡單了程序的開發,這是十分有意義的,它可以節省很多不必要的工作,利于項目的擴展與維護。它使得程序員可以節省更多的時間用于學習或做項目研究,怎么能說成是毀程序員的飯碗呢?!

     

             今天下午的那個練習十分經典,這個我明天來做一下。突然從WEB基礎跳到框架的學習,多少有些不習慣,尤其是第一天。不過現在好些了,也更期待學習hibernate框架和spring框架,并將他們應用于項目中!

     

             加油!

     

    我總給自己加油,當然也有那些關心我的親人和朋友們,感謝他們!


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 免费无码不卡视频在线观看| 亚洲Aⅴ在线无码播放毛片一线天 亚洲avav天堂av在线网毛片 | 国产成人精品日本亚洲语音 | 男女交性永久免费视频播放| 国产精品亚洲自在线播放页码| 57pao一国产成永久免费| 亚洲激情在线视频| 四虎国产成人永久精品免费| 久久精品亚洲一区二区三区浴池 | 91丁香亚洲综合社区| 男人的好看免费观看在线视频 | 色播在线永久免费视频| 亚洲av无码专区在线电影天堂| 免费黄色网址入口| 国产亚洲女在线线精品| 亚洲人成国产精品无码| 黄色视屏在线免费播放| 亚洲国产a∨无码中文777| 5g影院5g天天爽永久免费影院| 亚洲国产夜色在线观看| 免费观看的a级毛片的网站| 精品在线视频免费| 亚洲成在人线av| 在线观看成人免费视频不卡| 亚洲а∨天堂久久精品9966| 亚洲av日韩av欧v在线天堂| 97国免费在线视频| 亚洲一区精品视频在线| 免费人成年轻人电影| 中文字幕久无码免费久久| 亚洲性69影院在线观看| 色妞WWW精品免费视频| 一级做a爰全过程免费视频毛片| 亚洲综合精品一二三区在线| 国产成人精品免费视频大| 国产精品亚洲综合天堂夜夜| 亚洲成AV人片在| 日韩毛片免费在线观看| 97无码人妻福利免费公开在线视频 | 免费国产99久久久香蕉| 亚洲成av人片天堂网老年人|