­

1、Struts2基本入門

  • 2019 年 10 月 23 日
  • 筆記

一、了解了這幾個主要的優點,會促使你考慮使用Struts2 :

    1、POJO表單及POJO操作 – Struts2 去除掉了Struts框架中的Action Forms部分。在Struts2框架下,你可以用任何一POJO來接收表單輸入,同樣的,你可以把任一POJO視為一個Action類。

    2、標籤支援 – Struts2 改進了標籤表單,而新的標籤可讓開發人員減少程式碼編寫量。

    3、AJAX支援 – Struts2 被認可接收進Web 2.0技術,並創建了功能非常類似於標準的Struts2 標籤的AJAX標籤,把AJAX支援整合進其結果中。

    4、易於整合 – Struts有多種整合方式可使用,現在與其他類型的框架,如Spring、Tiles、SiteMesh之類的,整合更為容易了。

    5、模板支援 – 支援使用模板生成視圖。

    6、插件支援 – 有大量的插件可用於Struts2,而使用插件可以增強和擴大Struts2 核心行為。

    7、促進減少配置 – Struts2 使用各種設置的默認值促進減少配置,而你不需要再配置什麼除非是偏離了Struts2 設定的默認設置。

    8、視圖技術 – Struts2 為多種視圖選項(JSP、Freemarker、Velocity、XSLT等)提供支援。

二、三層開發模型 MVC

模型(Model)-視圖(View)-控制器(Controller),通常簡稱MVC,是一種開發web應用程式的軟體設計模式。該軟體設計模式由以下三部分組成:  

        模型——屬於軟體設計模式的底層基礎,主要負責數據維護。  

        視圖——這部分是負責向用戶呈現全部或部分數據。 

        控制器——通過軟體程式碼控制模型和視圖之間的交互。

                                                                                                          

 

三、Struts2的基本組件、架構

從一個高水平角度看,Struts2 是一個MVC拉動的(或MVC2)框架,Struts2 的模型-視圖-控制器模式是通過以下五個核心部分進行實現的:

  • 操作(Actions)
  • 攔截器(Interceptors)
  • 值棧(Value Stack)/OGNL
  • 結果(Result)/結果類型
  • 視圖技術

 

而Struts2 與傳統的MVC框架略有不同,因為它由Action扮演模型的角色,而不是控制器,雖然這樣會有一些重疊。
                                                                                          Struts 2的架構
 

四、一個請求的生命周期

通過上述圖片的描述,我們可以依照下面幾點解釋在Struts2 中用戶的請求生命周期:

    1、用戶發送一個資源需求的請求到伺服器(例如:頁面)。

    核心控制器查看請求後確定適當的動作。

    使用驗證、文件上傳等配置攔截器功能。

    執行選擇的動作來完成請求的操作。

    另外,如果需要的話,配置的攔截器可做任何後期處理。

    最後,由視圖顯示結果並返回給用戶

 

                                                                                                                   【備註:以上的概念性東西摘用自W3School裡面的內容】

五、創建一個入門項目,初步了解Struts2:

1、使用IDEA創建Struts2的前期準備:

                                                       

 

 

                                                                                                        

 

2、手動導入lib文件夾中的jar包可能無法被識別,這個時候需要手動配置一下就沒問題了。

                                                              

 

3、創建對應的目錄結構:

    【如果,extends中報錯了,可以按照下面的方法來記性解決。】

                                                              

 

具體程式碼目錄如下:

                                                                                                                         

 

 2、如果上面的準備工作完成,我們就可以按照需求來開始寫程式碼了

後台的Action層,也就是和前端交互的入口java程式:Demo1Action.java

package com.turtle.demo1;            import com.opensymphony.xwork2.ActionSupport;    /**   * 測試:這個是測試的後台Action,用來處理前端的操作流程   */  public class Demo1Action  extends ActionSupport {        @Override      public String execute() throws Exception {          System.out.println("哈嘛批,你倒是跳啊!!!");          return "success";      }  }

 

Struts的配置文件,用來配置路徑映射對應的java類和方法: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="demo1" extends="struts-default" namespace="/">          <action name="demo1Action" class="com.turtle.demo1.Demo1Action">              <result name="success">/demo1/success.jsp</result>          </action>      </package>  </struts>

 

前端介面,一個是首頁、一個是從後台重定向到新的介面:index.jsp  success.jsp

<%--    Created by IntelliJ IDEA.    User: szwb174    Date: 2019/10/23    Time: 10:21    To change this template use File | Settings | File Templates.  --%>  <%@ page contentType="text/html;charset=UTF-8" language="java" %>  <html>  <head>      <title>Struts2的入門測試</title>  </head>  <body>      <h1>Struts2的入門測試</h1>      <h2><a href="demo1Action.action">去Demo1Action中的Struts2的入門測試execute方法了</a></h2>  </body>  </html>
<%--    Created by IntelliJ IDEA.    User: szwb174    Date: 2019/10/23    Time: 10:29    To change this template use File | Settings | File Templates.  --%>  <%@ page contentType="text/html;charset=UTF-8" language="java" %>  <html>  <head>      <title>demo1Action處理成功</title>  </head>  <body>      <h1>成功跳轉過來了</h1>  </body>  </html>

 

web項目的核心配置文件,主要是配置前端過濾器: web.xml

<?xml version="1.0" encoding="UTF-8"?>  <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"           version="4.0">      <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>          <url-pattern>/*</url-pattern>      </filter-mapping>  </web-app>

3、最後還需要 配置對應的伺服器,就可以完成測試了:

                                                                                    

 

4、測試結果:

                                                                                                

 

 

 六、總結:

  1、這是第一篇入門的文章,不涉及太多概念,只強調操作。搭建好環境,為了下面的深入學習做好鋪墊,如果沒有搭建好環境,不能自己去嘗試的寫程式碼,學習效率會很低。

  2、知道怎麼跑通這個程式。對Struts2有一個大概的了解,能知道運行的流程。從前端經過前端控制器,然後再到Action處理器進行處理。

  3、能夠對幾個配置文件的位置、裡面的內容有一定的理解。

  4、後面的文章會詳細深入,對裡面的知識點會一點一點的理順。

  5、難度係數慢慢的提升,先會用,再去了解裡面的小知識點即可。