參考視訊:尚學堂
Action入門:由hello world介紹struts
先應用,再理論
- 打開myEclipse
- 右鍵new – Project – MyEclipse – Java Enterprise Project – Web Project
- 寫項目名稱,選就Java EE 5.0 , finish
-
有幾個地方要設定,這裡要小心:
Window – Preferences – MyEclipse – Servers – Tomcat的位置,選enable
window – Preferences – java – Installed jres,不放心的話就選自己的jdk - 用準備好的Struts2軟體,解壓之後觀察一下目錄
src: 源碼
lib: 類庫
docs: 文檔
apps: 示例程式
用的是apps,裡面有五個war檔案,可以用WinRAR直接打開并且解壓。
解壓blank檔案,打開WEB-INF,classes下,找到配置檔案,拷Struts.xml,到src目錄下。
拷類庫:lib下,到lib下
這個視圖下是看不到的,打開window – show view – other – Navigator
配置web.xml:配置filter - struts.xml中,struts标簽裡的東西都注釋掉(友善仿照),package标簽中拷貝過來,更改
-
部署到伺服器,測試。
出現的問題:
1.java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
引入javassist-3.11.GA.jar包解決
2.java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
引入commons-lang3-3.1.jar包解決
後來重新測試時删掉這兩個包也沒有出錯,不知道為什麼
3.測試時因為配置裡有namespace,位址欄寫法要注意。
結果:
小知識點:
- struts标簽中裡有一個配置:
重新啟動部署之後,更改action的name屬性之後,可以不用重新開機直接通路,否則得重新開機伺服器<constant name="struts.devMode" value="true" />
- 檢視源碼:找到jar包class之後,右鍵properties,java Source Attachment,External Folder,struts檔案目錄所在,src–core–src–main–java,ok
- 檢視javadoc文檔:struts-2-core.jar包,右鍵properties,javadoc location,browse,struts檔案下,docs–core–api,ok。好處在于可以再eclipse裡面觀察javadocs的操作:當我們選中某個類的名字之後按F1,會給你顯示出java doc ,點選之後可以直接顯示出這個類的API。
-
建立xml檔案給提示:
window – properties –搜尋catalog –XML Catalog – add –struts檔案下lib中struts-core檔案 – 解壓 –找到dtd檔案 –add中key type選URI,key:http://struts.apache.org/dtds/struts-2.3.dtd, location:剛剛解壓dtd檔案的路徑。這樣xml中敲内容時候就可以給提示了。
struts背後的運作機制
URL位址–http協定–tomcat–web application–web.xml–filter過濾所有的位址–被org…接收到–查struts.xml的namespace–查action name屬性
核心: 把請求和展現分開。
namespace
namespace決定了action的通路路徑,預設為”“,可以接收所有路徑的action
namespace可以寫為/,或者/xxx,或者/xxx/yyy,對應的action通路路徑為/index.action,
/xxx/index.action,或者/xxx/yyy/index.action.
namespace最好也用子產品來進行命名,比如使用者管理子產品,就起名叫/user
struts.xml中,package标簽用于解決重名情況
result标簽name預設為success
Copy項目
copy之後要改一個東東:
右鍵properties–myeclipse – web–web Context root改路徑
引入别人的項目
import – general –existing projects into workspace – 選擇路徑 –Copy project選中 – 部署
jre – remove掉 重新配置 – build path – library – 重新加進來