1、Struts2基本入門
一、瞭解了這幾個主要的優點,會促使你考慮使用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扮演模型的角色,而不是控制器,雖然這樣會有一些重疊。
四、一個請求的生命週期
通過上述圖片的描述,我們可以依照下面幾點解釋在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、難度係數慢慢的提升,先會用,再去了解裡面的小知識點即可。