注:黃色部分爲從網絡引用內容。
概念:Struts2與Servlet的區別:
1.編程思想相同,通過前臺請求後臺數據,再得到返回值。因此Struts2本質還是Servlet。
2.代碼的規範。因爲jsp+servlet開發隨意。規範性應差。控制語句到處有,爲維護及修改帶來不便。也使接手的人爲解讀代碼帶來不便。
3.安全性。web開發最不安全的就是session的使用.servlet的開發離不開request。有了request,那也就有了session,以前我們有個組開發,亂用session,使系統的性能很着。而且有很多保密信息外漏。如果你在servlet中封裝request,那你就會發現越來越象struts。而struts的值都保存在ActionForm中,所以進行簡單的封裝就可以使底層人員,看不到requet,又不影響取值。
4.可維護性。
5.servlet是單例,線程安全,每次請求都是由第一個請求到來後建立的那個servlet招呼,所以servlet裏面不能有成員變量;struts2是通過一個servlet負責招待每個到來的線程,併爲這個線程向action工廠要一個全新的action,並把它們倆放進一個叫Threadlocal的容器中,直到線程斷掉,這些東西才被gc這個收垃圾的收走。所以struts2是多線程的。當然struts2實現上覆雜很多,比如負責各種轉換的攔截器
構建Struts2項目
要構建Struts項目需要導入Struts2基礎包和依賴包,可以去Struts官網下載: Struts2官網
在項目的src文件夾下 需要建立一個 Struts2.xml 以及 存放 Struts Action的Action包
Struts2.xml 基礎設置:
在struts標籤下加入 Package和Action
<package name="studentInfo" extends="struts-default" namespace="/" >
<action name="login" class="com.gw.action.LoginAction">
<span style="white-space:pre"> </span><result name="error">/index.jsp</result>
<span style="white-space:pre"> </span><result name="success" type="redirect">/main.jsp</result>
<span style="white-space:pre"> </span></action>
<action name="grade" class="com.gw.action.GradeAction">
</action>
<span style="white-space:pre"> </span></package>
其中 result設置了返回結果 如:
<span> </span><result name="error">/index.jsp</result>
標識 當Action中return了 error這個值 就可以跳轉到Index.jsp action的name屬性指定了前端頁面訪問Action的URL
在頁面中如此設置便可以直接將 請求參數傳給Action 並且不用request來獲取參數。
其中 s_gradeName=""; 表示 該請求參數爲NULL時的默認值。
同時Actrion要extends ActionSupport implements ServletRequestAwar
ServletRequestAwar用來獲取Sevlet的成員
並且Action中必須要重載excute方法 在這個方法裏可以寫後臺的代碼
其中 return值 對應XML裏的 result 標籤。
1、前端頁面通過表單提交的方式訪問Aciton
2、前段頁面通過Ajax的方式訪問Action
其中!和?之間的字符串指定了 Action要執行的方法。