Struts1.x的深入
1.
Struts1.x是Apache軟件基金下Jakarta項目的一個子項目,目前Struts的最新版本是Struts1.4
。學習Struts,不僅是因為他占據了當今的主流市場,還因為他開源,可以學習底層代碼,還可以重用。
2.Struts中使用技術
http
CGI
Java servlet
Jsp
jsp標簽
JavaBean
Model2(JSP+Servlet+JavaBean)
3.Struts分為三層:Controller 有servlet充當
Model 有JavaBean擔任
View 有jsp擔任
4.Struts開發環境的搭建
JDK 服務器
5.Struts使用的標簽庫
下面開始今天的主體:
6.手工搭建Struts
1.新建web工程
2.添加jar包,網上下個Struts的壓縮包struts-1.3.10-all.zip,解壓后將其lib目錄下的所有jar導入當前工程的/WEB-INF/lib目錄下
3.定義視圖 login.jsp
4.定義javaBean接收表單參數,該javaBean必須繼承ActionForm
注意該javaBean中的屬性要和表單中參數一致,比如
我在表單中有:<input type="text" name="username"
value="">用戶名</input>
那我在javaBean中必須的setUsername和GetUsername方法
5.新建控制器 LoginAction ,繼承Action ,要重寫execute方法
在該方法中
LoginForm loginForm = (LoginForm) form;
String username = request.getParameter("username");
String psw = request.getParameter("psw");
return
6.配置web.xml
7.配置struts-config.xml
**************************************************************************************************************
8. Struts的啟動過程
服務器啟動的時候,加載ActionServlet,調用ActionServlet的init方法,讀取
struts-config.xml文件,在內存中(ServletContext)中已經存在
9.Struts的運行過程
客戶端請求/login.do,轉到struts的中央控制器ActionServlet,ActionServlet解析請求路徑/login
,ActionServlet解析請求路徑/login
ActionServlet在Struts-config。xml文件中查找Action節點(根據path(action的唯一標志)屬性)中path屬性的值為/login的Action節點,ActionServlet根據name屬性的值,找到form-bean標簽,讀取type屬性的值,創建該formBean的實例,把頁面的提交過來的數據封裝到FormBean的對象中
Struts1.x的深入
1.
Struts1.x是Apache軟件基金下Jakarta項目的一個子項目,目前Struts的最新版本是Struts1.4
。學習Struts,不僅是因為他占據了當今的主流市場,還因為他開源,可以學習底層代碼,還可以重用。
2.Struts中使用技術
http
CGI
Java servlet
Jsp
jsp標簽
JavaBean
Model2(JSP+Servlet+JavaBean)
3.Struts分為三層:Controller 有servlet充當
Model 有JavaBean擔任
View 有jsp擔任
4.Struts開發環境的搭建
JDK 服務器
5.Struts使用的標簽庫
下面開始今天的主體:
6.手工搭建Struts
1.新建web工程
2.添加jar包,網上下個Struts的壓縮包struts-1.3.10-all.zip,解壓后將其lib目錄下的所有jar導入當前工程的/WEB-INF/lib目錄下
3.定義視圖 login.jsp
4.定義javaBean接收表單參數,該javaBean必須繼承ActionForm
注意該javaBean中的屬性要和表單中參數一致,比如
我在表單中有:<input type="text" name="username"
value="">用戶名</input>
那我在javaBean中必須的setUsername和GetUsername方法
5.新建控制器 LoginAction ,繼承Action ,要重寫execute方法
在該方法中
LoginForm loginForm = (LoginForm) form;
String username = request.getParameter("username");
String psw = request.getParameter("psw");
return
6.配置web.xml
7.配置struts-config.xml
**************************************************************************************************************
8. Struts的啟動過程
服務器啟動的時候,加載ActionServlet,調用ActionServlet的init方法,讀取
struts-config.xml文件,在內存中(ServletContext)中已經存在
9.Struts的運行過程
客戶端請求/login.do,轉到struts的中央控制器ActionServlet,ActionServlet解析請求路徑/login
,ActionServlet解析請求路徑/login
ActionServlet在Struts-config。xml文件中查找Action節點(根據path(action的唯一標志)屬性)中path屬性的值為/login的Action節點,ActionServlet根據name屬性的值,找到form-bean標簽,讀取type屬性的值,創建該formBean的實例,把頁面的提交過來的數據封裝到FormBean的對象中
ActionServlet讀取Action標簽中的type屬性的值,實例化Action(LoginAction),
自動調用action中的execute()方法
注:ActionServlet會針對每一個<Action> 創建一個與之對應的ActionMapping
對象,在ActionMapping對象中封裝著<action>標簽的屬性信息
相信你也會有很多疑問:
* execute方法的四個參數是怎么傳遞的
下篇重寫底層代碼,以理解Struts底層實現!
windows下一般系統編碼為 GB2312(中文版的windows),由于我比較喜歡utf8格式的編碼,現將修改方式和大家分享
如果要使新建立工程、java文件直接使UTF-8則需要做以下工作:
1、windows->Preferences...打開"首選項"對話框,左側導航樹,導航到general->Workspace,右側 Text file encoding,選擇Other,改變為UTF-8,以后新建立工程其屬性對話框中的Text file encoding即為UTF-8。
2、windows->Preferences...打開"首選項"對話框,左側導航樹,導航到general->Content Types,右側Context Types樹,點開Text,選擇Java Source File,在下面的Default encoding輸入框中輸入UTF-8,點Update,則設置Java文件編碼為UTF-8。其他java應用開發相關的文件如:properties、XML等已經由Eclipse缺省指定,分別為ISO8859-1,UTF-8,如開發中確需改變編碼格式則可以在此指定。
3、經過上述兩步,新建java文件即為UTF-8編碼,Eclipse編譯、運行、調試都沒問題,但是做RCP應用的Product輸出時、或者插件輸出時,則總是出錯,要么不能編譯通過(輸出時要重新compile)、要么輸出的插件運行時中文顯示亂碼。此時需要再RCP應用、或插件Plugin工程的build.properties中增加一行,javacDefaultEncoding.. = UTF-8。讓輸出時編譯知道java源文件時UTF-8編碼。這個設置需要保證所有的java源文件時UTF-8編碼格式,如果不全是,可以參考 Eclipse幫中(Plug-in Development Environment Guide > Reference > Feature
and Plug-in Build configuration),建議全部java源文件是UTF-8編碼。
如果插件開發、RCP應用開發原來基于其他編碼,如GB18030,想轉換為UTF-8,則首先,做以上工作;然后通過查找編碼轉換工具,如基于 iconv的批量轉換工具,將原編碼轉換為UTF-8編碼,注意只轉換java源文件,其他類型文件可能已經是比較合適的編碼了;將原工程屬性中的 Text file encoding,從原編碼改為UTF-8即可。