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)/結果類型
- 視圖技術

四、一個請求的生命周期
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、難度係數慢慢的提升,先會用,再去了解裡面的小知識點即可。