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, //核