1. 程式人生 > >Struts2的整體流程

Struts2的整體流程

  struts2的前身是WebWork,後改名為struts2,其與struts1沒任何關係。

  請求先經controller層,本質是一個過濾器Filter,其對請求的url進行判斷。若為頁面,進行請求的轉發,保證請求資料不會丟失;若為action,從配置檔案找到對應action類的完全限定名,並通過反射載入此類,同時生成其例項。
  Filter將生成的例項注入介面Action的例項,並呼叫配置中給出的方法,預設執行execute方法。進入action的方法實際是從controller層轉移到了model層,本質是通過函式呼叫實現的,方法執行結束後,從model層返回到controller層。
  controller層根據action返回的結果字串,從配置檔案找到下一步的跳轉路徑。若為頁面,可進行請求的轉發,也可進行響應的重定向;若為action,則必須進行響應的重定向,保證重新經過controller層。

// struts-x_y.xml
// 專案根據業務劃分多個package,每個package對應一個配置檔案
<struts>
    // name,主要用作繼承使用
    // namespace,決定了包中action的訪問路徑,要根據業務給出自己的namespace,不建議使用預設namespace
    // extends,給出當前包繼承的包
    <package name="xY" namespace="/xY" extends="login">
        // name,action的名字,不同包中action可同名,請求action使用name,建議name為要請求的方法名
// method,請求action時要呼叫的方法名字 <action name="cD" method="cD" class="....XxAction"> // name,對應action返回的結果字串 // type,結果的處理型別 // 預設dispatcher,以jsp/html顯示;velocity,以vm顯示;redirectAction,重定向action <result name="success" type="velocity"> // 跳轉路徑,建議使用絕對路徑,以/開頭,從專案根目錄開始
// 相對路徑,相對namespace /WEB-INF/.. </result> </action> .. </package> </struts> // struts.xml // 所有的struts配置檔案在此整合 <struts> <package name="x-base" extends="struts-default"> <interceptors>..</interceptors> .. </package> <package name="login" extends="x-base"> <interceptors>..</interceptors> .. </package> // 合併其它的配置檔案,相對路徑,相對當前xml檔案的路徑 <include file="struts/struts-x_y.xml" /> .. </struts> public class XxAction { // 接收前端引數 public String userName; // 前端顯示資訊 public String message; // 接收後端服務例項 @Resource(name = "xxService") public XxService xxService; // action通過set方法,將前端請求中的引數值注入到其對應的屬性,請求引數的key或前端表單控制元件的name必須與屬性名相同 public void setUserName(String userName) { this.userName = userName; } // 若前端使用jsp,其可通過get方法,顯示來自action的資料 pulbic String getMessage() { return message; } public void cD() { // 若前端使用vm,必須將前端顯示資料放入ValueStack ValueStack context = ActionContext.getContext().getValueStack(); context.set("message", message); } // 返回框架控制器,再決定進一步走向 return "success"; }

相關推薦

Struts2整體流程

  struts2的前身是WebWork,後改名為struts2,其與struts1沒任何關係。   請求先經controller層,本質是一個過濾器Filter,其對請求的url進行判斷。若為頁面,進行請求的轉發,保證請求資料不會丟失;若為action,從配

Struts2工作流程

根據 系列 div images 實例 ima strong http響應 fig Struts2是一個非常優秀的MVC框架,它主要通過StrutsPrepareAndExecuteFilter過濾器將Struts2集成到Web應用中的。 基本工作流程: 1、客戶端提交一個

cocos2dx-js 初探 整體流程helloworld.html分析

main 查詢 cocos2 需要 完整版 簡單 初始 最終 elf 我們下載的是cocos2dx-js的精簡版本,主要是為了分析簡單明了,能更清楚的看到架構流程。下載地址:http://cocos2d-x.org/filecenter/jsbuilder/下載輕量版。 百

朝花夕拾之Struts2工作流程

ati logs proxy cati 需要 9.png con 工作流 核心 上圖為struts2官網上的工作流程圖,通過上圖可以看出Struts2是怎麽樣的工作的:   1,應用服務器(Tomcat或者Jetty等)將瀏覽器請求封裝成HttpServletReques

SpringMVC的流程分析(一)—— 整體流程概括

classes amp 不同 方法 restfu equals 類圖 strong .get SpringMVC的整體概括 之前也寫過springmvc的流程分析,只是當時理解的還不透徹所以那篇文章就放棄了,現在比之前好了些,想著寫下來分享下,也能增強記憶,也希望可以幫助到

Spring MVC 處理HTTP請求的整體流程

含義 alt myba 解析 patch ros ati 框架 ice   DispatcherServlet是一個前端控制器,是整個Spring MVC框架的核心組件。它在接收HTTP請求之後,根據請求調用Spring MVC中的各個組件。   常用接口及其含義:   1

linux input輸入子系統分析《四》:input子系統整體流程全面分析

總線 返回值 分代 並不是 事件 等等 lag pri 位置 1 input輸入子系統整體流程 本節分析input子系統在內核中的實現,包括輸入子系統(Input Core),事件處理層(Event Handler)和設備驅動層。由於上節代碼講解了設備驅動層的寫法

struts2執行流程核心

nbsp 分享圖片 png 流程 .com mage 圖片 執行 info struts2執行流程核心

三大框架(ssh)學習——Struts2工作流程分析

Struts2工作流程分析   STRUTS2框架內部流程 1. 客戶端傳送請求的tomcat伺服器。伺服器接受,將HttpServletRequest傳進來。 2. 請求經過一系列過濾器(如:ActionContextCleanUp、SimeMesh等) 3. Fil

Struts2工作原理與Struts2工作流程

Struts2官方工作原理圖 Struts2的工作原理: 1.客戶端初始化一個紙箱Servlet容器(比如Tomcat)的請求。 2.HttpServletRequest請求經過一系列的Filter(過濾器)。 (這些過濾器中有個ActionContextCleanU

SSD講堂二(整體流程)_balancap-ssd-tensorflow_ubuntu環境_手把手教學操作全流程

重要參考 https://blog.csdn.net/yexiaogu1104/article/details/77415990       第一部分 一、利用jupyter Notebook可以輕鬆的執行SSD的一個測試用例 你要做的就

SSD講堂二(整體流程)_參考文章_跑balancap-ssd-tensorfow流程

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/yexiaogu1104/article/details/77415990 </div> 這裡只從工程的角度介紹這份程式碼的使用方法,參照github上

JVM (一)--執行整體流程

面試:面試被問到JVM,竟然對JVM這幾個字母沒反應過來,後面也就答了JVM的記憶體管理和GC演算法,答得模稜兩可。 寫給自己:JVM一直都是Java中很重要基礎知識,是面試中必問的知識點。如果連JVM都弄不清楚,還談什麼Java開發。 執行流程 Java語言宣稱:一次編譯,到處執行

使用Flask框架的整體流程

使用Flask框架的整體流程 自己使用的一些整理,若有紕漏,敬請指出。 Flask框架 需要的模組 flask 裡的 Flask 1.主程式(run) 首先例項化物件 app = Flask(name) app.config[‘SECRET_KEY’] = rand

flask---整體流程思路

思路圖 下面二話不說還是看程式碼 manage.py內程式碼 import os from flask_migrate import MigrateCommand from flask_script import Manager from App import create_ap

MapReduce的整體流程、及shuffle機制

MapReduce的整體流程     1、待處理資料     2、提交客戶端submit()     3、提交資訊切片----hadoop jar wc.jar     4、計算出

Struts2訪問流程和架構

Struts2訪問流程和架構 一、訪問流程: 描述執行流程 ( 1 ). 客戶端初始化一個指向Servlet容器(例如Tomcat)的請求 (客戶端提交一個HttpServletRequest請求。) (2)請求被提交到一系列的過濾器(Filter)。 如(Acti

Struts2基本流程及基礎知識問答

這是我在struts2學習過程中的一些思考和查閱所得答案: 我能看懂的是什麼? 1、為什麼要用介面和實現類。 增加專案的可擴充套件性,方便後期升級和維護。 2、專案的整體流程。 HTML頁面(JQuery Ajax 提交action請求)——》控制類action類——》呼

建立Struts2框架流程

建立一個簡單的Struts2框架流程 首先你的電腦要安裝Myeclipse 並且安裝上tomcat,保證軟體能夠正常使用 為大家奉上軟體的下載地址 myeclipase下載地址 tomcat下載地址 好了 !!工具已經有了,下面我們進入正題

深入理解Java執行緒池(1):ThreadPoolExecutor整體流程梳理,建立worker相關方法

執行緒池作為一個執行緒的容器,主要的作用就是防止頻繁建立執行緒,節省時間資源和cpu資源。雖然一定程度上佔用了記憶體,但實際情況下利遠遠大於弊。 構造方法 public ThreadPoolExecutor( int corePoolSize, //核