麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

用ActionForm一次獲取表單所有參數(shù)

2019-11-18 13:44:47
字體:
供稿:網(wǎng)友

  用過Jakarta Struts的兄弟都知道ActionForm的使用方法和她在Struts框架中所起的作用,但是您是否在為要給ActionForm編寫一大堆setter和getter方法而感到厭倦和疲憊呢?的確,我是厭倦了,所以我要尋求新的方法。我第一反映就是想使用Map接口,將所有的表單參數(shù)全部放進HashMap中,然后在Action中g(shù)et出這個Map,并進行業(yè)務(wù)邏輯的操作。有了想法當然要去試驗了,實踐才是檢驗真理的唯一標準。



  首先要編寫一個擴展ActionForm的類。代碼如下(由于篇幅,我只列出了代碼的要害部分):

12   package com.jacktan.struts.formbean;
34   import java.util.*;
5    import javax.servlet.http.*;
6    import org.apache.struts.action.*;
8    public class CustomForm extends ActionForm {
10    PRivate Map formvalueMap = new HashMap();
12    public void setFormvalueMap(Map p_FormvalueMap){
14    this.formvalueMap = p_FormvalueMap;
15   }
16    public Map getFormvalueMap(){
18      return this.formvalueMap;
19   }
20    public void setFormvalue(String key,Object value){
22    formvalueMap.put(key,value);
23    }
24     public Object getFormvalue(String key){
26        return formvalueMap.get(key);
27    }
28   }
  下面對上面的代碼一一做解釋:

  第11行定義了一個HashMap類的實例變量,這個Map用于存放表單遞交上來的參數(shù)值,作為鍵值對存在;
第13行的setFormvalueMap()方法用于設(shè)置實例變量formvalueMap;

  第17行的getFormvalueMap()方法用于獲取實例變量formvalueMap,這個方法將在Action類中調(diào)用,替代了以前在Action類中調(diào)用大量的(CustomForm)form.getXXX()方法;

  第21行是要害的方法,setFormvalue()這個方法就是取代以前在ActionForm中大量的setXXX()方法,用于接受表單傳遞上來的輸入值。注重這個方法的參數(shù),key是一個String類型的,用作Map的key,value是Object類型的,這個參數(shù)就是表示表單傳送過來的各個輸入值。

  第25行是getFormvalue()方法,用于從Map中根據(jù)key返回一個value對象。

  好了,ActionForm的任務(wù)完成了,不過離目標還有好大一段距離,目前只完成了三分之一的工作。我們繼續(xù)干!

  有了ActionForm接下來就是要編寫Action類了,代碼如下(由于篇幅,我只列出了代碼的要害部分):

12   package com.jacktan.struts.action;
34   import java.util.*;
5    import javax.servlet.http.*;
6    import org.apache.struts.action.*;
8    import com.jacktan.struts.formbean.CustomForm
10   public class CustomAction extends Action {
12     public ActionForward execute(ActionMapping p_Mapping,
15         ActionForm p_Form,
16         HttpServletRequest p_Request,
17         HttpServletResponse p_Response) 
18      throws Exception{
21        Map formvalues =((CustomForm)p_Form).getFormvalueMap();
23          return p_Mapping.findForward("SUCcess");
25      }
26   }
  CustomAction類的要害行在第21-22行,使用在CustomForm類中定義的 getFormvalueMap()方法一次就將表單中所有的提交參數(shù)收集完畢,省掉了以前要使用很多getXXX()方法從ActionForm中獲取表單值的做法。
  好了,接下來是要編寫jsp頁面了,因為我們的ActionForm使用非凡的方法接受參數(shù)值,所以在寫表單頁面的時候也要使用非凡的簽名。代碼如下:

<Html:form action="login">
<table width="100%"  border="0">
 <tr>
 ?。紅d width="3%"> ;</td>
 ?。紅d width="31%"> ;</td>
  <td width="66%" rowspan="6" valign="top">
   <html:errors/>
 ?。?td>
?。?tr>
?。紅r>
  <td> ;</td>
  <td height="25">用戶名</td>
 </tr>
?。紅r>
  <td> ;</td>
  <td height="25">
  ?。糷tml:text property="formvalue(username)" size="12" maxlength="12"/></td>
?。?tr>
?。紅r>
 ?。紅d> ;</td>
 ?。紅d height="25">密碼</td>
?。?tr>
 <tr>
 ?。紅d> ;</td>
  <td height="25">
  ?。糷tml:passWord property="formvalue(password)" size="12" maxlength="12" redisplay="false"/>
  </td>
?。?tr>
?。紅r>
 ?。紅d> ;</td>
 ?。紅d height="25">
   <html:submit value="登錄"/>?。糷tml:button property="close" value="關(guān)閉" onclick="Close()"/>
 ?。?td>
 </tr>
</table>

  上面是一個用戶登錄的界面,注重紅色的部分,這個簽名要和CustomForm類中的setFormvalue()簽名保持一致,注重大小寫,Struts會利用Java的反射機制尋找到合適的方法調(diào)用。formvalue(username)圓括號中的字符串可以是表示該輸入域在數(shù)據(jù)庫中字段的映射,也可以是自己自定義的字符串,這個字符串將作為Map的key保存。

  好了,終于要完成了,最后要做的就是設(shè)置struts的配置文件了,打開struts-config.xml文件,

  在<form-beans>段輸入以下代碼:

<form-beans>
<form-bean 
name="CustomForm" 
type="com.jacktan.struts.formbean.CustomForm"/>
</form-beans>
  在<action-mappings>段輸入以下代碼:

<action
path="/login" 
type="com.jacktan.struts.action.CustomAction"
name="addDeviceForm"
scope="request">
<forward name="login" path="main.jsp"/>
</action>
  大功告成,所有的任務(wù)都完成了。為了檢測是否可以正確運行,我在Action類中加入如下測試代碼:

1 Set set = formvalues.entrySet();
2 Iterator it = set.iterator();
3 while( it.hasNext() ){
4  Map.Entry me = (Map.Entry)it.next();
5  System.out.println((String)me.getKey);
6  System.out.println((String)me.getvalue);
7 }
  以上代碼將在Tomcat的控制臺中打印出所有表單提交的參數(shù)值,你也可以使用Struts中l(wèi)og4j組件在日志文件中輸入。好了,就寫到這里吧,以上就是使用Map將表單提交的數(shù)據(jù)一次性獲取,并在Action中調(diào)用的全部工作內(nèi)容,希望對大家使用Struts做開發(fā)的兄弟有所提示和啟發(fā)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新久草视频 | 欧美日韩在线播放 | 成人精品久久久 | 色播视频网站 | 久久线视频 | 久久久www成人免费毛片 | 免费一级欧美 | 午夜视频在线免费播放 | 久久精片| 精品99在线视频 | 91久久在线观看 | 最近日本电影hd免费观看 | 日韩av电影免费在线观看 | 国产成人精品一区二区视频免费 | 一级电影在线免费观看 | 久久久www视频 | 4p一女两男做爰在线观看 | 特一级毛片 | 日日操夜夜操视频 | 亚洲乱妇19p | 精品一区二区三区免费看 | 91精品久久久久久久 | 欧美成人免费一区二区三区 | 国产九九九九 | 粉嫩av一区二区三区四区在线观看 | 精品国产看高清国产毛片 | 性高跟鞋xxxxhd4kvideos | 国产精品自拍av | 操碰在线视频 | 九九热色 | 黄色免费在线网站 | 视频一区二区三区免费观看 | 91精品国 | 亚洲成人欧美 | 亚洲免费观看视频 | 中文字幕在线观看91 | 一级观看免费完整版视频 | 毛片免费一区二区三区 | 色网免费观看 | 亚洲精品午夜在线 | 欧美aaaaaaaa |