亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Struts框架之構建Controller組件

2019-11-17 06:18:47
字體:
來源:轉載
供稿:網友

  一、概述

  在Struts 架構中,Controller主要是ActionServlet,但是對于業務邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個組件協調完成。其中,Action扮演了真正的業務邏輯的實現者,而ActionMapping和ActionForward則指定了不同業務邏輯或流程的運行方向。

  應用程序的 Controller 部分集中于從客戶端接收請求(典型情況下是一個運行瀏覽器的用戶),決定執行什么商業邏輯功能,然后將產生下一步用戶界面的責任委派給一個適當的View組件。在Struts中,controller的基本組件是一個 ActionServlet 類的servlet。這個servlet通過定義一組映射(由java接口 ActionMapping 描述)來配置。每個映射定義一個與所請求的URI相匹配的路徑和一個 Action 類(一個實現 Action 接口的類)完整的類名,這個類負責執行預期的商業邏輯,然后將控制分派給適當的View組件來創建響應。

  Struts也支持使用包含有運行框架所必需的標準屬性之外的附加屬性的 ActionMapping 類的能力。這答應我們保存特定于我們的應用程序的附加信息,同時仍可利用框架其余的特性。另外,Struts答應我們定義控制將重定向到的邏輯名,這樣一個行為方法可以請求"主菜單"頁面,而不需要知道相應的jsp頁面的實際名字是什么。這個功能極大地幫助我們分離控制邏輯(下一步做什么)和顯示邏輯(相應的頁面的名稱是什么)。下圖1是Struts的controller組件示意圖:

Struts框架之構建Controller組件(圖一)
  二、創建Controller組件

  Struts包括一個實現映射一個請求URI到一個行為類的主要功能的servlet。因此我們的與Controller有關的主要責任是:

  為每一個可能接收的邏輯請求寫一個 Action 類(也就是,一個 Action 接口的實現);寫一個定義類名和與每個可能的映射相關的其它信息的 ActionMapping 類(也就是,一個 ActionMapping 接口的實現);寫行為映射配置文件(用xml)用來配置controller servlet。

  為應用程序更新web應用程序展開描述符文件(用XML)用來包括必需的Struts組件,我們給應用程序添加適當的Struts組件。

  1、Action 實現

  Action 接口定義一個單一的必須由一個 Action 類實現的方法,就象下面這樣:

public ActionForward perform(ActionServlet servlet,
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException;
  一個 Action 類的目標是處理這個請求,然后返回一個標識JSP頁面的 ActionForward 對象,控制應該重定向這個JSP頁面以生成相應的響應。Struts 架構為應用系統中的每一個Action類只創建一個實例。因為所有的用戶都使用這一個實例,所以你必須確定你的Action 類運行在一個多線程的環境中。下圖2顯示了一個execute()方法如何被訪問:

Struts框架之構建Controller組件(圖二)
圖2 Action實例的execute()方法

  注重,客戶自己繼續的Action子類,必須重寫execute()方法,因為Action類在默認情況下是返回null的。

  在 Model 2 設計模式中,一個典型的 Action 類將在它的 perform() 方法中實現下面的邏輯:

  驗證用戶session的當前狀態(例如,檢查用戶已經成功地注冊)。假如 Action 類發現沒有注冊存在,請求應該重定向到顯示用戶名和口令用于注冊的JSP頁面。應該這樣做是因為用戶可能試圖從"中間"(也就是,從一個書簽)進入我們的應用程序,或者因為session已經超時并且servlet容器創建了一個新的session。假如驗證還沒有發生(由于使用一個實現 ValidatingActionForm 接口的form bean),驗證這個 form bean 的屬性是必須的。假如發現一個問題,當作一個請求屬性保存合適的出錯信息要害字,然后將控制重定向回輸入表單這樣錯誤可以被糾正。

  執行要求的處理來處理這個請求(例如在數據庫里保存一行)。這可以用嵌入 Action 類本身的代碼來完成,但是通常應該調用一個商業邏輯bean的一個合適的方法來執行。更新將用來創建下一個用戶界面頁面的服務器端對象(典型情況下是request范圍或session范圍beans,定義我們需要在多長時間內保持這些項目可獲得)。返回一個標識生成響應的JSP頁面的適當的 ActionForward 對象,基于新近更新的beans。典型情況下,我們將通過接收到的 ActionMapping 對象(假如我們使用一個局部于與這個映射上的邏輯名)或者在controller servlet 本身(假如我們使用一個全局于應用程序的邏輯名)上調用 findForward() 得到一個對這樣一個對象的引用。

  當為 Action 類編程時要記住的設計要點包括以下這些:

  controller servlet僅僅創建一個我們的 Action 類的實例,用于所有的請求。這樣我們需要編寫我們的 Action 類使其能夠在一個多線程環境中正確運行,就象我們必須安全地編寫一個servlet的 service() 方法一樣。

  幫助線程安全編程的最重要的原則就是在我們的 Action 類中僅僅使用局部變量而不是實例變量。局部變量創建于一個分配給每個請求線程的棧中,所以沒有必要擔心會共享它們。

  盡管不應該,代表我們的系統中Model部分的的beans仍有可能拋出違例。我們應該在我們的 perform() 方法的邏輯中捕捉所有這樣的違例,并且通過執行以下語句將它們記錄在應用程序的日志文件中(包括相應的棧跟蹤信息):



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美在线字幕| 在线电影中文日韩| 国产福利成人在线| 欧美大荫蒂xxx| 久久精品视频在线播放| 日韩av片电影专区| 国产91精品久久久久| 久久免费精品视频| 欧美日韩在线另类| 亚洲精品理论电影| 日本精品一区二区三区在线| 97在线视频免费看| 欧美色视频日本高清在线观看| 精品香蕉在线观看视频一| 有码中文亚洲精品| 黑人巨大精品欧美一区二区三区| 91成人性视频| www.日韩免费| 欧美日韩在线观看视频| 日韩激情片免费| 国产91在线播放| 欧美电影在线免费观看网站| 精品美女永久免费视频| 日韩电影视频免费| 91精品久久久久久久久久久久久| 国产精品亚洲精品| 91香蕉亚洲精品| 欧美电影在线观看| 欧美激情日韩图片| 国产aⅴ夜夜欢一区二区三区| 国产91成人video| 欧美超级免费视 在线| 亚洲免费视频在线观看| 国产精品爽爽爽| 国产香蕉精品视频一区二区三区| 国产精品扒开腿爽爽爽视频| 欧美视频二区36p| 国产日韩在线播放| 久久久久女教师免费一区| 日韩av最新在线| 91高潮精品免费porn| 成人福利在线观看| 91天堂在线观看| 97国产一区二区精品久久呦| 人九九综合九九宗合| 在线观看国产精品日韩av| 日韩在线观看免费| 亚洲老头老太hd| 成人av电影天堂| 91精品久久久久久久久久入口| 欧美激情视频在线免费观看 欧美视频免费一| 欧美日韩成人黄色| 国产精品久久久久久久久久免费| 91超碰caoporn97人人| 中文字幕欧美专区| 成人精品视频99在线观看免费| 欧美激情在线视频二区| 亚洲激情在线视频| 欧美日韩激情网| 久久国产天堂福利天堂| 欧美日韩另类字幕中文| 亚洲精品91美女久久久久久久| 性色av一区二区三区在线观看| 亚洲午夜精品久久久久久性色| 国产精品日韩在线| 91久久综合亚洲鲁鲁五月天| 在线观看日韩www视频免费| 日韩在线视频二区| 国产精品久久久久久久一区探花| 久久久久久一区二区三区| 日本道色综合久久影院| 亚洲综合小说区| 亚洲人a成www在线影院| 日韩免费av在线| 国产精品高潮粉嫩av| 亚洲精品福利在线观看| 欧美日韩国产麻豆| 日韩在线视频中文字幕| 国产精品久久久久久av| 日韩精品中文在线观看| 九九精品视频在线观看| 欧美肥老妇视频| 亚洲视频777| 亚洲激情视频在线| 久99久在线视频| 成人在线观看视频网站| 亚洲国产另类 国产精品国产免费| 亚洲一区二区日本| 国产精品视频最多的网站| 国产精品美女久久久久久免费| 久热精品视频在线观看一区| 国产在线精品播放| 亚洲国产成人精品久久| 欧美日韩国产麻豆| 亚洲天堂免费观看| 久久91超碰青草是什么| 亚洲第一中文字幕| 亚洲男人天堂古典| 国产精品久久不能| 久久久久久久久久久人体| 国产一区二区三区久久精品| 成人综合国产精品| 黑人与娇小精品av专区| 在线看国产精品| 国产精品视频公开费视频| 美日韩丰满少妇在线观看| 91精品久久久久久久久不口人| 午夜精品久久久久久久99黑人| 国产91在线播放精品91| 91精品视频免费观看| 久久影视电视剧免费网站| 在线观看免费高清视频97| 国产一区二区三区直播精品电影| 久久综合免费视频| 日韩精品一区二区三区第95| 亚洲成av人影院在线观看| 亚洲国产中文字幕在线观看| 亚洲电影天堂av| 亚洲第一中文字幕| 亚洲日本中文字幕免费在线不卡| 亚洲精品久久久久中文字幕二区| 中文字幕欧美精品日韩中文字幕| 国产伦精品一区二区三区精品视频| 97超级碰碰碰| 亚洲美女精品久久| 欧美大片第1页| 性欧美长视频免费观看不卡| 国产精品一区二区三区久久| 国产日韩视频在线观看| 久久999免费视频| 亚洲欧美在线一区二区| 成人国产精品av| 91精品国产自产91精品| 成人a视频在线观看| 国产精品∨欧美精品v日韩精品| 国产精品爽爽ⅴa在线观看| 在线观看精品自拍私拍| 国产日韩中文字幕| 成人精品久久av网站| 在线免费观看羞羞视频一区二区| 欧美综合国产精品久久丁香| 日韩精品小视频| 色婷婷亚洲mv天堂mv在影片| 日韩中文第一页| 97精品国产97久久久久久春色| 欧美成人国产va精品日本一级| 国产精品激情自拍| 亚洲人精选亚洲人成在线| 色综合久久88| www.亚洲免费视频| 亚洲欧洲午夜一线一品| 亚洲免费精彩视频| 亚洲va欧美va在线观看| 精品国产一区二区三区在线观看| 亚洲跨种族黑人xxx| 亚洲乱码av中文一区二区| 黑人狂躁日本妞一区二区三区| 亚洲第一网站免费视频| 国产精品免费观看在线| 黑人狂躁日本妞一区二区三区| 亚洲美女中文字幕| 91精品综合久久久久久五月天| 国产激情999| 国产精品成人免费视频|