勿以惡小而為之,勿以善小而不為--------------------------劉備
勸諸君,多行善事積福報(bào),莫作惡,
下面,老蝴蝶將帶大家學(xué)習(xí) Struts2 框架
一. Struts2的下載和解壓目錄
Struts2的官網(wǎng)是:去官網(wǎng) 。
點(diǎn)擊downloads下載所需要的版本即可,建議選 2.3 版本以上的。
下載后的目錄(兩個(gè)蝴蝶飛下載的是struts-2.3.24),如下所示

其中apps為官網(wǎng)所給的示例,docs為API文檔,lib為開發(fā)中所用jar包,src為源代碼。
二. 導(dǎo)入開發(fā)所需的常用jar包
lib文件夾下所給的Jar包過多,其中也有一些與其他框架整合的jar包,不能直接導(dǎo)入 lib 文件夾下的 jar包。
導(dǎo)入apps文件夾下所給的示例項(xiàng)目中的。如struts2-blank.war下面的。
可以用解壓工具將其解壓,也可以將其放在Tomcat下的webapps下進(jìn)行運(yùn)行解壓。
在WEB-INFO下的lib文件夾下,復(fù)制所需要的jar包即可。

這就是Struts2基本開發(fā)所需要的jar包。
各個(gè)jar包的基本了解:

三. Struts2版的"兩個(gè)蝴蝶飛,你好" 控制臺(tái)開發(fā)
打開Eclipse,新建web動(dòng)態(tài)項(xiàng)目,項(xiàng)目名稱為Struts_Hello,選擇2.5模式。 將所需的jar包放入到Struts_Hello的WEB-INFO下的lib文件夾下,然后build path-->add即可。
改變?cè)械腟ystem.out.println()的輸出提示,用log4j日志的形式打印輸出。 添加log4j的jar包

在src目錄下添加log4j.properties屬性文件,修改級(jí)別為info。
由于用的是eclipse,而不是myeclipse,沒有jstl和standard.jar包,將這兩個(gè)jar包也復(fù)制進(jìn)來。
所需要的基本jar包已經(jīng)完成,開始寫具體的代碼了。
開發(fā)Struts2有三個(gè)步驟,1. 寫具體的Action .2在src下的struts.xml中進(jìn)行配置 3. 在web.xml中配置struts過濾器
為了避免忘記配置struts2過濾器,建議先配置struts2過濾器。
三.一 配置struts2的過濾器
在本項(xiàng)目的web.xml中進(jìn)行相應(yīng)的配置,配置代碼如下,所用的過濾器為StrutsPrepareAndExecuteFilter類。
<!-- 配置struts2的過濾器 -->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
三.二 編寫具體的Action
在com.yjl.web.action包下新建一個(gè)HelloAction的普通Java類。用到Log4j日志打印
package com.yjl.web.action;
import org.apache.log4j.Logger;
/**
* @author 兩個(gè)蝴蝶飛
* @version 創(chuàng)建時(shí)間:2018年8月23日 上午9:41:32
* @description 用日志記錄的控制臺(tái)輸出
*/
public class HelloAction {
private static Logger logger=Logger.getLogger(HelloAction.class);
public String execute() {
logger.info("兩個(gè)蝴蝶飛,你好");
return null;
}
}
注意exceute()方法的返回值為null,表示沒有返回值,且類 HelloAction.java 中的方法名稱只能是 execute() 方法。
三.三 根據(jù)Action配置struts.xml文件
在src下新建或者從struts2所給的示例項(xiàng)目中復(fù)制一個(gè)struts.xml,添加相應(yīng)的約束,去除多余的配置后,進(jìn)行相應(yīng)的配置Action。
配置后的 struts.xml 文件內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="hello" extends="struts-default" namespace="/">
<action name="hello" class="com.yjl.web.action.HelloAction"></action>
</package>
</struts>
注意<action>中name的值,為hello,那么訪問路徑就是hello. class為全限定名稱,包括包名。
可以在HelloAction.java文件中,選中HelloAction,右鍵,選中copy Qualified Name來快速?gòu)?fù)制全限定名稱,避免自己寫出錯(cuò)。
將項(xiàng)目添加部署到Tomcat中,運(yùn)行Tomcat,在地址欄輸入http://localhost:8080/Struts_Hello/hello.action,
兩個(gè)蝴蝶飛的端口號(hào)為默認(rèn)的8080,根據(jù)自己的tomcat端口號(hào)進(jìn)行修改。
發(fā)送請(qǐng)求后,在控制臺(tái)查看日志輸出:

日志正常打印,可以輸出,struts2的簡(jiǎn)單配置開發(fā)完成。
上面配置的只是控制臺(tái)的方式,很清楚,客戶端瀏覽器傳入了相應(yīng)的 url: /hello.action,
就自動(dòng)找到了 HelloAction 類中的 execute() 方法執(zhí)行。
四. Struts2版的"兩個(gè)蝴蝶飛,你好" WEB版開發(fā)
過濾器的配置是不變的,只需要改變第二步和第三步即可。
四.一 配置 前端過濾器
在本項(xiàng)目的web.xml中進(jìn)行相應(yīng)的配置,配置代碼如下,所用的過濾器為StrutsPrepareAndExecuteFilter類。
<!-- 配置struts2的過濾器 -->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
四.二 編寫具體的Action
新創(chuàng)建 com.yjl.web.action 包下的 HelloAction2 類
package com.yjl.web.action;
import org.apache.log4j.Logger;
/**
* @author 兩個(gè)蝴蝶飛
* @version 創(chuàng)建時(shí)間:2018年8月23日 上午9:41:32
* @description 用日志記錄的web層輸出
*/
public class HelloAction2 {
private static Logger logger=Logger.getLogger(HelloAction2.class);
public String execute() {
logger.info("兩個(gè)蝴蝶飛,web層你好");
return "success";
}
}
注意execute()方法有返回值,并且返回值為success。
四.三 根據(jù)Action配置struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="hello" extends="struts-default" namespace="/">
<action name="hello" class="com.yjl.web.action.HelloAction"></action>
<action name="hello2" class="com.yjl.web.action.HelloAction2">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
注意,在action中添加了一個(gè)result的節(jié)點(diǎn),name="success",與Action類中execute()方法的返回值一樣,返回到的地址為/index.jsp, /表示根目錄。 所以在根目錄下新建一個(gè)index.jsp,body體里面的內(nèi)容為:
<body>
兩個(gè)蝴蝶飛,你好
</body>
重啟服務(wù)器,tomcat的訪問路徑為:http://localhost:8080/Struts_Hello/hello2.action, 查看請(qǐng)求后的結(jié)果
控制臺(tái):

web頁面顯示:

本章節(jié)代碼鏈接為:
鏈接:https://pan.baidu.com/s/1DrUeeSC9mwGAnfYiZp5T2w
提取碼:k9p9
下一章簡(jiǎn)單介紹了Action的實(shí)現(xiàn)方式和struts.xml配置的詳細(xì)解釋,Struts2的簡(jiǎn)單執(zhí)行過程(二)
謝謝您的觀看?。。?/p>