1. 程式人生 > >從零打造在線網盤系統之Struts2框架起步

從零打造在線網盤系統之Struts2框架起步

請求參數 第四章 type 同時 工作流程 sta found def -i

歡迎瀏覽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工作流程

  1. 客戶端發起請求
  2. 核心控制器FilterDispatcher攔截請求調用Action
  3. 調用Action的execute方法前調用一系列的攔截器
  4. 調用execute執行業務邏輯
  5. 返回結果

控制器是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框架起步