首先簡單介紹下:在eclipse以前的版本都可以使用eclipse自帶的集成三大框架,而從eclipse8後,Apache公司就將該功能去掉,所以現在如果是8以上的eclipse集成ssh的話,就需要去下載jar進行自行配置,下面我就詳細的按照最新eclipse10進行三大框架的配置部署,以及三大框架的版本不同,而產生的一系列問題
eclipse8以前的集成框架方式很簡單:直接右鍵項目,然後myeclipse或者是eclipse就會在右側彈出來集成的方式,選擇對應就好了,這裏就不過多描述,下面看最新eclipse集成方式:
第一:下載對應的三大框架的JAR包
struts-2.5.22-all.zip:鏈接:https://pan.baidu.com/s/1Jmr6C6RN6ewjgSWYPi5BLw 提取碼:dkfh
hibernate-search-5.8.0.Final-dist.zip: 鏈接:https://pan.baidu.com/s/1PzQtK5orJQKgbHpRkBtJpA 提取碼:d6zx
spring-framework-4.3.8.RELEASE-dist.zip:鏈接:https://pan.baidu.com/s/11YyAht2shvac10j-ZGrZQA 提取碼:74nr
mybatis-3.5.2.zip:鏈接:https://pan.baidu.com/s/1tLO3LNoJ6dxc0o-ihmSeCg 提取碼:3tg2
tomcat6.0: 鏈接:https://pan.baidu.com/s/1L_SNZbCTMh1zCzxEf231MQ 提取碼:rnqu
第二步:eclipse新建web項目
當然新建的時候需要注意下,最新 eclipse是不會默認簡歷web文件的,所以這裏需要勾選下:
第三步:然後解壓【struts-2.5.22-all.zip】,找到改路徑下所有jar:
然後把下圖需要的jar,從上圖拷貝到工程目錄下的lib文件下 (這裏說明下,2.5以後的struts已經將log4-core已經xwork全部都整合到struts-core裏面了,所以這裏沒有必要在去下載這兩個jar)
第四步:配置web.xml文件,注意:由於struts版本不同所以其配置的過濾器寫法上略有差異,我們一般參照官方給的模板
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SSHproject</display-name>
<!--攔截器-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
這裏需要注意下就是filter-class的值,因爲當啓動服務器的時候,服務器會調用web.xml,然後執行這個fliter-class所指向的類文件,調永裏面的init()方法進行初始化賦值,這個地方,不能直接複製過去,要看自己的實際路徑,不然啓動的時候就會報下圖錯誤,因爲這個類找不到,所以就報錯了,所以這裏這個值,要按照自己實際的來寫:
實際的路徑怎麼看呢:因爲當你給上面的jar複製到工程目錄下的lib裏面後,eclipse會自動將jar添加到項目裏面,所以我們可以在這裏查看到本項目所有的jar情況,
然後找到這個
然後找到這個就是這個類在你項目中 實際位置,給這個路徑寫對就好了,
第五步:然後我們就可以寫action了,在src上面右鍵,然後新建立class,寫下面的方法,我這裏是測試方法,根據你們實際情況來
第六步:這步當然就是最重要的struts.xml文件了,一樣,點擊src,然後右鍵新建一個xml文件
然後配置如下,下面我是採用的通配符的方式進行訪問,其他兩種方式,官方不建議使用,所以這裏就不在細分了,其中打了注視的兩個地方需要注意下,因爲2.5後的struts被嚴格化了,所以只能單獨調用方法,不能使用通配符,所以這裏 需要加上兩個代碼:<!--允許動態調用方法,通配符+佔位符組合,必須加上這行代碼-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.devMode" value="false"></constant>
還有就是package還得加一個屬性:strict-method-invocation="false" 默認是true,意思就是不使用多方式調用,所以這裏改爲false就行了,
一系列參數說明
這裏package標記中name屬性用作定義一個包名以區分其他人代碼,extends屬性用於繼承一個父包,namespace在struts2.5以後,必須加上,命名空間爲當前項目
action標記中的name屬性是用作客戶端訪問時的通配符前面的單詞
action標記中的class屬性則是用作與這個action所對應的aciton類的全路徑
action標記中的method屬性時與action類的方法所對應的名稱,不寫默認爲execute方法
action標記內result中的name屬性是method所在action的方法的返回值(根據返回值來做對應的處理),不寫默認爲success
若返回值與name屬性值匹配則完成result標記內指定的路徑進行跳轉(本例就跳轉到我們事先編寫好的一個index.jsp頁面)
<?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>
<!--允許動態調用方法,通配符+佔位符組合,必須加上這行代碼-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.devMode" value="false"></constant>
<!--strict-method-invocation是(嚴格方法訪問),默認爲true,不能使用動態方法調用功能,如果需要訪問多個方法,則改爲false-->
<package name="pk" extends="struts-default" namespace="/" strict-method-invocation="false">
<action name="customer_*" class="com.ssh.CustomerAction" method="{1}">
<result name="first">/first.jsp</result>
<result name="one">/one.jsp</result>
<result name="two">/two.jsp</result>
<result name="three" type="redirectAction">other!otherAction</result>
</action>
<action name="other" class="com.ssh.CustomerAction">
<result name="otherAction">/otherAction.jsp</result>
</action>
</package>
</struts>
第七步:當然就是部署項目了,我這裏以Tomcat爲準:點擊eclipse上面的window,然後選擇下面的preferences
然後打開這個界面,舊版本是可以在上面直接搜Tomcat就出來了,新版本不行,所以就得找到配置地方,選下面的server,然後選擇runtime environment,運行時環境,然後在點擊右邊的add進行添加服務器Tomcat
點擊add後,出現選擇對應的服務器版本,只管選擇就行了,選擇好了後,點擊next
點擊next後,會出現Tomcat的路徑,name可以隨便取名,第二個直接選擇你的Tomcat目錄就行了,然後點擊finsh
完成後,在項目的左邊就會出現你當前項目 服務器配置,這也是最新的eclipse纔有的,之前沒有的,下面的每個文件都可以更該,比如服務器的端口,已經啓動後的訪問首頁設置等等
第八步:還是找到最上面 window,然後選擇show view視圖顯示,然後選擇server,下面就會出現server的選項卡,
然後,我們在下面server找到剛纔添加的服務器,右鍵,add and remonve添加或者移除項目,
點擊了後,會出現這個界面左邊是待部署的項目,選擇左邊需要部署到Tomcat上 項目,然後點擊中間的add按鈕,就會將選擇的項目添加到右邊的框內,然後在點擊下面的finsh按鈕,即可將項目部署到Tomcat上,
點擊finsh後,我們可以去看下Tomcat的項目文件所在位置:找到之前下載的Tomcat的路徑,然後打開下圖的webapps文件夾,即可看到添加到Tomcat的項目
這就是我部署的項目
這個路徑和eclipse裏面的路徑是對應的,
還有就是index界面這些在沒有重定向後,不能放web-inf下面,不然瀏覽器訪問不到,因爲web-inf是有多重安全機制攔截,如果沒有重定向就訪問的話,會報錯:
第九步:就是啓動項目,驗證部署的結果了哦:選擇服務器,然後點擊右邊的啓動按鈕即可,啓動
然後在瀏覽器輸入訪問地址即可訪問:
第十步,index裏面我是採用的通配符,,注意橫槓前面的是struts裏面的action的name值,
因爲我是採用的通配符,所以這裏橫槓前面都可以寫一樣的,意思就是訪問同一個action
訪問不同的方法,就直接寫方法名就可以了,下面的橫槓後面的*號代表的是前面傳進來的方法名稱,method是方法參數
最後講一下Tomcat啓動過程:
第一:當Tomcat啓動,程序會去調用Tomcat裏面的web.Xml文件,然後找到下面的首頁路徑
找到了後,Tomcat會執行context.xml,通過這個XML裏面的查詢源代碼找到本服務器的所在項目位置的web.xml,這樣就和項目裏面的web.xml關聯上了,然後就是上面的問題了,不過這裏要說下,這個context.xml文件是一個以內存爲單位的文件,意思就是當你該變了action後的值,改文件會自動去查詢內容是否變更,如果有變更,就會重新同步到Tomcat裏面,而且會將你本次的action的訪問路徑存入內存裏面,當你下次再次訪問的時候,指針將會直接從內存裏面拿東西,而不是在此讀取XML文件
本次eclipse部署struts到此結束,下章繼續部署hibernate。
謝謝大家