struts2是web應用中一個經常使用的mvc框架,下面探討一下其內部運行機制: web
1.從客服端瀏覽器輸入的url後,客服端經過http協議發送一個請求到服務器(tomcat),Tomcat收到這個請求以後,它會查看你請求的是哪個web application(通常是一個項目),接着將請求交給對應的web application處理; 瀏覽器
2.web application的處理過程:首先讀取web.xml文件,經過filter過濾url,而後調用filter-class對應的類StrutsPrepareAndExecuteFilter; tomcat
3 接着StrutsPrepareAndExecuteFilter被調用,StrutsPrepareAndExecuteFilter詢問ActionMapper來決定這個請是否須要調用某個Action
4 若是ActionMapper決定須要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy
5 ActionProxy經過Configuration Manager詢問框架的配置文件,找到須要調用的Action類
6 ActionProxy建立一個ActionInvocation的實例。
7 ActionInvocation實例使用命名模式來調用,在調用Action的過程先後,涉及到相關攔截器(Intercepter)的調用。
8 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果一般是(但不老是,也可 能是另外的一個Action鏈)一個須要被表示的JSP或者FreeMarker的模版。在表示的過程當中能夠使用Struts2 框架中繼承的標籤。 服務器