引言
Struts2是一個開源的MVC(Model-View-Controller)框架,用於構建靜態的、數據驅動的Web利用順序。它持續了Struts 1的計劃理念,但在功能性跟機動性長停止了明顯晉升。本文將深刻剖析Struts2框架,包含其核心不雅點、架構原則、實戰技能以及罕見成績解答。
核心不雅點
Actions
Actions是Struts2框架中的核心組件,擔任處理用戶懇求,履行營業邏輯,並籌備數據以供視圖層展示。Action類平日實現了Action介面或持續自ActionSupport類,以便利用框架供給的默許行動跟功能。
Interceptors(攔截器)
攔截器用於在Action履行前後履行特定任務,如容許權檢查、數據預處理或後處理。攔截器可能被設置成攔截器棧,以實現更複雜的邏輯流程式把持制。
值棧與OGNL
值棧是Struts2用來存儲跟轉達數據的東西容器,它利用OGNL作為其表達式言語,使得開辟者可能輕鬆拜訪跟修改數據東西的屬性。
成果範例
Struts2框架支撐多種成果範例,如JSP、FreeMarker模板、Velocity模板、JSON、XML等,這些成果範例決定了Action履行後怎樣襯著呼應給客戶端。
架構原則
Struts2框架遵守以下架構原則:
- 松耦合:組件之間經由過程介面跟變亂停止通信,降落了組件之間的依附性。
- 模塊化:框架被計劃成模塊化的,使得開辟者可能根據須要抉擇跟設置所需的模塊。
- 可擴大年夜性:框架供給了豐富的擴大年夜點,使得開辟者可能輕鬆擴大年夜框架的功能。
實戰攻略
設置web.xml
<web-app>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<url-pattern>/</url-pattern>
</filter-mapping>
</web-app>
簡單的struts.xml設置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="index" class="com.example.IndexAction">
<result>/index.jsp</result>
</action>
</package>
</struts>
罕見成績解答
成績1:HTTP Status 404 - No result defined for action action.EntryAction and result input
解答:檢查頁面上能否有中英文標記錯誤,能否有struts標籤錯誤等。
成績2:Exception starting filter struts2 java.lang.NullPointerException
解答:檢查struts.xml文件中能否有設置開辟形式,以及commons-fileupload跟commons-io-1.3.2這兩個jar包能否已導入。
成績3:xxx cannot be resolved to a type
解答:假如xxx是sessionFactory,則與Hibernate有關。請檢查Hibernate設置文件,對比錯誤信息停止修改。
總結
Struts2是一個功能富強且機動的Web利用框架,合實用於構建複雜的Web利用順序。經由過程本文的剖析,讀者應當對Struts2有了更深刻的懂得,可能更好地利用它於現實項目中。