Struts2是一種基于MVC模式的輕量級web框架,自問世以來贺纲,就受到了廣大Web開發(fā)者的關(guān)注毛萌,并廣泛應(yīng)用于各種企業(yè)系統(tǒng)的開發(fā)中苟弛。
本系列將針對Struts2的簡介、特點阁将、安裝膏秫、執(zhí)行流程等內(nèi)容進行講解。
簡介
概念
Struts2是一個基于MVC設(shè)計模式的Web應(yīng)用框架做盅,它本質(zhì)上相當于一個servlet缤削,在MVC設(shè)計模式中,Struts2作為控制器(Controller)來建立模型與視圖的數(shù)據(jù)交互吹榴。Struts 2是Struts的下一代產(chǎn)品亭敢,是在 struts 1和WebWork的技術(shù)基礎(chǔ)上進行了合并的全新的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)差別巨大图筹。Struts 2以WebWork為核心帅刀,采用攔截器的機制來處理用戶的請求,這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開婿斥,所以Struts 2可以理解為WebWork的更新產(chǎn)品劝篷。雖然從Struts 1到Struts 2有著太大的變化,但是相對于WebWork民宿,Struts 2的變化很小娇妓。
在介紹Struts2之前,先來認識一下Struts1活鹰。Struts1是最早的基于MVC模式的輕量級web框架哈恰,他能夠合理的劃分代碼結(jié)構(gòu)只估,并包含了驗證框架、國際化框架等多種實用工具框架着绷。但隨著技術(shù)的進步蛔钙,Struts1的局限性也越來越多的暴露出來。為了符合更加靈活荠医、高效的開發(fā)需求吁脱,Struts2框架應(yīng)用而生。
Struts2是Struts1的下一代產(chǎn)品彬向,是在Struts1和WebWork技術(shù)基礎(chǔ)上進行合并后的全新框架兼贡。雖然Struts1和Struts2名字類似,但其設(shè)計思想?yún)s有很大不同娃胆。實質(zhì)上遍希,Struts2是以WebWork為核心,采用攔截器機制來處理用戶的請求里烦。這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開凿蒜,所以從另一方面可以理解為Struts2是WebWork的更新產(chǎn)品。
優(yōu)勢
- 項目開源胁黑,使用及拓展方便
- 提供Exception處理機制
- Result方式的頁面導(dǎo)航废封,方便進行重定向和頁面跳轉(zhuǎn)
- 通過簡單、集中的配置來調(diào)度業(yè)務(wù)類别厘,輕松進行配置和修改
- 提供簡單統(tǒng)一的表達式語言來訪問所有可供訪問的數(shù)據(jù)
- 提供了標準 強大的驗證框架和國際化框架
- 提供了強大的標簽虱饿,有效減少頁面代碼
- 對Ajax提供了支持
- 擁有簡單的插件拥诡,只需要放入相應(yīng)的JAR包触趴,輕松擴展Struts2框架,比如自定義攔截器渴肉、自定義結(jié)果類型以及自定義標簽等
- 擁有智能的默認配置
常見web框架
- Struts2
- Struts1
- SpringMVC
- WebWork
Web層框架都是基于前端控制器模式實現(xiàn)開發(fā)的冗懦。
前端控制器模式
在傳統(tǒng)開發(fā)方式中,一次請求就會對應(yīng)一個Servlet仇祭,這樣就會造成很多Servlet存在披蕉。
而在Struts2中,所有的請求都會經(jīng)過一個前端控制器乌奇,在前端控制器中實現(xiàn)框架的部分功能没讲,剩下的具體操作交給具體的Action中。
如果所有的請求都要經(jīng)過前端控制器礁苗,那么這個控制器該怎么實現(xiàn)呢爬凑?其實,過濾器就是最好的一個實現(xiàn)方式试伙,因為所有的請求都可以被過濾器攔截嘁信,然后再過濾器中實現(xiàn)部分功能于样。Struts2的前端控制器也是基于過濾器實現(xiàn)的。
Struts2開發(fā)包下載與介紹
下載安裝包
- all:包含官方提供的Struts2示例潘靖,以及docs文檔穿剖,lib庫,源碼等卦溢。
- apps:官方提供的Struts2示例程序糊余。為war文件,可通過zip工具解壓縮
- min-lib:最小集成lib包
- lib:Struts2所有依賴庫
- docs:官方提供的Struts2文檔单寂,包含快速入門啄刹、文檔以及api文檔等
- src:Struts2的源代碼
Struts2中jar簡介
將上面下載的apps中struts2-blank.war(此項目為一個空工程,包含基本的開發(fā)包)凄贩,解壓縮誓军,并進入WEB-INF目錄下。
上面就是struts2的基本開發(fā)包了疲扎,那這些包各代表什么呢昵时?請看下圖:
從上圖中可以看出站刑,當前版本的Struts2項目依賴13個基礎(chǔ)jar瓤湘,不同的Struts2版本所依賴的基礎(chǔ)jar可能也不完全相同,不過基本變化不大默责。
需要注意一點壶熏,通常是由Struts2的web項目并不需要用到Struts2的全部jar句柠,因此沒有必要一次將Struts2的lib目標下所有jar都添加到項目中,根據(jù)需要來就好了棒假。
使用IntelliJ IDEA創(chuàng)建第一個Struts2項目
新建項目
打開InrelliJ IDEA溯职,選擇新建項目,如下帽哑,選擇Struts2
WebApplication谜酒,并把Libraries設(shè)置為Set up library later
,如下:
下一步妻枕,輸入項目名及項目目錄僻族,點擊finish
進入項目目錄后,在web/WEB-INF
下新建lib
文件夾屡谐,同時將在上一節(jié)整理的struts2開發(fā)包拷入lib文件述么,之后,右鍵lib
目錄愕掏,選擇Add as library
選項度秘,將開發(fā)包配置好。如下:
配置web.xml核心過濾器
打開web/WEB-INF
中的web.xml
亭珍,配置filter
敷钾,這個就是之前提到過的前端控制器枝哄。如下:
<?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_3_1.xsd"
version="3.1">
<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>
編寫Action
在項目目錄src
下新建包com.happy.demo
,新建HelloAction.java
阻荒,代碼如下:
public class HelloAction {
public String sayHi() {
System.out.println("hello world");
return "success";
}
}
配置struts.xml
打開項目目錄下的struts.xml
挠锥,將剛編寫的HelloAction
進行配置,如下:
<struts>
<package name="hello" namespace="/hello" extends="struts-default">
<action name="sayHi" class="com.happ.demo.HelloAction" method="sayHi">
<result name="success">sayHi.jsp</result>
</action>
</package>
</struts>
暫時先無視這些字段代表的含義侨赡,后續(xù)會詳細講解配置文件蓖租。
新建sayHi.jsp
在上面xml配置中,通過result
標簽配置了當success
時跳轉(zhuǎn)的頁面sayHi.jsp
羊壹,下面我們就來新建這個頁面蓖宦。
又因為在上面配置的namespace=hello
,頁面跳轉(zhuǎn)時尋找規(guī)則為web/namespace/xxx.jsp
油猫,所以稠茂,在web
目錄下,新建hello
文件夾情妖,并新建sayHi.jsp
文件睬关。詳細如下:
sayHi.jsp
內(nèi)容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>SayHi</h1>
</body>
</html>
配置全局Tomcat
Tomcat下載
點我去下載-
打開
Edit Configurations
,如下:
這里寫圖片描述 -
在彈窗中毡证,選擇
Defaults
电爹,找到Tomcat Server
中Local
,如下:
這里寫圖片描述 -
配置介紹
這里寫圖片描述
點擊Configure
料睛,在彈出的框中配置本機Tomcat地址丐箩,如下:
這里寫圖片描述
選擇OK即可。 -
進入項目
Project Structure
恤煞,進行配置屎勘,如下:
這里寫圖片描述
點擊右上角Fix
,選擇add lib to artifacts
:
這里寫圖片描述
配置項目Tomcat
-
為工程配置Tomcat阱州,步驟如下:
這里寫圖片描述 -
命名及根據(jù)需要修改自定義配置挑秉,如端口號等
這里寫圖片描述 -
配置
Deployment
這里寫圖片描述 點擊下方
apply
、ok
完成配置
啟動并訪問項目
-
啟動項目
這里寫圖片描述 訪問項目
通過瀏覽器訪問http://localhost:8080/hello/sayHi
苔货,可控制臺會打印HelloAction
中的hello world
,同時頁面會跳轉(zhuǎn)到struts.xml
中配置的sayHi.jsp
頁面立哑,頁面顯示之前寫的SayHi
文字夜惭。
好了,到此铛绰,第一個Struts2項目跑起來了诈茧,下一篇會對Struts2的執(zhí)行流程、各種配置以及Action的創(chuàng)建訪問配置方式進行講解捂掰。