我把你的頭像,設置成我的名字,此刻你便與我同在。
我把你的名字,寫進我的代碼里面,以后,我的世界便存在著你。
?
“兩個蝴蝶飛”特別喜歡"java1234知識分享網"小峰的實用主義,所以本文及其系列文章均是采用實用主義,從項目和代碼的角度去分析。由于本人經驗有限,嘴皮子不溜,所以學術性,概念性,底層性的知識點暫時不做介紹。文章中有錯誤之處,歡迎拍磚和指點。特別感謝"java1234知識分享網 "和"黑馬程序員官網",所有的資料大部分是兩者提供,為了方便書寫,故不一一指名出處,請諒解,非常抱歉。
?
一? Struts2的下載和解壓目錄
Struts2的官網是:去官網?。點擊downloads下載所需要的版本即可。下載后的目錄(兩個蝴蝶飛下載的是struts-2.3.24)如下所示:
其中apps為官網所給的示例,docs為文檔介紹,lib為開發所用jar包,src為源代碼。
?
? 二? 導入開發所需的常用jar包
lib文件夾下所給的Jar包過多,其中也有一些與其他框架整合的jar包,不能導入這里面的。導入apps文件夾下所給的示例項目中的。如struts2-blank.war下面的。可以用解壓工具將其解壓,也可以將其放在Tomcat下的webapps下進行運行解壓。在WEB-INFO下的lib文件夾下,復制所需要的jar包即可。
這就是Struts2基本開發所需要的jar包。
各個jar包的基本了解:
三? ? Struts2版的"兩個蝴蝶飛,你好"
打開Eclipse,新建web動態項目,項目名稱為Struts_Hello,選擇2.5模式。 將所需的jar包放入到Struts_Hello的WEB-INFO下的lib文件夾下,然后build path-->add即可。
改變原有的System.out.println()的輸出提示,用log4j日志的形式打印輸出。 添加log4j的jar包
在src目錄下添加log4j.properties屬性文件,修改級別為info。
由于用的是eclipse,而不是myeclipse,沒有jstl和standard.jar包,將這兩個jar包也復制進來。
所需要的基本jar包已經完成,開始寫具體的代碼了。
開發Struts2有三個步驟,1. 寫具體的Action .2在src下的struts.xml中進行配置 3. 在web.xml中配置struts過濾器
為了避免忘記配置struts2過濾器,建議先配置struts2過濾器。
?三.一? ?配置struts2的過濾器
在本項目的web.xml中進行相應的配置,配置代碼如下,所用的過濾器為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包下新建一個HelloAction的普通Java類。用到Log4j日志打印
package com.yjl.web.action; import org.apache.log4j.Logger; /** * @author 兩個蝴蝶飛 * @version 創建時間:2018年8月23日 上午9:41:32 * @description 用日志記錄的控制臺輸出 */ public class HelloAction {private static Logger logger=Logger.getLogger(HelloAction.class);public String execute() {logger.info("兩個蝴蝶飛,你好");return null;} }
注意exceute()方法的返回值為null,表示沒有返回值。
三.三? 根據Action配置struts.xml文件
在src下新建或者從struts2所給的示例項目中復制一個struts.xml,添加相應的約束,去除多余的配置,進行相應的配置Action
<?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來快速復制全限定名稱,避免自己寫出錯。
將項目添加部署到Tomcat中,運行Tomcat,在地址欄輸入http://localhost:8080/Struts_Hello/hello.action, 兩個蝴蝶飛的端口號為默認的8080,根據自己的tomcat端口號進行修改。
發送請求后,在控制臺查看日志輸出:
?
日志正常打印,可以輸出,struts2的簡單配置開發完成。
上面配置的只是控制臺的方式,struts2是Web層框架,配置一個web層的簡單開發實例。
過濾器的配置是不變的,只需要改變第二步和第三步即可。
三.二(增強) 編寫具體的Action
package com.yjl.web.action; import org.apache.log4j.Logger; /** * @author 兩個蝴蝶飛 * @version 創建時間:2018年8月23日 上午9:41:32 * @description 用日志記錄的web層輸出 */ public class HelloAction {private static Logger logger=Logger.getLogger(HelloAction.class);public String execute() {logger.info("兩個蝴蝶飛,web層你好");return "success";} }
注意execute()方法有返回值,并且返回值為success。
三.三(增強)?根據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"><result name="success">/index.jsp</result></action></package> </struts>
?
注意,在action中添加了一個result的節點,name="success",與Action類中execute()方法的返回值一樣,返回到的地址為/index.jsp, /表示根目錄。 所以在根目錄下新建一個index.jsp,內容為:
<body>兩個蝴蝶飛,你好
</body>
重啟服務器,tomcat的訪問路徑為:http://localhost:8080/Struts_Hello/hello.action, 查看請求后的結果
控制臺:
web層的Struts2的簡單項目也算是完成了。
?
謝謝,我是兩個蝴蝶飛。
?
?
?
?
?