從零打造在線網盤系統之Struts2框架起步
歡迎瀏覽Java工程師SSH教程從零打造在線網盤系統系列教程,本系列教程將會使用SSH(Struts2+Spring+Hibernate)打造一個在線網盤系統,本系列教程是從零開始,所以會詳細以及著重地闡述SSH三個框架的基礎知識,第四部分將會進入項目實戰,如果您已經對SSH框架有所掌握,那麽可以直接瀏覽第四章,源碼均提供在GitHub/ssh-network-hard-disk上供大家參閱
本篇目標
- 掌握Struts2工作流程
- 掌握Struts2控制器
- 掌握Struts2XML配置
- 掌握Struts2註解配置
- 了解Struts2的瀏覽器插件
Struts2概述
Struts2是一個基於MVC設計模式的Web應用框架,它本質上相當於一個servlet,在MVC設計模式中,Strus2作為控制器(Controller)來建立模型與視圖的數據交互。Struts2使用了大量的攔截器來處理用戶請求,從而將業務邏輯控制器和ServletAPI分離
Struts2工作流程
- 客戶端發起請求
- 核心控制器FilterDispatcher攔截請求調用Action
- 調用Action的execute方法前調用一系列的攔截器
- 調用execute執行業務邏輯
- 返回結果
控制器是What?
包含execute方法的POJO既可以作為控制器,即一個簡單的JAVA類包含一個execute()方法就可以作為控制器,同時控制器具有封裝客戶端請求參數的能力.
public class TestAction { public String execute() throws Exception { return "test"; } }
Struts2XML配置
XML配置完整工程示例源碼下載
導入struts依賴jar
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.18</version> </dependency>
web.xml配置Struts2攔截器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
編寫struts.xml
<!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="hello" class="com.jimisun.action.TestAction">
<result name="hello">/WEB-INF/jsp/hello.jsp</result>
</action>
</package>
</struts>
編寫控制器
public class TestAction {
public String execute() throws Exception {
return "hello";
}
}
配置好以上步驟即可訪問路徑http://localhost:8080/hello.action
Struts2註解配置
註解配置Struts2完整示例源碼下載
如果需要使用註解開發,則需要增加struts2-convention-plugin的Jar
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-convention-plugin -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.5.18</version>
</dependency>
那麽在你的Action中就可以這樣編寫Action,不需要再到struts.xml中進行配置
@ParentPackage("struts-default")
@Namespace("/test")
public class TestAction {
@Action(value = "hello", results = {
@Result(name = "hello", location = "/WEB-INF/jsp/hello.jsp")
})
public String hello() throws Exception {
return "hello";
}
}
Struts2的瀏覽器插件
在進行Struts2開發的時候隨著項目的增大,你所需要處理的路徑和方法映射越多,有時候會讓你手忙腳亂,而struts2-config-browser-plugin插件很好的幫你解決了這個問題,只需要Jar包依賴即可
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-config-browser-plugin -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-config-browser-plugin</artifactId>
<version>2.5.18</version>
</dependency>
本章總結
Struts2的起始配置比較簡單,但是Struts2其他相關配置就比較繁瑣了,不可掉以輕心
從零打造在線網盤系統之Struts2框架起步