天天看點

SSH架構學習之Struts2(1):Hello World

參考視訊:尚學堂

Action入門:由hello world介紹struts

先應用,再理論

  1. 打開myEclipse
  2. 右鍵new – Project – MyEclipse – Java Enterprise Project – Web Project
    SSH架構學習之Struts2(1):Hello World
  3. 寫項目名稱,選就Java EE 5.0 , finish
    SSH架構學習之Struts2(1):Hello World
  4. 有幾個地方要設定,這裡要小心:

    Window – Preferences – MyEclipse – Servers – Tomcat的位置,選enable

    SSH架構學習之Struts2(1):Hello World
    window – Preferences – java – Installed jres,不放心的話就選自己的jdk
    SSH架構學習之Struts2(1):Hello World
  5. 用準備好的Struts2軟體,解壓之後觀察一下目錄
    SSH架構學習之Struts2(1):Hello World

    src: 源碼

    lib: 類庫

    docs: 文檔

    apps: 示例程式

    用的是apps,裡面有五個war檔案,可以用WinRAR直接打開并且解壓。

    解壓blank檔案,打開WEB-INF,classes下,找到配置檔案,拷Struts.xml,到src目錄下。

    拷類庫:lib下,到lib下

    這個視圖下是看不到的,打開window – show view – other – Navigator

    SSH架構學習之Struts2(1):Hello World
    SSH架構學習之Struts2(1):Hello World
    配置web.xml:配置filter
    SSH架構學習之Struts2(1):Hello World
  6. struts.xml中,struts标簽裡的東西都注釋掉(友善仿照),package标簽中拷貝過來,更改
    SSH架構學習之Struts2(1):Hello World
  7. 部署到伺服器,測試。

    出現的問題:

    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,位址欄寫法要注意。

    結果:

    SSH架構學習之Struts2(1):Hello World

小知識點:

  1. struts标簽中裡有一個配置:
    <constant name="struts.devMode" value="true" />
               
    重新啟動部署之後,更改action的name屬性之後,可以不用重新開機直接通路,否則得重新開機伺服器
  2. 檢視源碼:找到jar包class之後,右鍵properties,java Source Attachment,External Folder,struts檔案目錄所在,src–core–src–main–java,ok
  3. 檢視javadoc文檔:struts-2-core.jar包,右鍵properties,javadoc location,browse,struts檔案下,docs–core–api,ok。好處在于可以再eclipse裡面觀察javadocs的操作:當我們選中某個類的名字之後按F1,會給你顯示出java doc ,點選之後可以直接顯示出這個類的API。
  4. 建立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 – 重新加進來