02 Sruts詳解

Struts詳解
在apcahe網站上下載struts的包
Struts是apcache公司下面的子項目 基於struts1+xwork
struts壓縮包解析:
source:源代碼
doc :幫助文檔
jar包是源代碼
war包是帶js頁面的可以直接放到tomcat下運用
lib庫:jar包 大量的包都是struts依賴的包而不是它本身的包
框架開發中的主要困難:
1)jar包衝突 衝突的原因往往是版本衝突 jar包衝突往往很難定位 提示是莫名其妙的一些錯誤
2)框架整合之後,錯誤的排除特別困難
使用哪些包都得了解哪些包,學任何一個框架都必須瞭解所有的包 否則產生衝突找都找不到

freemark :view層的框架技術和jsp的地位差不多 還有volocity JSF
OGNL (Object Graphic Navigation Language )對象的圖形化導航語言

Strusts的HelloWorld開發步驟:
想達到的項目效果
在瀏覽器中發送一個請求
http://localhost:8383/Hello.action,在頁面顯示hello的信息
原來需要寫servlet 控制dispatch到指定jsp
1.建立一個web項目----右擊項目-----myeclipse-----add struts capbility
這樣就引入了Struts2依賴包,之後就自動在項目中添加了一個xml文件strusts.xml,也會在web.xml中自動添加一個核心過濾器
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>引用了一個struts根據這個路徑在引入的包裏能找 到;這個類這個過濾器的作用:所有的url都將被它攔截一次,並且處理去定位到到底哪個action去處理這個請求
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping></web-app>
Eclipse沒有嚮導自己手動按照步驟來添加 添加包的時候一定在優化包,只添加必要包
2.建立一個hello.jsp 用於輸出顯示信息
3.用控制器轉到jsp上 ,建立控制器 HelloAction.jaa
4.實現execute()方法
5.配置struts.xml
<package name="HelloWorld" extends="struts-default">
<action name ="helloWorld"
class="com.struts.control.HelloWorldAction ">
<result name="sucess">/view/hello.jsp</result>
</action>
</package>
Struts2的工作原理:
1.部署HelloWorld項目到tomcat
2。啓動tomcat時候,struts.xml配置文件在tomcat服務器啓動的時候將被解析
所有的action對象存儲到static Map數組中(說明action的名字不能重複)
程序啓動之後不能修改struts,xml,想修改就關掉服務器重新啓動。
3.瀏覽器發出get請求:http://localhost:8383/HelloWorld/helloWorld.action被轉到action類中指定的jsp頁面了
helloWorld對應的是action的name,且必須有.action這個後綴,
小結:根據URL中含有的*.action後綴, 觸發StrutsPrepareAndExecuteFilter這個過濾器,然後這個過濾器開始截取url中action的名稱helloWorld,用action的名稱helloWorld到action的Map數組中很容易的找到對應的action對象, 對應出相應的class類即action類,利用反射技術,動態創建這個class類的對象helloWorld,利用反射技術invocation激活類中的方法execute()方法,根據方法中的返回值找到result,返回值對應action對象中的result的name值, <result>默認使用dispactch方式轉向到<result></result>之間指定的jsp網址(換句話說 類中有各種控制方法,這些控制方法的返回值分別對應這個action中包含的各個<result>子節點的name值,對應上之後,就開始跳轉到<result></result>之間指定的頁面,可能在那個方法中還包含這各種數據的傳遞和處理。)
<result name="" type="轉向類型有很多種默認使用dispatch類型"></result>
以上一個小項目講解
Struts2的工作原理:
1.部署HelloWorld項目到tomcat
2。啓動tomcat時候,struts.xml配置文件在tomcat服務器啓動的時候將被解析
所有的action對象存儲到static Map數組中(說明action的名字不能重複)
程序啓動之後不能修改struts,xml,想修改就關掉服務器重新啓動。
3.瀏覽器發出get請求:http://localhost:8383/HelloWorld/helloWorld.action被轉到action類中指定的jsp頁面了
helloWorld對應的是action的name,且必須有.action這個後綴,
小結:根據URL中含有的*.action後綴, 觸發StrutsPrepareAndExecuteFilter這個過濾器,然後這個過濾器開始截取url中action的名稱helloWorld,用action的名稱helloWorld到action的Map數組中很容易的找到對應的action對象, 對應出相應的class類即action類,利用反射技術,動態創建這個class類的對象helloWorld,利用反射技術invocation激活類中的方法execute()方法,根據方法中的返回值找到result,返回值對應action對象中的result的name值, <result>默認使用dispactch方式轉向到<result></result>之間指定的jsp網址(換句話說 類中有各種控制方法,這些控制方法的返回值分別對應這個action中包含的各個<result>子節點的name值,對應上之後,就開始跳轉到<result></result>之間指定的頁面,可能在那個方法中還包含這各種數據的傳遞和處理。)
<result name="" type="轉向類型有很多種默認使用dispatch類型;其他類型包括:chain/freemaker/httpheader/redirect/redirectAction/stream/velocity/xslt/plainText"></result>

缺陷:
http://localhost:8383/HelloWorld/xxxx/helloWorld.action 仍然可以訪問到
路徑值截取最後一個/後面的名稱,這個路徑可以隨便變中間部分
即:struts2對資源的目錄是不處理的,後期spring對此彌補


發佈了36 篇原創文章 · 獲贊 30 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章