欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Struts第2天

繼續總結Struts的第2天的學(xué)習成果!

今天剛一上課,吳老就又總結了下昨天的知識點(diǎn),并且,又給我們講了一遍Struts的加載流程。這個(gè)問(wèn)題在昨天的博客中已經(jīng)寫(xiě)到,今天就不具體描述了。

Struts的5個(gè)擴展點(diǎn):

1.ActionSerlet 擴充中央控制器

2.RequestProessor組件 請求處理器

3.ActionForm

4.Action

5.Plug in 插件

Struts視圖組件

提到Struts視圖組件那么就的提ActionForm了,ActionForm封裝了客戶(hù)端的請求信息,我們一般所用的就是一般的靜態(tài)Action,也就是說(shuō)我們的ActionForm必須創(chuàng )建出來(lái)。

ActionForm的生命周期:

ActionForm是在web服務(wù)器到傳遞給不同的Action的時(shí)候也就是它的生命周期了,其實(shí),我們可以看到我們的form對象的只能傳遞到Action里面,不能傳遞到我們的Model層了,那么,在A(yíng)ction中的時(shí)候我們就必須要轉換ActionForm對象到DTO(簡(jiǎn)單值對象),然后在繼續往下一層傳遞。

剛才提到了靜態(tài)的ActionForm對象,那么,可想而知肯定會(huì )有動(dòng)態(tài)的ActionForm了,當然,java提供了7種內置的ActionForm對象,今天就先熟悉一下我們的DynActionForm對象,動(dòng)態(tài)的ActionFrom對象配置更為簡(jiǎn)單,并且,不用創(chuàng )建formbean對象了。

好了,我們來(lái)看一下一個(gè)簡(jiǎn)單的動(dòng)態(tài)Form的配置吧,就拿今天的DynActionForm來(lái)說(shuō),示例:

<form-bean name="lovo"type="org.apache.struts.action.DynaActionForm">
   <form-propertyname="name"type="java.lang.String"></form-property>
   <form-propertyname="pwd"type="java.lang.String"></form-property>
  </form-bean>

屬性全部都在formbean里面直接配置,那么,這種書(shū)寫(xiě)formbean的方法感覺(jué)很良好,但是,它有很多缺點(diǎn),配置好了,那么我們的頁(yè)面如果改動(dòng)的話(huà)我們的action里面也需要改動(dòng)配置文件也需要改動(dòng),這樣就違反了開(kāi)閉原則了,并且,不支持validate代碼方式驗證。

既然說(shuō)到了formbean的驗證,那么就順便談?wù)剆truts的代碼方式的驗證。

我們需要做的是:

1.在A(yíng)ction的配置中需要配置兩項內容,

validate="true" 是否驗證為true input="/login.jsp"如果驗證錯誤的話(huà)就會(huì )跳轉到login.jsp頁(yè)面

2.在我們的formbean中需要重寫(xiě)validate方法,那么我們來(lái)看一個(gè)最簡(jiǎn)單的驗證:

 public ActionErrorsvalidate(ActionMapping mapping,
   HttpServletRequestrequest) {
  ActionErrors errors = newActionErrors();
  if("".equals(name) || name ==null){ //驗證非空
   errors.add("name",newActionMessage("error.login.name"));

 //添加一條錯誤信息到errors中
  }
  if("".equals(pwd) || pwd ==null){
   errors.add("pwd",newActionMessage("error.login.pwd"));
  }
  return errors;
 }

好了,我們來(lái)具體看看這句代碼的意思

errors.add("name",newActionMessage("error.login.name"));

errors是一個(gè)裝錯誤的容器,大眼一看就曉得是一個(gè)MAP集合了,那么,它的鍵是對應我們的jsp頁(yè)面顯示的property,值對應著(zhù)一條錯誤信息,我們會(huì )發(fā)現這條錯誤信息的參數看起來(lái)有點(diǎn)奇怪,其實(shí),它的參數對應著(zhù)國際化文件-ApplicationResources.properties的鍵,那么,我們來(lái)看看這個(gè)properties文件:

error.login.name=\u7528\u6237\u540D\u975E\u6CD5\uFF01我們知道了,它的鍵的來(lái)源,那么,它的value是從哪來(lái)的,其實(shí)它的值正好對應的是我們要提示的錯誤信息,這里我使用了utf-8編碼格式。

3.既然我們的錯誤信息有了,那么我們需要在我們的視圖層來(lái)提示用戶(hù),那么,在這里我們就必須用到我們的Struts標簽庫了,在這里我們需要在jsp頁(yè)面中應用struts-html.tld這個(gè)文件,一般它的位置位于/WEB-INF/struts-html.tld,例如:<

那么在這個(gè)標簽庫里面有一個(gè)<html:errors property="name"/> 在這里我們的property的值是引用我們的

errors.add("name",new ActionMessage("error.login.name"));這句話(huà)里面的key值的。

其實(shí)Struts標簽庫是完全替代了html的標簽庫了的,但是,為了較好的移植性,所以,我們一般在項目中用的較少。

 

控制器組件

控制器組件,今天就講了3個(gè)內置Action對象,其實(shí)在struts中有6中內置的Action對象

ForwardAction 用于頁(yè)面的轉發(fā)和鏈接的跳轉

IncludeAction 用于包含另外一個(gè)web組件 它的配置跟ForwordAction配置基本一致

DisPatchAction 用于一個(gè)表單多個(gè)提交按鈕的時(shí)候

LookUpDisPatchAction在一個(gè)表單中有多個(gè)提交按鈕而這些按鈕又有一個(gè)共同的名字,擴展了DisPatchAction

MappingDisPatchAction這個(gè)也是擴展了DisPatchAction,在url請求時(shí)不需要方法名,其他的大致跟DisPathchAction差不多,配置上稍微有那么一點(diǎn)點(diǎn)區別,因為,它有多個(gè)請求路徑。

SwitchAction 用于多模塊配置各個(gè)子模塊之間的切換

那么,我們在這里具體講解前3個(gè)內置Action。

ForwardAction

在講解之前,為什么要使用ForwardAction呢?因為Struts規定所有的請求必須經(jīng)過(guò)中央控制器-ActionServlet,但是,在使用A連接和Forward轉發(fā)的時(shí)候我們是否思考過(guò),他們是否經(jīng)過(guò)了中央控制器呢?很顯然答案是否定的!

好了,其實(shí)ForwardAction的配置很簡(jiǎn)單,示例:

<action path="/lovo"type="org.apache.struts.actions.ForwardAction"parameter="/index.jsp"></action>

這里的parameter的屬性就是要跳轉的頁(yè)面,IncludeAction跟這個(gè)配置一樣,parameter就是要包含的頁(yè)面。

DisPatchAction

我們先看下面代碼:

 <formaction="lovo.do" method="post">
  <inputtype="submit" value="添加" />
  <inputtype="submit" value="刪除" />
  <inputtype="submit" value="修改" />
 </form>

我們看以上的代碼會(huì )發(fā)現當一個(gè)表單有多個(gè)按鈕的時(shí)候,我們怎么區分不同的點(diǎn)擊呢?當然,這里可以用js來(lái)解決,那么,我們的Action就會(huì )有3個(gè),那如果在多幾個(gè)提交按鈕呢?可見(jiàn)情況是很?chē)乐氐?,有什么解決辦法么?

哈哈,我們的DisPatchAction就是在這里發(fā)揮它的重要作用的,好了,我們將3種不同的請求合成到一個(gè)action中,代碼如下:

public class BookAction extendsDispatchAction{
 public ActionForward add(ActionMapping mapping,ActionForm form,
   HttpServletRequestrequest, HttpServletResponse response)
   throwsException { 
  return null;
 }
 public ActionForward del(ActionMapping mapping,ActionForm form,
   HttpServletRequestrequest, HttpServletResponse response)
   throwsException { 
  return null;
 }
  public ActionForwardupdate(ActionMapping mapping, ActionForm form,
    HttpServletRequestrequest, HttpServletResponse response)
    throwsException {
   returnnull;
   
}

這個(gè)時(shí)候,我們的配置文件如何寫(xiě)呢?

<action path="/book"type="com.lovo.action.BookAction"parameter="m"></action>

這里的parameter的就是指我們的方法名,在我們提交的時(shí)候會(huì )這樣來(lái)寫(xiě):

book.do?m=add  添加業(yè)務(wù)

book.do?m=del  刪除業(yè)務(wù)

book.do?m=update 更新業(yè)務(wù)

 

好了,先暫時(shí)寫(xiě)到這吧!

打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Struts預定義的三種重要Action類(lèi)
struts中DispatchAction的使用
includeAction與ForwardAction
Struts1 ForwardAction
運用Jakarta Struts的七大實(shí)戰心法
《簡(jiǎn)述培訓的流程》
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久