Struts2的兩個蝴蝶飛,你好簡單開發(一)

我把你的頭像,設置成我的名字,此刻你便與我同在。

我把你的名字,寫進我的代碼里面,以后,我的世界便存在著你。


?

“兩個蝴蝶飛”特別喜歡"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的簡單項目也算是完成了。

?

謝謝,我是兩個蝴蝶飛。

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/yjltx/p/11053780.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247749.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247749.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247749.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用Canvas畫圓環百分比進度條

<!DOCTYPE html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>canvas圓環進度</title><link rel"stylesheet" href"">…

java運算符 —(5)

1.算術運算符&#xff1a; - - * / % (前) (后) (前)-- (后)-- 【典型代碼】 //除號&#xff1a;/ int num1 12; int num2 5; int result1 num1 / num2; System.out.println(result1);//2 // %:取余運算 //結果的符號與被模數的符號相同 //開發中&#xff0c;經常使用%來…

利用SQL計算兩個地理坐標(經緯度)之間的地表距離

兩個地理坐標(經緯度)地表距離計算公式&#xff1a; 公式解釋如下&#xff1a; Long1,Lat1表示A點經緯度&#xff0c;Long2,Lat2表示B點經緯度&#xff1b;aLat1–Lat2 為兩點緯度之差&#xff0c;bLong1-Long2為兩點經度之差&#xff1b;6378.137為地球半徑&#xff0c;單位為…

HTTP 錯誤 404 - 文件或目錄未找到 - 最終解決方法

問題描述&#xff1a;http錯誤404&#xff0d;文件或目錄未找到問題原因&#xff1a;我遇到的情況是&#xff0c;先按裝了.NET&#xff0c;后裝的IIS&#xff1b;不確定其他原因也會不會產生類似錯誤。&#xff08;如果有&#xff0c;希望大家能貼出更多的原因&#xff0c;方便…

java流程控制及控制鍵盤輸出文字 —(6)

1.if-else條件判斷結構 1.1. 結構一&#xff1a; if(條件表達式){ 執行表達式 } 結構二&#xff1a;二選一 if(條件表達式){ 執行表達式1 }else{ 執行表達式2 } 結構三&#xff1a;n選一 if(條件表達式){ 執行表達式1 }else if(條件表達式){ 執行表達式2 }else if(條件表達式…

自執行匿名函數剖析整理

格式&#xff1a;&#xff08;function(){//代碼})();解釋&#xff1a;這是相當優雅的代碼&#xff08;如果你首次看見可能會一頭霧水&#xff1a;&#xff09;&#xff09;&#xff0c;包圍函數&#xff08;function(){})的第一對括號向腳本返回未命名的函數&#xff0c;隨后一…

爬蟲界又出神器|一款比selenium更高效的利器

提起selenium想必大家都不陌生&#xff0c;作為一款知名的Web自動化測試框架&#xff0c;selenium支持多款主流瀏覽器&#xff0c;提供了功能豐富的API接口&#xff0c;經常被我們用作爬蟲工具來使用。但是selenium的缺點也很明顯&#xff0c;比如速度太慢、對版本配置要求嚴苛…

java數組 —(7)

* 1.數組的理解&#xff1a;數組(Array)&#xff0c;是多個相同類型數據一定順序排列的集合&#xff0c;并使用一個名字命名&#xff0c; 并通過編號的方式對這些數據進行統一管理。 * 2.數組相關的概念&#xff1a; 數組名 元素 角標、下標、索引 數組的長度&#xff1a;元素…

bootstrap按鈕的邊框問題 去除

問題&#xff1a; 用bootstrap做的按鈕&#xff0c;點擊后&#xff0c;都會出現邊框&#xff0c;請問如何去除&#xff1f; .btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus {outline: none; }還要去除陰影添…

C#一些面試知識題

1.簡述 private、 protected、 public、internal 修飾符的訪問權限答&#xff1a;private&#xff1a;私有成員, 在類的內部才可以訪問(只能從其聲明上下文中進行訪問)。 protected&#xff1a;保護成員&#xff0c;該類內部和從該類派生的類中可以訪問。 Friend&#xff1a;友…

vue加載時閃現模板語法-處理方法

問題&#xff1a;使用VUE時&#xff0c;頁面加載瞬間&#xff0c;會閃現模板語法&#xff0c;例如{{ item.name }}等 解決辦法&#xff1a; 1、可以通過VUE內置的指令v-cloak解決這個問題&#xff08;推薦&#xff09; 具體實現&#xff1a; <ul v-cloak v-for"ite…

java數組 —(8)

1.數組的創建與元素賦值&#xff1a; 楊輝三角&#xff08;二維數組&#xff09;、回形數&#xff08;二維數組&#xff09;、6個數&#xff0c;1-30之間隨機生成且不重復。 2.針對于數值型的數組&#xff1a; 最大值、最小值、總和、平均數等 3.數組的賦值與復制 int[] a…

idea啟動tomcat時報錯:Error during artifact deployment. See server log for details.

Error during artifact deployment. See server log for details. 這個很多人都找不出來&#xff0c;原因無非2個&#xff1a; 一、jar 包有有些沒能識別&#xff0c;tomcat沒有配置好&#xff01; 二、這個一般代碼錯了&#xff1a; 除了看 server 的報錯&#xff0c;別忘了看…

java運算符 —(9)

1.理解&#xff1a; ① 定義在java.util包下。 ② Arrays:提供了很多操作數組的方法。 2.使用&#xff1a; //1.boolean equals(int[] a,int[] b):判斷兩個數組是否相等。int[] arr1 new int[]{1,2,3,4};int[] arr2 new int[]{1,3,2,4};boolean isEquals Arrays.equals(a…

css 三角角標樣式

.sanjiao {width: 0px;height: 0px;overflow: hidden;border-width: 100px;border-color: red transparent transparent transparent; border-style: solid dashed dashed dashed; }

leetcode 279 四平方定理

可以用四平方和定理&#xff1a;任意一個正整數都可以表示為4個以內整數的平方和。 如果一個數含有因子4&#xff0c;那么我們可以把4都去掉&#xff0c;并不影響結果。比如&#xff1a;8去掉4&#xff0c;12去掉3&#xff0c;返回的結果都相同。 如果一個數除以8余7&#xff0…

java類與對象 —(10)

1.面向對象學習的三條主線&#xff1a; 1.Java類及類的成員&#xff1a;屬性、方法、構造器&#xff1b;代碼塊、內部類2.面向對象的大特征&#xff1a;封裝性、繼承性、多態性、(抽象性)3.其它關鍵字&#xff1a;this、super、static、final、abstract、interface、package、…

RESTful API 編寫規范

基于一些不錯的RESTful開發組件&#xff0c;可以快速的開發出不錯的RESTful API&#xff0c;但如果不了解開發規范的、健壯的RESTful API的基本面&#xff0c;即便優秀的RESTful開發組件擺在面前&#xff0c;也無法很好的理解和使用。下文Gevin結合自己的實踐經驗&#xff0c;整…

Python2與Python3的區別

Python2與Python3的區別 1) 核心類差異 Python3 對 Unicode 字符的原生支持。 Python2 中使用 ASCII 碼作為默認編碼方式導致 string 有兩種類型 str 和 unicode&#xff0c;Python3 只 支持 unicode 的 string。Python2 和 Python3 字節和字符對應關系為&#xff1a; python2p…

JavaScript-內存空間

深入了解js這門語言后&#xff0c;才發現它有著諸多眾所周知的難點&#xff08;例如&#xff1a;閉包、原型鏈、內存空間等&#xff09;。有的是因為js的設計缺陷導致的&#xff0c;而有的則是js的優點。不管如何&#xff0c;總需要去學會它們&#xff0c;在學習過程中我覺得只…