好長時間沒寫程序了感覺,忘了很多東西,呵呵,今天打開Eclipse寫了一個Struts的小應用,也回顧了一遍它的主要內容,這篇隨筆就把整理的一些東西貼出來吧。
*******************************************************************************
Model
事務邏輯 -- 要做什么
Action類所扮演的角色 -- 決定做什么
內部狀態通常由一組ActionForm JavaBean表示,通常我們建議將事務邏輯與Action分開
*******************************************************************************
View
JSP 標簽
*******************************************************************************
Controller
基本的控制器組件是ActionServlet類中的實例servlet,實際使用的servlet在配置文件
中由一組映射(由ActionMapping類進行描述)進行定義。
如:
1 <action-mappings>
2 <action attribute="fStrutsForm" input="/form/fStruts.jsp"
3 name="fStrutsForm" path="/fStruts" scope="request"
4 type="com.nicky.struts.action.FStrutsAction" />
5 </action-mappings>
ActionServlet 控制器
ActionClass 包含事務邏輯
ActionForm 表單數據
ActionMapping 將請求映射到操作
ActionForward 轉移對象
ActionError 存儲和回收錯誤
ActionServlet將適當的ActionMapping轉發給適當的Action
*******************************************************************************
\WEB-INF\struts-config.xml 可以定義全局轉發、Action Mapping、ActionForm Bean、
JDBC數據源等
1 <controller></controller>
2 <action-mappings></action-mappings>
3 <data-sources></data-sources>
4 <form-beans></form-beans>
5 <global-exceptions></global-exceptions>
6 <global-forwards></global-forwards>
7 <message-resources parameter="com.nicky.struts.ApplicationResources"/>
8 <plug-in className=""></plug-in>
其中全局轉發是用來在jsp頁面之間創建邏輯名稱的映射;action-mappings進行內部的流程
控制,可以將請求URL映射到Action類,并將Action類與ActionForm Bean相關聯;data-sources
用來配置JDBC數據源,可以定義多個數據源,實例:
1 <data-sources>
2 <data-source>
3 <set-property property="key" value="mysqlDS" />
4 <set-property property="type" value="javax.sql.DataSource" />
5 <set-property property="driverClass"
6 value="com.mysql.jdbc.Driver" />
7 <set-property property="url"
8 value="jdbc:mysql://DBServer:3306/DBName" />
9 <set-property property="maxCount" value="20" />
10 <set-property property="minCount" value="2" />
11 <set-property property="user" value="userName" />
12 <set-property property="password" value="userPassword" />
13 </data-source>
14 </data-sources>
在Action中調用:
//MySQL 數據源取得
DataSource mysqlds = this.getDataSource(request,"mysqlDS");
對于單數據源 可以直接獲取
DataSource mysqlds = this.getDataSource(request);
*******************************************************************************
Action類的perform過時,替以execute也是兩個可以處理Http和非Http請求。
*******************************************************************************
使用ActionError和ActionErrors來處理錯誤,ActionErrors保存著ActionError對象集合,
而每個ActionError都包含關鍵字,能夠映射到資源文件中存儲的錯誤信息。
資源文件是在ActionServlet初始花參數中指定的。
替換例子:
1 error.invalid=<b>Invalid Number{0}</b>
2 ActionError error = new ActionError(‘error.invalid’,new Double(-1));
JSP頁顯示:Invalild Number –1
*******************************************************************************
struts——>bean、logic、html、template、nested、tiles
<bean:define>定義字符串常數,拷貝bean對象,用現有bean屬性來創建新bean。id新定義bean腳本變量名稱,type類,value為id屬性定義的腳本變量分配一個新的對象,name目標bean的名稱。
1 <bean:define id="printString" value="This is Login Page" scope="page"></bean:define>
2 <bean:define id="printString" name="_printString" scope="page" toScope="request" ></bean:define>
<bean:include>標記將對一個資源的響應進行檢索,并引入一個腳本變量和字符串類型的頁作用域屬性,資源可以是一個頁,一個ActionForward或一個外部URL
<bean:resource>標記將檢索web應用中的資源,并引入一個腳本變量和InputStream或字符串類型的頁作用域屬性
<bean:write>標記,用來將bean的屬性輸送到封裝的JSP頁寫入器
struts框架對國際化的支持是使用<bean:message>標記,以及使用java.util數據包中定義的Locale和ResourceBundle類來實現Java2平臺對這些任務的支持。
為了實現國際化,所有的資源文件必須都存儲在基本資源文件所在的目錄中。基本資源文件包含的是用默認地區語言-本地語言編寫的消息。如果基本資源文件的名稱是ApplicationResources.properties,那么用其他特定語言編寫的資源文件的名稱就應該是ApplicationResources_xx.properties(xx為ISO編碼,如英語是en)。因此這些文件應包含相同的關鍵字,但關鍵字的值是用特定語言編寫的。
在邏輯標記庫中定義了<logic:iterate>標記,它能夠根據特定集合中元素的數目對標記體的內容進行重復的檢查
<logic:forward>標記能夠將響應轉發給重定向到特定的全局ActionForward上。
<logic:redirect>標記是一個能夠執行HTTP重定向的強大工具
Onblur字段失去了焦點
Struts HTML標記可以大致地分為以下幾個功能:顯示表單元素和輸入控件 顯示錯誤信息 顯示其他HTML元素
1 <html:form action="/fStruts">
2 用戶名 : <html:text property="userName" size="33"/><html:errors property="userName"/><br/>
3 密 碼 : <html:password property="pwdText" size = "35"/><html:errors property="pwdText"/><br/>
4 <html:submit/><html:cancel/>
5 </html:form>
動態模板是模塊化WEB頁布局設計的強大手段。Struts模板標記庫定義了自定義標記來實現動態模板
<template:insert>標記能夠在應用程序的JSP頁中插入動態模板。這個標記只有一個template屬性,用來定義模板JSP頁。要插入到模板的頁是有多個<template:put>標記來指定的,而這些標記被定義為<template:insert>標記的主體內容
在模板JSP頁中使用<template:get>標記能夠檢索由<template:put>標記插入到JSP頁的資源
*******************************************************************************
posted on 2007-10-07 16:55
wqwqwqwqwq 閱讀(1020)
評論(0) 編輯 收藏 所屬分類:
Simple Java