讓我們重溫 – Struts的Action類

Struts Action Classes

Struts的Action類

介紹

Apache的Struts是一個用於開發JSP或基於servlet的Web應用程序的開源框架. Struts的擴展Java Servlet API的和基於模型視圖控制器或MVC設計模式上. 在Struts框架的Action類定義了業務邏輯. 一個Action類處理客戶端的請求,並準備響應. 這也決定了應答應該轉發. 基本上是一個動作類從表現層接收數據,並將數據轉發到相應的業務層. 同時它處理它來自業務層的數據,並轉發那些回表現層. In short, Action類被描述為 –

  • Action類應該擴展 [碼] apache.struts.action.Action [/碼] 類.
  • 應重寫 [碼] 執行 [/碼] 的方法 [碼] 行動 [/碼] 類.
  • 操作servlet選擇在動作映射標記下定義傳入的HTTP請求中的Action類 [碼] 支柱config.xml中 [/碼] 文件.
  • 這些類被用來在業務層或數據訪問層來調用的類來從豆中的數據,並存儲處理後的數據,並返回根據情況的結果或錯誤.
  • 這些類是多線程. 因此,一個開發者在處理動作變量,因為它們不是線程安全的要小心.

動作類的類型

我們已經在struts以下類型的動作類 –

  • 行動 – 我們在其中實現業務邏輯的基本動作類.
  • 包括行動 – 類似包括JSP頁面指令.
  • 正向動作 – 使用的情況下,我們需要向前從一個JSP到另一個請求. 如果我們直接從一個JSP請求轉發它違反了MVC架構. 因此,一個動作類是用來做這個工作.
  • 派遣行動 – 處理在多個方法的多個操作. 最好是有,而不是在一個動作類的單個execute方法合併整個業務邏輯的每個操作的一種方法.
  • 查找派遣行動 – 同派遣行動,但建議不要使用.
  • 開關動作 – 使用Struts應用程序的不同模塊之間進行切換.

最常用的動作類 –

  • 行動
  • 派遣行動

Action類

這是在struts的基本操作類. 在這裡,開發者需要重寫execute方法為下 -

[碼]

package com.home.upload.action ;

進口 java.io.IOException異常 ;

進口 的java.util.HashMap ;

進口 的java.util.Map ;

進口 javax.servlet.ServletException ;

進口 javax.servlet.http.HttpServletRequest ;

進口 javax.servlet.http.HttpServletResponse ;

進口 org.apache.log4j.Logger ;

進口 org.apache.struts.action.Action的 ;

進口 org.apache.struts.action.ActionForm ;

進口 org.apache.struts.action.ActionForward ;

進口 org.apache.struts.action.ActionMapping ;

進口 org.apache.struts.upload.FormFile ;

進口 com.home.upload.action.forms.UploadForm ;

進口 com.home.upload.service.FileUploadService ;

進口 com.home.upload.service.impl.FileUploadServiceImpl ;

進口 com.home.upload.util.UploadConstants ;

/**

* @作者 TechAlpine

*/

公眾 FileUploadAction 擴展 行動 {

私人 靜止 記錄儀 記錄儀 =記錄儀.getLogger(FileUploadAction.);

公眾 執行的ActionForward(的ActionMapping映射, ActionForm的形式, HttpServletRequest的請求,

HttpServletResponse的響應) IOException異常, ServletException異常 {

如果 (形式 != ) {

上傳表單上傳表單= (UploadForm) 形式;

FormFile文件1 = uploadForm.getFilePath1 ();

FormFile文件2 = uploadForm.getFilePath2 ();

FormFile文件3 = uploadForm.getFilePath3 ();

地圖< 串, 字節[] > fileMap = HashMap中< 串, 字節[] > ();

fileMap.put(file1.getFileName(), file1.getFileData());

fileMap.put(file2.getFileName(), file2.getFileData());

fileMap.put(file3.getFileName(), file3.getFileData());

FileUploadService uploadService = FileUploadServiceImpl ();

如果 (uploadService.doUpload (

getServlet().的getServletContext().getRealPath(“/”).CONCAT( UploadConstants.UPLOAD_FOLDER), fileMap )

.尺寸() > 0) {

記錄儀.調試( “上傳是全成” );

uploadForm.setUploadFlag(UploadConstants.UPLOAD_SUCCESS);

} 其他 {

記錄儀.調試( ” 上傳失敗 ” );

uploadForm.setUploadFlag(UploadConstants.UPLOAD_FAILURE);

}

}

return (mapping.findForward(UploadConstants.UPLOAD_SUCCESS));

}

}

[/碼]

“ [碼] 支柱config.xml中 [/碼] 文件為這個動作類應該是為下 -

[碼]

<?XML版本= “1.0” 編碼= “ISO-8859-1” ?>

<!DOCTYPE Struts的配置PUBLIC ” -//Apache軟件基金會// DTD的Struts配置1.1 // EN” “HTTP://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd”>

<Struts的配置>

<表單豆>

<表單bean名稱= “登錄表單” 類型= “com.home.upload.action.forms.LoginForm” />

<表單bean名稱= “菜單表” 類型= “com.home.upload.action.forms.MenuForm” />

<表單bean名稱= “UploadForm” 類型= “com.home.upload.action.forms.UploadForm” />

</表單豆>

<全球前鋒/>

<動作映射>

<操作路徑= “/登錄” 類型= “com.home.upload.action.LoginAction” name = “登錄表單” 輸入= “/login.jsp的” >

<轉發名= “success” PATH = “/menu.jsp” />

<轉發名= “失敗” PATH = “/loginFailure.jsp” />

</action>

<操作路徑= “/menuAction” 類型= “com.home.upload.action.MenuAction” name = “菜單表” 輸入= “/menu.jsp” 參數= “方法” >

<轉發名= “上載” PATH = “/fileUpload.jsp” />

<轉發名= “listfiles” PATH =“/listUploadedFiles.jsp” />

</action>

<操作路徑= “/uploadAction” 類型= “com.home.upload.action.FileUploadAction” name =“UploadForm” 輸入=“/fileUpload.jsp” >

<轉發名=“uploadSuccess” PATH =“/uploadSuccess.jsp” />

</action>

</動作映射>

<信息資源參數= “ApplicationResources” />

<插件的className = “org.apache.struts.validator.ValidatorPlugIn” >

<設置property屬性= “路徑名”

值= “/WEB-INF /驗證 - rules.xml中,/WEB-INF / validation.xml中” />

</插入>

</Struts的配置>

[/碼]

正如我們在上面的例子中看到,如果類擴展了基本的Action類應該重寫 [碼] 執行 [/碼] 方法. 也支柱配置文件僅具有一個對應於正向通路 [碼] uploadAction [/碼].

派遣行動

調度動作類也擴展了基本動作類. 這個類有一個優點,即它不具有明確覆蓋執行方法,而開發者可以自由地寫自己的方法action類. 它使開發人員使用多個流相同的動作類. 一個經典的例子使用調度動作類在處理菜單操作的情況下 -

[碼]

package com.home.upload.action ;

進口 java.io.File中 ;

進口 java.io.IOException異常 ;

進口 java.util.List中 ;

進口 javax.servlet.ServletException ;

進口 javax.servlet.http.HttpServletRequest ;

進口 javax.servlet.http.HttpServletResponse ;

進口 org.apache.log4j.Logger ;

進口 org.apache.struts.action.ActionForm ;

進口 org.apache.struts.action.ActionForward ;

進口 org.apache.struts.action.ActionMapping ;

進口 org.apache.struts.actions.DispatchAction ;

進口 com.home.upload.action.forms.MenuForm ;

進口 com.home.upload.service.FileUploadService ;

進口 com.home.upload.service.impl.FileUploadServiceImpl ;

進口 com.home.upload.util.UploadConstants ;

/**

* @作者 TechAlpine

*/

公眾 MenuAction 擴展 DispatchAction的 {

私人 靜止 記錄儀 記錄儀 =記錄儀.getLogger( MenuAction.);

公眾 上傳的ActionForward( 的ActionMapping映射, ActionForm的形式, HttpServletRequest的請求,

HttpServletResponse的響應 ) IOException異常, ServletException異常 {

return ( mapping.findForward ( UploadConstants.上傳 ) );

}

公眾 的ActionForward listFiles( 的ActionMapping映射, ActionForm的形式, HttpServletRequest的請求,

HttpServletResponse的響應 ) IOException異常, ServletException異常 {

FileUploadService uploadService = FileUploadServiceImpl ();

字符串stagingLocation = getServlet().的getServletContext().getRealPath( “/” ). CONCAT( UploadConstants.UPLOAD_FOLDER );

菜單窗體菜單形式= (菜單表) 形式;

如果 (( 文件( stagingLocation ) ).存在() ) {

名單<串> 文件名= uploadService.getFileNames( stagingLocation );

如果 (fileNames.size() > 0 ) {

menuForm.setFiles( 文件名 );

menuForm.setListFlag ( UploadConstants.真正 );

} 其他 {

menuForm.setListFlag ( UploadConstants.);

}

} 其他 {

menuForm.setListFlag( UploadConstants.);

}

記錄儀.信息( ” 返回列表 “);

return (mapping.findForward(UploadConstants.LIST_UPLOADED_FILES));

}

}

[/碼]

我們在這裡看到有兩種方法從用戶處理請求. 這兩種方法都在所定義 [碼] 支柱config.xml中 [/碼] 為下 -

[碼]

<操作路徑= “/menuAction” 類型= “com.home.upload.action.MenuAction” name = “菜單表” 輸入= “/menu.jsp” 參數= “方法” >

<轉發名= “上載” PATH = “/fileUpload.jsp” />

<轉發名= “listfiles” PATH = “/listUploadedFiles.jsp” />

</action>

[/碼]

這兩種方法 – 上傳和listfiles有對動作類兩個單獨的條目 – MenuAction. 每一種方法都有它們將重定向到響應分開前進路徑.

結論

  • Struts是基於Java的Web應用程序使用的開源框架.
  • Struts是基於模型視圖控制器 – MVC設計模式.
  • Struts有五種不同的動作類,其中最常用的是 –
    • 行動
    • DispatchAction的
  • Action類是基類,所有的動作類應該擴展到.
  • 擴展Action類的類應該重寫execute方法.
  • 擴展調度動作類類有自己的行動方式前進.
  • 擴展調度動作類類可以有因此成為有用的多個可選流的情況下,多個動作轉發方法.

 

============================================= ============================================== 在亞馬遜上購買最佳技術書籍,en,電工CT Chestnutelectric,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share