隨筆-54  評論-0  文章-2  trackbacks-0

          今天內容密度相當大,而且還有點細,知識點比較多。今天是馮老師的最后一天課程,與老馮的將近一個月的接觸,老馮講課有特點:幽默,上課時時不時幽一下,很提神的;聲音比較大,以至于老馮有句極像口頭禪的“小點聲,不然隔壁又找來了”;最重要的是上課的代碼每天都有超強的注釋,比較有特點的是超強的 readme.txt ,深的同學喜愛;講課特別敬業,這兒的老師都是特別敬業的。聽說老馮嘔心瀝血,自己做了個項目,年后會公布在網上,到時真的研究研究,相當期待。老師最后給我們了個郵箱,以后有問題,仍然可詢問下。

          把今天講的內容總結下,今天講了昨天留的作業(Struts做的客戶信息系統)Struts1.x的驗證機制,表單重復提交,同步令牌機制,上傳的實現,轉換器,國際化內容,由于內容多,只記不會的

          1.處理表單重復提交

          解決方法:

          1. 生成一個唯一的編號,該編號在添加信息的頁面存放在隱藏域中

          該代碼執行后自動添加在customer.jsp頁面中添加如下信息 session中保存一份

          代碼如下:注意:在execute方法中{

          //Actionexecute方法開始加上

          this.saveToken(request);

          //在調用service層增刪改查前加從request中獲取隱藏域的值

          // Stirng gxxxValue=request.getParameter("org.apache.struts.taglib.html.TOKEN");

          // 在從session中取出 String keyValue=session.getAttribute("key");

          // 如果兩個值相等 gxxxValue=keyValue,數據提交

          boolean flag=this.isTokenValid(request);

          if(flag){

          //應該從session中清除session.removeAttribute(key)

          this.resetToken(request);

          / /插入數據庫的方法以下面一句為例

          customerService.saveCustomer(c);

          }else{

          System.out.println("表單重復提交了");

          }

          注意:原理:

          * request中獲取隱藏域的值

          Stirng gxxxValue=request.getParameter("org.apache.struts.taglib.html.TOKEN");

          * 在從session中取出 String keyValue=session.getAttribute("key");

          * 如果兩個值相等 gxxxValue=keyValue,數據提交

          當數據提交后要從sessioon中刪除key sessioon.removeAttribute("key")

          2.轉換器:

           

          當我們在開發時,會遇到數據庫中的數據類型和ActionForm中的類型不一致的情況,為減少轉換的麻煩,Struts給我們了轉換器,她能自動轉化很多類型,但遇到如果遇到Date類型就不能轉換

           

           

          這時要定義轉換器

          如何定義一個轉化器:

          1.定義一個類 String2DateConvert implements Converter

          重寫接口中的方法

          2.注冊轉化器(一定在使用前注冊) struts中常用的轉換器Struts自己給注冊了

          實際是把信息放置到一個Map中,原理:

          * key是轉化數據類型的名稱

          * 轉化器的對象

          converters.put(clazz, converter);

          converters.put(java.util.Date, new String2Dateconverter());

          下面是代碼:在Action類中(注意不是在方法體中),加:

          static{

          /**

          * register(new String2DateConvert(), java.util.Date.class);

          * 第一個參數是轉化器的實例

          * 第二個參數要轉化的數據類型(本類中用的String-java.util.Date)

          */

          ConvertUtils.register(new String2DateConvert(), java.util.Date.class);

          }

          剩下的就是用Struts自己的,代碼:

          BeanUtils.copyProperties(與數據庫交道的form, 與頁面交道的form);

          最后

          建議:開發中ActionForm中的所有屬性定義為String, 不管什么樣的數值我都接收,接收到之后在進行檢驗

          3.國際化:

          struts中的國際化:

          * 定義資源文件

          命名規則基名_語言_國家.properties

          定義支持中文和英文的資源包

          * resource.properties(默認)

          * resource_zh_CN.properties

          * resource_en_US.properties

          把資源包放置到當前web應用的src下,經構建后保存到/WEB-INF/classes目留下

          中文要進行編碼轉化

          native2ascii -encoding gb2312源文件目標文件.properites

          * struts中如何使用

          * struts-config.xml文件中引入 parameter="resource"的值基名

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

          * jsp頁面中如何使用

          引入bean標簽庫

          <%@ taglib uri=http://struts.apache.org/tags-bean prefix="bean"%>

          <bean:message key="username"/> key 是資源文件中=前面的值

          * 如有多個資源文件

          * struts-config.xml文件中引入 parameter="resource"的值基名

          增加屬性key 加以區分

          <message-resources

          parameter="resource1" key="backup"></message-resources>

          *jsp頁面中如何使用

          <bean:message key="username" bundle="backup"/>

          今天就至此了,明天是佟剛老師講AJAX ,每天都有收獲,是我最開心的事情,

          好好休息,靜待明天的來到!

          posted on 2010-01-17 21:15 d66380022 閱讀(472) 評論(0)  編輯  收藏
          主站蜘蛛池模板: 宜都市| 滦南县| 突泉县| 定陶县| 建水县| 九江市| 台北市| 南平市| 尉氏县| 秭归县| 苍溪县| 金阳县| 恩平市| 新乡县| 浮梁县| 香河县| 阿鲁科尔沁旗| 大方县| 宜章县| 安远县| 高清| 定西市| 湘乡市| 河津市| 文山县| 九台市| 麟游县| 五大连池市| 泾川县| 洪泽县| 蒲江县| 乌鲁木齐县| 镇康县| 板桥市| 宝山区| 通化市| 四子王旗| 咸阳市| 高台县| 天镇县| 新巴尔虎右旗|