網頁上發送mail有2種常用的方式. MailTo 和 Form提交.
兩者在編碼方面都是一樣的.
如果頁面是UTF-8編碼格式,則發送出去的字符串就是UTF-8,Mail客戶端如果以GB2312接受,必為亂碼
實際在中文win2000下測試,就算修改Outlook Express默認編碼為UTF-8,仍然無法接受正常的漢字。
所以將頁面修改為GB2312是一個簡單的解決方案。
還有一個問題
如果我在日文系統調用GB2312的頁面,仍然無法獲取正確的漢字。
解決辦法是,在日文系統下,把需要的漢字輸到*.ASPX文件上(或者是JS),然后再調用頁面,在日文系統上就能夠出現正確的漢字。雖然這個時候源代碼全部是亂碼。
實際上是用日文字體寫中國漢字。。。。這個和編碼格式問題好像不一樣
??? 項目基本上采用如下交互模式.
??? 流程如下.
- 一個頁面對應一個用類
- 一個頁面對應一個Struts Action.
- 頁面上一個動作(提交按鈕)對應Action一個方法(或者對應if語句)
- 一個Struts Action對應一個BO類
- 一個Struts Action 方法(頁面一個動作)對應BO一個方法
- 一個BO對應1到多個DAO.
? 其中業務對象BO,
- 都是按照無狀態設計的,類似函數大集合.
- 函數之間不考慮復用,函數之間功能獨立,代碼重復率高.
- 業務對象都是都是根據用例來劃分的(1 vs 1).
- 業務對象之間不考慮關系,全部都是函數載體.
- DAO主要服務于業務對象.基本上也是1 vs 1
- 只能服用CRUD情況.復雜的sql文如果很相似可以合并.
- 由于設置上是為業務對象服務,業務對象之間設置溝通很少,所以DAO實現也多重復
? 但是開發效率很高.從外到里,全程一人設計.單獨看功能完整,全局看,雷同的太多了.
? 首先提煉業務對象.從全局角度考慮,劃出有限個業務對象.利用對象關系勾勒出完整的業務邏輯.
? 其中每個業務對象與PO緊密合作,PO依賴與DAO,實現對象的基本操作(CRUD).
? 以上實現業務對象層,主要用來描述業務對象之間的關系,已經持久化功能..
? 再設計出查詢層,支持復雜查詢,獲取各種查詢結果.
? 門戶層對客戶端(Struts Action)提供業務接口,支持如下:
- 對業務對象層操作
- 對查詢層操作
- 對于復雜業務邏輯,結合查詢層和業務層來實現.
?
?附上代碼。?
項目代碼?? 主要改進如下類
- CompinfoServiceImp
- 直接調用Compinfo,不顯示調用DAO
- Compinfo
- 內部隱藏調用DAO
??? 首先說說我們現在采用的開發框架.然后慢慢的進行改造.
??? 首先是標準的WEB應用程序.包括WEB層,業務層(BO層)和持久化層(DAO/PO).
??? 1.WEB層,采用Struts.
??? ?? 1.1 JSP頁面采用少量的Struts標簽,其他功能通過自定義標簽完成.
?????? 1.2 頁面操作分為 添加(修改)/列表 兩部分.基本上通過CSS來展現.其中列表部分采用Displaytag
?????? 1.3 按需要采用Ajax
??? 2.業務層采用Spring.
?????? 2.1 通過DelegatingActionProxy綁定Struts
?????? 2.2 BO只有一個空父類.提供Log4j的實例.
?????? 2.3 BO依賴與BaseDAO及具體業務DAO.
?????????? 2.3.1? BaseDAO完成基本的增刪改查,
?????????? 2.3.2? 具體業務DAO完成關于本表的復雜的查詢
?????????? 2.3.3? 多表關聯的查詢,則單獨封裝在DAO中
?????? 2.4 事務控制統一由Spring AOP配置完成.
??? 3.持久層采用Hibernate
?????? 3.1 BaseDAO繼承HibernateDaoSupport
?????? 3.2 普通HSQL文查詢.
??? 以上是當前項目的狀況,以后會逐一對其改進.