国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Struts心得--DispatchAction使用日記

2019-11-18 12:54:22
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  Struts1.1發(fā)布了這么長(zhǎng)時(shí)間了,我才剛剛開(kāi)始系統(tǒng)地學(xué)習(xí)Struts的相關(guān)知識(shí),經(jīng)過(guò)前一陣潛心研究,對(duì)Struts1.1中已有的類(lèi)DispatchAction有了進(jìn)一步的熟悉。我將在這里總結(jié)一下,希望能對(duì)大家有所幫助。
  
  在1.0版本中我們通常都是用execute方法來(lái)完成我們對(duì)業(yè)務(wù)邏輯的處理及頁(yè)面的轉(zhuǎn)發(fā)。通常在一個(gè)Action中我們都只能夠完成一種業(yè)務(wù)邏輯的操作。假如要是完成多個(gè)業(yè)務(wù)邏輯(比如:添加、刪除等)功能相近的業(yè)務(wù)邏輯我們就沒(méi)有辦法了么?答案是否定的,我們可以通過(guò)在頁(yè)面中定義一個(gè)隱藏變量,在不同的頁(yè)面要求處理不同的業(yè)務(wù)邏輯的時(shí)候我們可以賦予這個(gè)變量不同的值,并在execute方法中通過(guò)對(duì)變量值的判定來(lái)完成不同的業(yè)務(wù)邏輯操作。
  
  舉例來(lái)說(shuō),我們首先在頁(yè)面中定義一個(gè)隱藏變量。
  
  <;Html:hidden property="operAt"/>
  
  然后定義一個(gè)javascript函數(shù),我們可以在通過(guò)點(diǎn)擊提交按鈕的時(shí)候,在函數(shù)體里面修改它的值。
  
  <;SCRIPT>
  
  function set(key) {
  
  with(document.forms[0]){
  
  Operat.value=key;
  
  }
  
  }
  
  <;/SCRIPT>
  
  當(dāng)我們點(diǎn)擊提交按鈕便觸發(fā)該事件,修改變量的值。
  
  <;html:submit onclick="set('save');">SAVE<;/html:submit>
  
  那我們?cè)诤笈_(tái)execute中又如何處理相關(guān)邏輯呢?
  
  String operAt = myForm.getOperAt();
  
  if (operAt.equals("create")) { ……
  
  if (operAt.equals("save")) { ……
  
  很簡(jiǎn)單吧!雖然說(shuō)這樣做我們可以實(shí)現(xiàn)多個(gè)業(yè)務(wù)邏輯在同一個(gè)Action中實(shí)現(xiàn),可是帶來(lái)的代價(jià)便是代碼的冗長(zhǎng),不易理解。
  
  下面我們就要介紹一下DispatchAction類(lèi)了。它是Action的一個(gè)子類(lèi),它可以實(shí)現(xiàn)多個(gè)業(yè)務(wù)邏輯在同一個(gè)Action當(dāng)中的實(shí)現(xiàn),而上面的例子在DispatchAction中也就變成了下面的形式:
  
  public ActionForward create(
  
  ActionMapping mapping,
  
  ActionForm form,
  
  HttpServletRequest request,
  
  HttpServletResponse response)
  
  throws Exception { ……
  
  public ActionForward save(
  
  ActionMapping mapping,
  
  ActionForm form,
  
  HttpServletRequest request,
  
  HttpServletResponse response)
  
  throws Exception { ……
  
  每一種業(yè)務(wù)邏輯都能在DispatchAction當(dāng)中找到對(duì)應(yīng)的方法。那么我們?nèi)绾稳?shí)現(xiàn)這樣的調(diào)用呢?DispatchAction中對(duì)struts-config.xml的配置比一般的Action配置稍顯麻煩,舉例來(lái)講:
  
  <;action path="/telConsle" type="com.meng.action.TelConsleDispatch"
  
  name="telForm" scope="request" validate="false" parameter="method"/>
  
  我們?cè)谶@里指定了parameter的值為method,而當(dāng)我們請(qǐng)求Action的時(shí)候我們必須指定method的值來(lái)確定去我們想要調(diào)用哪個(gè)Action方法。如:
  
  http://localhost:8080/tsss/telConsle.do?method=save
  
  顯然,通過(guò)顯示鏈接指定參數(shù)值的方法可以達(dá)到我們調(diào)用方法的目的。然而我們假如不想顯示調(diào)用的話我們應(yīng)該怎樣處理呢?還記得前面講過(guò)的方法么?我們?cè)陧?yè)面中定義一個(gè)隱藏的變量,然后通過(guò)對(duì)變量的賦值來(lái)確定我們來(lái)確定我們將要執(zhí)行的業(yè)務(wù)方法。在這里我們可不可以一樣這樣使用呢?
  
  答案是肯定的,我們當(dāng)然可以通過(guò)定義一個(gè)類(lèi)似于<;html:hidden property="operAt"/>的變量,只要對(duì)該變量賦上對(duì)應(yīng)DispatchAction中的方法的值來(lái)確定我們要調(diào)用的業(yè)務(wù)方法。然而筆者比提倡用Struts標(biāo)簽來(lái)定義這樣的隱含的變量,因?yàn)镾truts標(biāo)簽為動(dòng)態(tài)標(biāo)簽,它可能需要在FormBean中定義該屬性的get和set方法,而在parameter中定義的值不需要在FormBean當(dāng)中定義get和set方法。筆者建議用html的標(biāo)準(zhǔn)標(biāo)簽<;input>來(lái)定義該隱藏變量。因?yàn)樵摌?biāo)簽為靜態(tài)標(biāo)簽,假如我們?cè)撚肧truts標(biāo)簽的話可能導(dǎo)致頁(yè)面出錯(cuò)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 高州市| 宜春市| 历史| 石嘴山市| 河西区| 华蓥市| 海南省| 离岛区| 南乐县| 唐海县| 西充县| 武隆县| 子长县| 陵水| 怀柔区| 乐至县| 江陵县| 汝城县| 中江县| 柳州市| 广饶县| 页游| 罗定市| 玛曲县| 安远县| 镇安县| 德州市| 南木林县| 巴彦县| 肇庆市| 阿坝县| 万州区| 南和县| 罗城| 改则县| 会同县| 枣强县| 普安县| 华安县| 乌恰县| 山东省|