JAVA及相關(guān)技術(shù)學(xué)習(xí)

          Servlet

           

          Action類的工作機(jī)制

          Action類的工作機(jī)制
          所有的Action類是org.apache.struts.action.Action的子類。Action子類應(yīng)該覆蓋父類的execute方法。當(dāng)ActionForm Bean被創(chuàng)建,并且表單驗(yàn)證順利通過(guò)后,Struts框架就會(huì)調(diào)用Action類的execute()方法。execute()方法如下定義:
          public ActionForward execute(ActionMapping mapping,
                                       ActionForm form,
                                       HttpServletRequest request,
                                       HttpServletResponse response)throws IOException,ServletException
          execute()方法包含以下參數(shù):
          ActionMapping:包含了這個(gè)Action的配置信息,和struts-config.xml文件中的<action>元素對(duì)應(yīng)。
          ActionForm:包含了用戶的表單數(shù)據(jù),當(dāng)Struts框架調(diào)用execute()方法時(shí),ActionForm中的數(shù)據(jù)已經(jīng)通過(guò)了表單驗(yàn)證。
          HttpServletRequest:當(dāng)前的HTTP請(qǐng)求對(duì)象。
          HttpServletResponse:當(dāng)前的HTTP響應(yīng)對(duì)象。

          訪問(wèn)封裝在MessageResources中的本地化文本

          Action類的execute()方法首先獲得MessageResources對(duì)象:
          MessageResources messages=getResources(request);
          在Action類中定義了getResources(HttpServletRequest request)方法,該方法返回當(dāng)前默認(rèn)的MessageResources對(duì)象,它封裝了Resource Bundle中的文本內(nèi)容。接下來(lái)Action類就可以通過(guò)MessageResources對(duì)象來(lái)訪問(wèn)文本內(nèi)容。例如,如果要讀取消息KEY為“hello.jsp.title”對(duì)應(yīng)的文本內(nèi)容,可以調(diào)用MessageResources類的getMessage(String key)方法:
          String title=messages.getMessage("hello.jsp.title");

          業(yè)務(wù)邏輯驗(yàn)證
          ActionMessages errors=new ActionMessages();
          String userName=(String)((HelloForm)form).getUserName();
          String badUserName="Monster";

          if(userName.equalsIgnoreCase(badUserName))
          {
             errors.add("username",new ActionMessage("hello.dont.talk.to.monster",badUserName));
          saveErrors(request,errors);
          return(new ActionForward(mapping.getInput()));
          }
          如果用戶輸入的姓名“Monster”,將創(chuàng)建包含錯(cuò)誤信息的ActionMessage對(duì)象,ActionMessage對(duì)象被保存島ActionMessages對(duì)象中。接下來(lái)調(diào)用在Action基類中定義的saveErrors()方法,它負(fù)責(zé)把ActionMessages對(duì)象保存島request范圍內(nèi)。最后返回ActionForward對(duì)象,Struts框架會(huì)根據(jù)ActionForward對(duì)象包含的轉(zhuǎn)發(fā)信息把請(qǐng)求轉(zhuǎn)發(fā)島恰當(dāng)?shù)囊晥D組件,視圖組件通過(guò)<html:errors>標(biāo)簽把request范圍內(nèi)的ActionMessage對(duì)象中包含的錯(cuò)誤消息顯示出來(lái),提示用戶修改錯(cuò)誤。

          posted on 2009-03-11 14:30 亂せ英豪 閱讀(695) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 西吉县| 剑阁县| 湟中县| 尤溪县| 湖北省| 炉霍县| 长寿区| 隆尧县| 贵德县| 建平县| 孝感市| 阳春市| 仲巴县| 特克斯县| 库伦旗| 靖宇县| 乳源| 凤翔县| 麻城市| 克山县| 无棣县| 灵璧县| 肇州县| 琼结县| 永昌县| 自治县| 连城县| 永和县| 福泉市| 阜南县| 中西区| 慈利县| 岫岩| 宁海县| 乌鲁木齐市| 新巴尔虎右旗| 法库县| 建始县| 恩施市| 红河县| 库尔勒市|