




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1. 整體說明1.1. 項目說明1.1.1. OA概述OA是Office Automation的縮寫,本意為利用技術的手段提高辦公的效率,進而實現辦公的自動化處理。實現信息化、無紙化辦公,可方便的生成統計報表等。OA是OFFICE AUTOMATION的縮寫,本意為利用技術的手段提高辦公的效率,進而實現辦公的自動化處理。采用Internet/Intranet技術,基于工作流的概念,使企業內部人員方便快捷地共享信息,高效地協同工作;改變過去復雜、低效的手工辦公方式,實現迅速、全方位的信息采集、信息處理,為企業的管理和決策提供科學的依據。OA軟件解決企業的日常管理規范化、增加企業的可控性、提高企業
2、運轉的效率的基本問題。范圍涉及日常行政管理、各種事項的審批、辦公資源的管理、多人多部門的協同辦公、以及各種信息的溝通與傳遞。可以概括的說,OA軟件跨越了生產、銷售、財務等具體的業務范疇,更集中關注于企業日常辦公的效率和可控性,是企業提高整體運轉能力不可缺少的軟件工具。1.1.2. 本系統作用組織的核心競爭力源自單位對內外部資源的有效利用。對它們之間的關系進行協調,最大限度的發揮所有資源的作用,并用系統的觀點,在整個系統價值最大化的基礎上來發揮各個資源的作用,使資源的運作產生協同效用。因此可通過協同辦公系統打造單位的核心競爭力。本協同辦公系統的主要作用為:1、 建立內部的通信平臺。2、 建立信息
3、發布的平臺。3、 文檔管理的自動化。4、 工作流程的自動化。5、 行政日常事務處理。6、 安全機制的可靠性。本系統旨在加速單位信息化進程,充分利用計算機和現代通訊手段面向單位服務。建立單位內部信息交流的快速通道,以共享信息資源。強化部門業務管理,加強各業務部門之間的交流。實現單位信息的快速上傳下達,促進協同辦公。提高辦公效率,為各級領導及業務人員提供輔助辦公和決策服務。1、 本系統將最大限度地提高辦公效率和辦公質量,降低管理和辦公成本,改善辦公環境和條件,提高辦公管理和決策的自動化和科學化水平。2、 以人為中心,致力于幫助用戶實現共享資源、規范流程、推動執行的目的。幫助用戶節省辦公費用,減少中
4、間環節,優化業務流程,提高整體效率,促進管理進步。簡單的說,有以下兩點:1,利用技術的手段提高辦公的效率2,信息化,可方便的生成統計報表等。1.1.3. 設計原則以應用為核心,要突出“實用、易用、簡潔、穩定”。既注重實效,滿足用戶的現實需要,又為系統的后續升級和擴展留有余地。在技術實現上,要突出“結構清晰、實現合理、通俗易懂(簡單)”。1. 實用:滿足用戶現實需要,解決實際問題,做細核心功能。2. 易用:使用方便,各項功能一目了然。滿足用戶的使用習慣,易使用、易維護、易升級。實現“傻瓜”式的操作,將實施、培訓成本和周期降到最低。3. 簡潔:頁面簡潔,功能簡潔,每一個元素都有存在的意義。4. 穩
5、定:從底層數據庫到功能層經過嚴格測試,能在不同的硬件環境中長期平穩運行。1.1.4. 功能說明OA是輔助辦公的軟件,使用OA與不使用OA相對比的好處是:可以用計算機管理所有的數據,并可以方便的實現統計與報表的功能。提高辦公效率。(實現信息化)。以下是一個OA系統的全部功能列表:說明:不是所有的OA都有全部的功能,而是根據需要確定的。1.2. 項目實現說明1.2.1. 軟件開發的步驟說明需求確認概要設計詳細設計編碼單元測試集成測試系統測試維護。單元測試是由程序員自己來完成,最終受益的也是程序員自己。可以這么說,程序員有責任編寫功能代碼,同時也就有責任為自己的代碼編寫單元測試。執行單元測試,就是為
6、了證明這段代碼的行為和我們期望的一致。集成測試,也叫組裝測試或聯合測試。在單元測試的基礎上,將所有模塊按照設計要求(如根據結構圖組裝成為子系統或系統,進行集成測試。實踐表明,一些模塊雖然能夠單獨地工作,但并不能保證連接起來也能正常的工作。程序在某些局部反映不出來的問題,在全局上很可能暴露出來,影響功能的實現。系統測試是將已經確認的軟件、計算機硬件、外設、網絡等其他元素結合在一起,進行信息系統的各種組裝測試和確認測試,其目的是通過與系統的需求相比較,發現所開發的系統與用戶需求不符或矛盾的地方,從而提出更加完善的方案。1.2.2. 在項目開發中,我們處于什么位置,要做哪些事情?1.2.3. 在課堂
7、上,我們要完成哪些功能,具體需求是什么?模塊功能說明組織與用戶管理崗位管理部門管理用戶管理系統權限初始化權限分配權限驗證權限網上交流-論壇版塊管理看帖、發帖、回帖文章管理審批流轉(工作流)表單模板管理審批流程管理審批流轉表單查詢說明:按列出的順序實現功能。效果以靜態頁面為準(需求)。按靜態頁面做1.3. ItcastOA的整體設計1.3.1. 分層一、JavaEE的三層架構二、關于分層的說明1,上面調用下面,即View調用Service,Service調用Dao。2,層與層之間用接口。除定義的接口外,不能使用其它層的特有類或接口。3,使用實體作為DTO(Data Transfer Object
8、,數據傳輸對象)要做到任一層換掉后,其他層不受影響。我們在此項目中使用兩層:View+Service即在Service中直接操作Hibernate.Session。因為如果使用三層,在Service中就會有一部分方法只是直接調用DAO中的方法。一般情況下只有在多個數據源的場合下適合引入DAO層。三、有關分層的幾個問題1,一定要分層嗎?不一定。假如公司要求你寫一個可以給指定員工發送短信的小程序,用于開會通知與自動發送生成祝福短信。這個程序很小,沒有多少行代碼,而且不變,這時不分層可以嗎?完全可以呀。但我們在寫程序時,還是要分層的,分層的程序結構清晰,可維護性高。2,一定要3層嗎?不一定。分3層是
9、推薦的,而不是必須的,應根據自己的具體情況進行安排。我們如果使用3層的結構,用起來就麻煩,因為在Service中會有一部分方法只是直接調用Dao中的方法,而Dao中的方法只是調用Session完成某操作。此時分2層更好,即在Service中可直接操作Session,以簡化結構。其實Hibernate已經可以支持多種數據庫。3,一定要使用接口嗎?不一定。以前就有同學問我:“在設計程序時確定的技術在開發完成后一般不會更換的,實現類一般也不會更換,這種情況還用接口嗎,一般的小項目是不是可以不使用接口?”。是的,如果不會變(一般也不會變),這是完全可以的。我們所學習的框架、技術都是解決問題的推薦方案,
10、而不是必須要用的。遇到問題后優先使用成熟的技術與方案,以避免很多潛在的或后發的問題,避免走不必要的彎路。1.3.2. 所用框架、技術編號工具版本說明1.Struts 2.JSTL 1.13.Hibernate 3實現持久化操作4.jBPM工作流支持5.Junit4單元測試6.jQuery說明:還有jQuery.validate與jQuery.treeview等小插件1.3.3. 開發環境操作系統Windows XP開發工具MyEclipse6.0數據庫MySqlWeb容器Tomcat6.0瀏覽器IE6說明:1, 推薦使用MyEclipse,這樣出現工具問題可以一起解決。當然也可以使用自已熟悉的
11、工具,如Eclipse、NetBeans、IntelliJ。現在的重點是代碼實現,不是工具。應使用有效的工具。2, 要注意使用的MySql與JDBC驅動的版本要兼容。3, 顯示的技術有兼容的問題,寫出的代碼可能在某些瀏覽器中不能正常運行,這就需要在寫代碼時多使用JS框架,讓框架幫我們解決兼容的問題。1.3.4. 代碼規范1, 命名:使用駝峰命名法。a) 類、接口:每個單詞的首字母大寫。例:MyDateConverterb) 變量、方法:第一個單詞的首字母小寫,其他單詞的首字母都大寫。例:myDateConverterc) 常量:全字字母都大寫,單詞之間使用_隔開。例,DEFAULT_PAGE_
12、SIZEd) 使用有意義的名稱,慎用縮寫。2, 注釋:在代碼中加入適當的注釋:說明步驟,與說明非簡單邏輯。3, 空行:在代碼中加入適當的空行,就像寫文章時要分段一樣(增強可讀性)。總之,要保證代碼的有效、清晰、簡潔(à可讀)。1, 有效:這是第一目標,代碼要是可以解決問題的。2, 清晰:在有效的前提下,讓代碼清晰。3, 簡潔:代碼與邏輯應盡量的簡單,不要是給別人講別人都聽不明白。1.3.5. 約定1, 工程中所有的文件都采用utf-8編碼。所有的頁面都是使用utf-8編碼,這樣方便解決表單內容的亂碼問題。亂碼一般情況下是亂用編碼產生的。2, 實體的主鍵屬性的類型使用Long型。1.3
13、.6. 項目計劃功能知識點預計時間1. 基礎功能a) Dao設計b) 事務管理c) 表單亂碼d) 對象管理1. Struts基礎2. Hibernate基礎3. 過濾器1天2. 組織用戶管理a) 崗位管理b) 部門管理c) 用戶管理1. 一般的實體設計2. 實體映射(映射文件)3. 增刪改查功能4. 樹狀顯示5. 使用jQuery.validate進行表單驗證2天3. 系統權限a) 創建權限b) 分配權限c) 使用權限1. jQuery的一般使用2. 權限控制方案2天4. 論壇a) 論壇管理b) 論壇基本功能c) 文章管理1. 分頁2. 在線編輯器FCKeditor3天5. jBPM + 審批
14、流轉a) 工作流框架jBPMb) 審批流轉功能1. 工作流框架jBPM2. 工作流的一般應用4天2. 準備環境2.1. 創建數據庫,要注意編碼1,使用MySql數據庫。2,創建數據庫時,要注意編碼要支持中文。3,建表語句如下:create database itcastoa default character set utf8;show create database itcastoa;說明:需要先運行Mysql的配置向導,把編碼配為GBK或UTF8。如果配成UTF8,在mysql命令行客戶端中就有亂碼,所以最好用GBK。2.2. 新建Web工程并進行配置2.2.1. 配置工具2.2.1.1.
15、 配置快捷鍵1, 把Context Assist設為Alt+/2, 把Word Completion 設為Alt+.3,其他常用快捷鍵說明:Alt+/Content Assist代碼提示Ctrl+T顯示類的繼承結構Ctrl+O列出類中的成員(成員變量、方法等)Ctrl+/注釋/取消注釋Ctrl+Shift+O導入要使用的包、并去除不使用的包Ctrl+Shift+F格式化當前文件中的代碼/格式化選中的代碼Ctrl+Alt+Up復制當前行到下面Ctrl+Alt+Down復制當前行到上面Ctrl+D刪除當前行/刪除選中文本占的所有行Shift+Enter相當于按End后再按EnterAlt+Left
16、Alt+RightCtrl+Shift+X變為大寫Ctrl+Shift+Y變為小寫2.2.1.2. 配置文件的默認編碼1, 設置工程的默認編碼為UTF-8。2, 配置JSP的默認編碼為utf-83, 配置JavaScript的默認編碼為utf-8說明:在MyEclipse7.x或MyEclipse8.x中不用修改,使用的是工程的編碼。2.2.1.3. 配置格式化的代碼樣式1, 使用Ctrl+Shift+F可以格式化代碼。2, 在WindowàPreferencesàJavaàCode StyleàFormatter中可以設置代碼樣式。 要把Java代碼與
17、注釋的行寬設為130。(其他使用默認樣式)3, 搜索XML Sources,修改xml的行寬為130。(不考慮打印的情況)2.2.1.4. MyEclipse工具使用說明1, 導入工程時可以直接選擇一個zip文檔:FileàImportàExisting Projects into Workspace->Select archive file。2, 工程改名后,發果發布到Tomcat下,對應的應用的名稱不一定改變。這個名稱是在MyEclipseà Web中的Web Context-root中配置的。新建一個Web Project,并設置工程的編碼為UTF-8
18、。2.2.2. 添加框架環境1, 添加Junit4的Jar包。2, JSTL1.1。JavaEE5中已經帶了JSTL,但是發布時不會把JavaEE發布到Tomcat中,有時會報錯,說找不到JSTL。所以最好再加一下JSTL1.1的環境。3, 添加Struts環境:(使用向導生成配置文件,然后再自己添加jar包)a) jar包(不要加antlr-、jstl-1.0.2、standard-1.0.2,因為有沖突)b) 配置文件(struts-config.xml、修改web.xml)、國際化資源文件、自定義標簽庫的TLD文件。配為*.do攔截的請求。4, 添加Hibernate環境:a) jar包
19、(含JDBC驅動的jar包)b) 配置文件()。5, 添加jBPM環境(Jbpm的jar包中已包含Hibernate的jar包)。說明:1, 不要引用外面的Jar包,應全部拷貝到工程中。2.2.3. 配置數據庫修改Hibernate.cfg.xml中的數據庫連接信息。并在hibernate.cfg.xml中做如下配置:<!- 顯示sql語句 -><property name="show_sql">true</property><!- 自動更新表結構 -><property name="hbm2ddl.auto&
20、quot;>update</property>2.3. 工程中的資源分類(目錄與包結構)2.3.1. 目錄結構源碼文件夾src項目源代碼 config配置文件 test單元測試WebRoot文件夾下 scriptJavaScript腳本文件 styleCSS樣式文件 WEB-INF/jspjsp頁面文件(再創建子文件夾分類存放)2.3.2. 包結構使用三層:顯示層(View),業務層(Service),數據訪問層(Dao)(部分)包名說明cn.itcast.oa.domain實體(Domain)Dao接口Dao的實現類Service接口cn.itcast.oa.service
21、.implService的實現類Struts有關的類Struts的ActionStruts的FormBean(ActionForm)一些工具類cnView顯示Jsp + JSTL + Struts + jQuery Service業務邏輯JBPMDao數據訪問Hibernate3. 基礎功能有的環境,就可以寫具體功能了嗎?不可以。因為在寫具體功能時會用到一些公共的功能(基礎功能。如事務管理,在每個模塊中都會用到,我們就需要先把這此公共的功能完成,再專心的寫每個模塊的具體功能。這些基礎功能要求都要理解,并獨立寫一遍。3.1. 設計BaseDao接口與BaseDaoImpl類每個實體都應有一個對應
22、的Dao,他封裝了對這個實體的數據庫操作。例實體Dao接口實現類=User-> UserDao-> UserDaoImplRole-> RoleDao-> RoleDaoImplDepartment-> DepartmentDao-> DepartmentDaoImplArticle-> ArticleDao-> ArticleDaoImpl.說明:4, 實體的Dao接口要繼承BaseDao接口。5, Dao的實現類要繼承DaoImplBase類。6, 也可以不繼承指定的接口或類,這樣就要自己寫相應的方法。7, T getById(Long id
23、)與List<T> getByIdList(Long idList)不要合并為List getById(Long. ids),因為獲取一個對象時也是返回List,不方便。獲取 BaseDao的類型參數T的Class問題:1, 有了DaoBase與DaoImplBase,還要用UserDao、RoleDao嗎?答:要用。因為UserDao或RoleDao中的方法可以分為有公有的方法與特有的方法兩部分。公有的方法是通過繼承BaseDao得到的,特有的方法要寫在自己里面(BaseDao中是沒有的)。2, UserDaoImpl已經繼承了BaseDaoImpl,就不實現UserDao可以嗎
24、?答:不可以。否則UserDao userDao = new UserDaoImpl(); 就不成立。使用反射獲取類型參數的真實類型的代碼如下:public DaoBaseImpl () Type type = this.getClass().getGenericSuperclass();ParameterizedType pt = (ParameterizedType) type;this.clazz = (Class<T>) pt.getActualTypeArguments()0;說明:1, 使用Session時,不要自己創建,也不要管理事務,直接調用getSession()
25、即可。2, 暫時不實現getSession()方法,在后面的事務管理中實現:protected Session getSession() throw new UnsupportedOperationException();3.2. 事務管理(Session管理)/ 返回與當前線程綁定的Session,如果沒有,就創建一個,與當前線程綁定后返回。/ 需要先配置hibernate.current_session_context_class=thread,才能使用SessionFactory.getCurrentSession();事務管理1,在同一個Service中調用的Dao中應使用同一個Ses
26、sion?2,怎么不重復的寫Session與Transaction的管理代碼?1,同時執行的多個請求使用的不同的多個線程。2,先后執行的兩個請求有可能是使用的同一個線程。(線程池)ThreadLocalFilter.doFilter()打開Sessionchain.doFilter(); / 放行 -> ActionServlet -> Action -> Service關閉Session事務邊界。1,一個事務的范圍是一個業務操作。轉帳()A - 100; / update/ throw exceptionB + 100; / update2,在Dao中只是使用Session
27、,而不管理Session與事務3,一次請求的執行過程1,在Action中要做什么?1,獲取用戶輸入2,進行業務處理(調用業務方法)3,給用戶反饋(轉到一個顯示頁面)1, 事務說明:事務的范圍是一個業務方法,而不是一個數據庫操作。可以用銀行轉賬的例子來說明。2, 事務管理就是要解決兩個問題:a) 在同一個請求中怎么使用同一個Session?b) 怎么才能不重復寫業務方法中的開關Session與管理事務的模板代碼?3, 解決思路:a) 第一個問題:使用SessionFactory.getCurrentSession()b) 第二個問題:使用過濾器,攔截的地址為“*.do”。4, 說明:a) 每個請
28、求使用一個線程來執行。b) 同時執行的多個請求是多個不同的線程。c) 先后的兩次請求,有可能使用的是同一個線程(Web容器有線程池)。要使用SessionFactory.getCurrentSession()方法,需要先在hibernate配置文件中做如下配置,否則不能使用(會報錯):“<property name="hibernate.current_session_context_class">thread</property>”配置后影響的行為如下:SessionFactory.getCurrentSession()獲取當前線程對應的Sessi
29、on,如果沒有(一個線程中的第一次調用),就會創建一個Session并關聯到當前線程后返回。Tmit()提交事務,在提交后會自動關閉SessionTransaction.rollback()回滾事務,在回滾后會自動關閉Session說明:如果配置了currentSessionContext,在提交或回滾事務后會自動關閉Session。使用時就不要再調用關閉的代碼了。注意:SessionFactory.openSession()后,本次打開的Session不會與當前線程綁定,也就是說用SessionFactory.getCurrentSession()是拿不到的!采用前面的方式時,每一次請求到達
30、Filter時都將開啟一個事務,而不論Service層是否會真正的與數據庫進行交互,為了避免在許多不會與數據庫進行交互但又開啟事務在性能上的損失,可以將事務的開啟延遲到具體的Service層中,這樣,僅僅在Service層需要進行交互的時候才開啟事務。不在使用Hibernate來獲取當前線程關聯的Session,就需要我們自己來實現這樣的功能。ThreadLocal派上了用場:private static ThreadLocal<Session> sessionMap = new ThreadLocal<Session>();ThreadLocal可以存放以當前線程對象
31、為key,以一個Session對象為value存的信息。3.3. 解決提交的表單內容的中文亂碼因為所有的頁面都將使用utf-8編碼,所以提交的表單也是utf-8編碼。在過濾器中設置request的編碼為utf-8就可以解決POST方式提交表單的中文亂碼問題: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) request.setCharacterEncoding("utf-8");chain.doFilter(request, response);對于GET方式亂碼不做處理。如做處理,可使用包裝或代理的方式。3.4. 對象管理(BeanFactory)使用工廠模式完解決對實現類依賴的問題,并使用配置文件配置要使用的實現類。需要一個工具類,名為BeanFactory,其中有一個獲取實現類的方法,可以定義為:Object BeanFactory
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年生態旅游可持續發展規劃與管理旅游目的地生態旅游發展規劃報告
- 智能電網在2025年能源行業中的應用與產業生態構建報告
- 智能設備配對管理制度
- 大公司工廠績效管理制度
- 印刷廠安全生產管理制度
- 婦產科儀器設備管理制度
- 護理制度流程化管理制度
- 客服辦公室設備管理制度
- 春季魚塘開口管理制度
- 產品銷售群規定管理制度
- 加工巖板合同協議書
- 2025-2030中國經顱磁刺激儀(TMS)行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030中國碳酸鎂行業市場發展分析及發展趨勢與投資前景研究報告
- 《飛向太空的航程》課件【中職專用】高一語文(高教版2023基礎模塊下冊)
- 2025蘭州資源環境職業技術大學輔導員考試試題及答案
- 2025年下半年山西焦煤西山煤電集團公司招聘270人易考易錯模擬試題(共500題)試卷后附參考答案
- 小紅書《家的一平米》招商方案
- 上海中考:地理高頻考點
- 道路工程平移合同協議
- 尺骨骨折護理課件
- 處世奇書《解厄鑒》全文譯解
評論
0/150
提交評論