項(xiàng)目no.3ssh實(shí)戰(zhàn)課程v6.1第3天_第1頁
項(xiàng)目no.3ssh實(shí)戰(zhàn)課程v6.1第3天_第2頁
項(xiàng)目no.3ssh實(shí)戰(zhàn)課程v6.1第3天_第3頁
項(xiàng)目no.3ssh實(shí)戰(zhàn)課程v6.1第3天_第4頁
項(xiàng)目no.3ssh實(shí)戰(zhàn)課程v6.1第3天_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1項(xiàng)目介紹1.1項(xiàng)目背景協(xié)同辦公包括了行政管理、后勤服務(wù)、學(xué)習(xí)、納稅服務(wù)、空間等幾個(gè)子系統(tǒng);本次主要的開發(fā)功能是納稅服務(wù)子系統(tǒng)的部分模塊和基于納稅服務(wù)子系統(tǒng)信息的個(gè)人工作臺首頁。納稅服務(wù)子系統(tǒng)是辦稅 PC 前端或移動端的管理系統(tǒng),主要包括的功能有系統(tǒng)角色管理、用戶管理、信息發(fā)布管理、受理、納稅咨詢、易告知、服務(wù)預(yù)約、服務(wù)等模塊。1.2項(xiàng)目前期項(xiàng)目前期;一般是由客戶經(jīng)理從客戶那邊了解到有關(guān)該項(xiàng)目的招標(biāo)信息,然后開發(fā)公司再組織競標(biāo);編寫標(biāo)書和詳細(xì)的項(xiàng)目建設(shè)方案。這個(gè)階段一般由門和開發(fā)部門的管理層參與。建設(shè)方案由部門經(jīng)理或者項(xiàng)目經(jīng)理協(xié)助完成。項(xiàng)目建設(shè)方案中一般包括初步的系統(tǒng)功能、模塊設(shè)計(jì)、軟硬件設(shè)備

2、、開發(fā)組介紹等。提供這些信息給客戶后他們再評估相應(yīng)開發(fā)公司是否有承建系統(tǒng)能力。1.3需求分析當(dāng)項(xiàng)目中標(biāo)后,公司的客戶經(jīng)理、項(xiàng)目經(jīng)理再到客戶環(huán)境進(jìn)行詳細(xì)的需求調(diào)研,完成調(diào)研后將初步的調(diào)研結(jié)果轉(zhuǎn)化成正式的需求文檔。需求文檔是所有后續(xù)流程的基礎(chǔ)和非常重要的文檔,開發(fā)和測試都需要按照需求來開發(fā)測試。詳細(xì)需求見協(xié)同-納稅服務(wù)需求規(guī)格說明書.docx1.4設(shè)計(jì)在這個(gè)階段主要是針對需求進(jìn)行詳細(xì)的開發(fā)前的分析和對具體模塊的設(shè)計(jì)。在設(shè)計(jì)過程中可能包括到的有系統(tǒng)原型設(shè)計(jì)的完善、界面美工設(shè)計(jì)切圖、數(shù)據(jù)庫設(shè)計(jì)(概念、物理模型)等;最終需要出詳細(xì)設(shè)計(jì)說明書。見協(xié)同-納稅服務(wù)詳細(xì)設(shè)計(jì)說明書.docx1.5制定開發(fā)計(jì)劃在需

3、求和詳細(xì)設(shè)計(jì)都已經(jīng)確定的情況下;項(xiàng)目需要根據(jù)開發(fā)的時(shí)間和任務(wù)數(shù)來制定開發(fā)計(jì)劃;計(jì)劃中需要描述所有的開發(fā)階段,從需求階段到部署上線期間所有要做的任務(wù),每個(gè)任務(wù)對應(yīng)具體的開始時(shí)間、結(jié)束時(shí)間,前置任務(wù),工作時(shí)長,資源名稱。后續(xù)的開發(fā)都根據(jù)該計(jì)劃進(jìn)行在每周開周例會上確認(rèn)開發(fā)進(jìn)度是否和計(jì)劃保持一致,如果不一致則需要好相應(yīng)方案;保證能如期提交系統(tǒng)給到客戶。1.6開發(fā)根據(jù)開發(fā)計(jì)劃,項(xiàng)目經(jīng)理將組織開發(fā)團(tuán)隊(duì)完成具體的開發(fā)任務(wù),每周向公司部門、客戶主管匯報(bào)項(xiàng)目進(jìn)度。對應(yīng)具體的開發(fā)則熟悉、理解需求,明白設(shè)計(jì)文檔;按照計(jì)劃中時(shí)間點(diǎn)開發(fā)功能,提交代碼。2框架整合2.1新建數(shù)據(jù)庫及 web 項(xiàng)目2.1.1創(chuàng)建Tax 數(shù)據(jù)

4、庫- 創(chuàng)建數(shù)據(jù)庫CREATE DATABASETax DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;2.1.2新建 web 項(xiàng)目新建工作空間指定項(xiàng)目編碼(或工作空間編碼)為 utf-8,再建 web project,配置 buildpath引入 tomcat的包:如若對應(yīng)的MyEclipse 版本沒有上述的“MyEclipse Server Library”;可以選擇“My Eclipse Library”然后選擇 ee 的包。選擇對應(yīng)配置的 tomcat 版本即可。添加 jstl jar 包和驅(qū)動包;2.2框架整合2.2.1添加 str

5、uts2 的 jar 包和配置文件添加 jar 包:commons-fileupload-1.3.1.jar,commons-io-2.2.jar,commons-lang-2.4.jarcommons-lang3-3.2.jar,freemarker-2.3.19.jar,ognl-3.0.6.jar,struts2-core-2.x.jar,struts2-spring-plugin-2.x.jar,xwork-core-2.x.jar 到web-inf/lib 目錄下。添加 struts.xml 到 src 目錄下??稍凇皊truts-2.xappsstruts2-bl在 struts.

6、xml 中添加幾個(gè)常用屬性:WEB-INFclasses”下。配置 web.xml:添加 struts2 過濾器:2.2.2添加 hibernate 的 jar 包和配置文件添加 hibernate jar 包:hibernate3.jar,lib/required/*.jarlibjpahibernate-jpa-2.0-api-1.0.0.Final.jarlibbytecodecglibcglib-2.2.jar 到 web-inf/lib 目錄下。至于 hibernate.cfg.xml 文件,因項(xiàng)目使用 spring 來整合管理實(shí)體和數(shù)據(jù)庫的連接等 hibernate原本的工作,所以

7、這個(gè)配置文件不再需要。2.2.3添加 spring 的 jar 包和配置文件添加 spring3.0.2 中的 jar 包:添加 spring 配置文件 applicationContext.xml到 src 目錄下;在 web.xml 中spring器,啟動 spring 容器:struts2.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2*.action2.3整合測試項(xiàng)目2.3.1整合 struts 和 spring預(yù)期:如果可以在 action 中能夠正確調(diào)用 service 里面的方法執(zhí)行

8、并返回到一個(gè)頁面中;那么認(rèn)定 struts 和 spring 的整合是成功的。編寫 JUnit 測試類,測試 spring 加載是否正確:編寫 TestService 接口類 TestServiceImpl.springframework.web.context.ContextLoaderListenercontextConfigLocationclasspapplicationContext.xml在 applicationContext.xml 中添加 bean 掃描配置信息;這邊使用導(dǎo)入配置文件的方式配置。首先在 cn.test.conf 中建立 test-spring.xml,里面內(nèi)容

9、:里面的配置就是普通的 bean 掃描,只是將掃描范圍縮小了。將 test-spring.xml 導(dǎo)入到 applicationContext.xml 中如下:編寫 TestAction 類在 test 的 conf 文件夾下新建 test-struts.xml 中配置 TestAction :將 test-struts.xml 導(dǎo)入到 struts.xml 文件中。在 webRoot 目錄下新建 test/test.jsp在瀏覽器中輸入:的打印信息。查看是否能輸入 service 中2.3.2整合 hibernate 和 spring在 applicationContext.xml 中配置如

10、下原本在 hibernate.cfg.xml 中需要配置的信息,在 spring中配置后 hibernate.cfg.xml 可刪除。1、 配置 c3p0 數(shù)據(jù)庫連接源:/WEB-INF/jsp/test/test.jsp2、 perties3、 配置 sesFactory,并將 dataSource 指向 c3p0 創(chuàng)建的 dataSource:編寫實(shí)體類和對應(yīng)的文件.hbm.xml:.hibernate.dialect.5Dialecttrueupdatenone/*/entity/*.hbm.xml/test/entity/*.hbm.xmljdbcUrl=jdbc:/loc

11、alhost:3306/Tax?useUnicode=true&characterEncoding=utf8.jdbc.Driveruser=root password=rootinitialPoolSize=10 maxPoolSize=30文件的頭部信息:DTD 3.0/EN編寫完實(shí)體文件后,用 JUnit 測試 hibernate 和 spring 的整合,在測試用例中啟動 spring容器的時(shí)候?qū)呙桀惛鶕?jù)其創(chuàng)建數(shù)據(jù)庫表,并在測試時(shí)將向表一條數(shù)據(jù)。測試 hibernate,添加一個(gè)測試框架分層的整合(service 與)Test中新增方法 save ,在 TestService 中通過

12、調(diào)用 test來保存信息。2.3.3配置 spring 事務(wù)管理【注意:上面的 pocutexpres表示execution(* cn.service.impl.*.*(.)】以 Service 結(jié)尾的 bean,或者可寫成完善 TestService 接口和 TestServiceImpl;利用 service 中的操作來驗(yàn)證上面配置的事務(wù)管理是否生效。測試方法中Service 中2.4資源文件分類1、 將配置文件歸類到新建 config 文件夾;2、 源代碼目錄按照功能模塊進(jìn)行劃分:cn.3、 Jsp 放置到 WEB-INF 目錄下;4、 其它:.子系統(tǒng).功能模塊.*2.5日志工具配置在控

13、制臺會報(bào)出日志 log4j 沒有配置好配置文件的信息。Slf4j 接口 jar(slf4j-log4j12-1.6.1.jar)log4j 的 jar 包(com.springsource.apache.log4j-1.2.15),配置 perties 文件。測試:2.6編寫基類 Base基類中配備增刪改查的操作。獲取泛型類型:/ 使用反射得到 T 的真實(shí)類型ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); /獲取當(dāng)前 new 的對象的 泛型的父類 類型this

14、.clazz = (Class) pt.getActualTypeArguments()0; / 獲取第一個(gè)類型參數(shù)的真實(shí)類型3用戶管理3.1實(shí)現(xiàn) CRUD 的步驟及用戶實(shí)體文件1、 用戶實(shí)體類及文件:Usre.java 和 User.hbm.xml2、 實(shí)現(xiàn) User、UserImpl,直接繼承 Base、BaseImpl;3、 編寫 UserService、UserService 類,里面包括 base4、 UserAction 中要實(shí)現(xiàn)增刪改查,需要 6 個(gè)方法;中的基本方法;約定需要跳轉(zhuǎn)到頁面的方法以 UI結(jié)尾,如果 addUI 則說明這是跳轉(zhuǎn)到添加頁面,需要對應(yīng)一個(gè) addUI.js

15、p。在刪除、修改、添加完成后應(yīng)該返回列表頁面,這時(shí)為了避免重復(fù)提交返回使用重定向。配置 user-spring.xml ,并 將 其 導(dǎo) 入 到applicatoinContext.xml 中 設(shè) 置 所 有 業(yè) 務(wù)applicationContext.xml 中 ,然后在 的父類 ,為 中的 baseHibernateSupport 注入 sesFactory。在 user-spring.xml 中的內(nèi)容:3.2實(shí)現(xiàn)用戶管理的 CRUD 方法及顯示列表在 UserAction 中至少需要有的 6 個(gè)方法:listUI() - 返回到列表頁面對應(yīng) listUI.jsp addUI() - 返回

16、到添加頁面對應(yīng) addUI.jsp add() - 重定向到 listUIedit() - 重定向到 listUIeditUI() - 返回到編輯頁面對應(yīng) editUI.jsp delete() - 刪除用戶完后重定向到 listUI設(shè)置完 action 后,配置 user-struts.xml 文件,里面對應(yīng)各個(gè)方法對應(yīng)的頁面;最后將user-struts.xml 包含到 struts.xml 文件中。接下來引入美工設(shè)計(jì)好的頁面;將數(shù)據(jù)與頁面結(jié)合展示。3.3完成美工設(shè)計(jì)頁面顯示將美工設(shè)計(jì)好的頁面到項(xiàng)目中:將 js、css、image、分別放置到 WebRoot 目錄下;其它的 jsp 對應(yīng)頁

17、面填充動態(tài)數(shù)據(jù)。完成后針對 jsp對應(yīng)大多數(shù)頁面樣式和 jquery 都是需要的,所以把公共樣式和 jquery、struts庫等信息抽出到一個(gè) header.jsp 文件中,將此文件放入 common 公共文件目錄。3.4批量刪除在 用 戶 列 表 listUI.jsp 中設(shè)置好復(fù)選框 input type=checkbox name=selectedRowvalue=/ ,點(diǎn)擊操作欄中的刪除執(zhí)行 js提交用戶列表表單到后臺 UserAction,在 action 中使用數(shù)組接收勾選的用戶 id,然后在對該數(shù)組進(jìn)行遍歷刪除。Js:3.5日期組件 wdatcker導(dǎo)入 WdataPicker

18、文件包到項(xiàng)目的 js 文件夾下;在用戶管理中的添加、編輯 jsp 頁面對生日表單項(xiàng)引入日期組件:用法:回顯時(shí),注意設(shè)置好顯示格式;可以如下設(shè)置:3.6頭像上傳在用戶管理的添加、編輯頁面中,可以上傳用戶的頭像;頁面中對頭像字段的文本域。type=file之后 UserAction 接收文件需要配置的 3 個(gè)基本屬性變量:將頭像文件保存在服務(wù)器的 upload/user 目錄下,文件的名稱以 uuid 重命名。(必須重命名:重名問題特殊字符在顯示時(shí))3.7批量導(dǎo)入、導(dǎo)出查閱POI 操作 excel.doc 先了解 POI,使用 POI 工具類導(dǎo)出用戶數(shù)據(jù)到 excel 中。導(dǎo)出:在用戶管理頁面中點(diǎn)

19、擊“導(dǎo)出”,將所有用戶導(dǎo)出到 excel 中。在 userService 中將調(diào)用導(dǎo)出工具類 ExcelUtil 導(dǎo)出數(shù)據(jù)。導(dǎo)入:在用戶管理頁面中,上傳包含用戶列表的 excel 文檔,然后點(diǎn)擊“導(dǎo)入”將 excel 中的用戶的用戶表中,并顯示在列表上。 UserAction 中接受導(dǎo)入文件 UserServiceImpl 中具體處理導(dǎo)入文件3.8表單校驗(yàn)在用戶的新增、編輯中對帳號、進(jìn)行非空校驗(yàn)和帳號的唯一性校驗(yàn)。需要注意的是在編輯頁面中帳號的唯一性校驗(yàn)要排除當(dāng)前編輯的帳號,不然將出現(xiàn)無法保存的情況。1、 在 jsp 頁面中,分別進(jìn)行兩個(gè)時(shí)機(jī)的校驗(yàn),是在編輯帳號的表單域時(shí)需要到服務(wù)器中校驗(yàn)是否

20、已經(jīng)存在輸入的帳號;在提交表單時(shí)再次進(jìn)行校驗(yàn),避免在填寫表單時(shí)帳號已被使用的情況;2、 在 action 中,根據(jù)傳入的帳號和用戶 id 到用戶表中查找用戶,如果出現(xiàn)有任何該帳號已經(jīng)被使用。說明3、 在 service、中的代碼分別如下:UserServiceImpl 中實(shí)現(xiàn)的方法:UserImpl 中需要對傳入的 id 進(jìn)行判斷實(shí)現(xiàn)的方法:4抽取 BaseAction在 action 中繼承了 ActionSupport 和其它一些公共屬性,如 selectedRow 等;可能以后還會產(chǎn)生公共的內(nèi)容,所以應(yīng)該把這些共有的抽取出來,放入到一個(gè)基本 action 中,命名為 BaseAction

21、,讓它去繼承 ActionSupport 和其它公共屬性,其它的 action 只要繼承它就可以了。5系統(tǒng)異常處理當(dāng)在頁面中發(fā)送了請求,請求被系統(tǒng)處理時(shí)出現(xiàn)錯(cuò)誤時(shí),如果沒有特別處理在請求過程中出現(xiàn)的異常信息時(shí),那么返回給用戶的則是頁面呈現(xiàn)給用戶,可對這報(bào)錯(cuò)進(jìn)行處理。的異常信息頁面;為避免直接將這報(bào)錯(cuò)的5.1分層異常在本系統(tǒng)中的能出現(xiàn)相應(yīng)錯(cuò)誤。處理有分 3 個(gè)層,分別是 action、service 和層,每個(gè)層次都有可Action 層可能出現(xiàn)請求參數(shù)、返回結(jié)果有問題; Service 層則可能出現(xiàn)請求中要做的業(yè)務(wù)操作出現(xiàn)問題;出現(xiàn)了問題要根據(jù)實(shí)際情況判斷是否會影響本次操作結(jié)果,action 中

22、要根據(jù)異常信息進(jìn)行判斷然后確定是否操作成功;層也可能出現(xiàn)在操作數(shù)據(jù)庫時(shí)出現(xiàn)錯(cuò)誤;而此種錯(cuò)誤一般都是致命的會影響操作結(jié)果。以此;在 3 個(gè)層次中至少要有兩種類型的異常信息來標(biāo)識。制定總的系統(tǒng)異常類:Action 層異常類:Service 層異常類:5.2異常處理5.2.1全局異常在struts 總配置文件(struts.xml)中配置一個(gè)包括 全局異常和全局結(jié)果的package,然后讓其它所有的業(yè)務(wù)模塊的 struts 配置文件(*-struts.xml)繼承后便可處理由特定異常并處理。在總配置文件 struts.xml 中:拋出的在子業(yè)務(wù)模塊中的*-sturts.xml 中繼承總配置文件中的 package:在具體的處理代碼中拋出系統(tǒng)異常:如果在 action

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論