




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1.2項目前期項目前期;一般是由客戶經(jīng)理從客戶那邊了解到有關(guān)該項目的招標(biāo)信息,然后開發(fā)公司再組織競標(biāo);編寫標(biāo)書和詳細的項目建設(shè)方案。這個階段一般由門和開發(fā)部門的管理層參與。建設(shè)方案由部門經(jīng)理或者項目經(jīng)理協(xié)助完成。項目建設(shè)方案中一般包括初步的系統(tǒng)功能、模塊設(shè)計、軟硬件設(shè)備、開發(fā)組介紹等。提供這些信息給客戶后他們再評估相應(yīng)開發(fā)公司是否有承建系統(tǒng)能力。1.3需求分析當(dāng)項目中標(biāo)后,公司的客戶經(jīng)理、項目經(jīng)理再到客戶環(huán)境進行詳細的需求調(diào)研,完成調(diào)研后將初步的調(diào)研結(jié)果轉(zhuǎn)化成正式的需求文檔。需求文檔是所有后續(xù)流程的基礎(chǔ)和非常重要的文檔,開發(fā)和測試要按照需求來開發(fā)測試。詳細需求見協(xié)同平臺-納稅服務(wù)需求規(guī)格說明書
2、.docx1.4設(shè)計在這個階段主要是需求進行詳細的開發(fā)前的分析和對具體模塊的設(shè)計。在設(shè)計過程中可能包括到的原型設(shè)計的完善、界面美工設(shè)計切圖、數(shù)據(jù)庫設(shè)計(概念、物理模型)等;最終需要出詳細設(shè)計說明書。見協(xié)同平臺-納稅服務(wù)詳細設(shè)計說明書.docx1.5制定開發(fā)計劃在需求和詳細設(shè)計都已經(jīng)確定的情況下;項目需要根據(jù)開發(fā)的時間和任務(wù)數(shù)來制定開發(fā)計劃;計劃中需要描述所有的開發(fā)階段,從需求階段到部署上線期間所有要做的任務(wù),每個任務(wù)對應(yīng)具體的開始時間、結(jié)束時間,前置任務(wù),工作時長,名稱。后續(xù)的開發(fā)都根據(jù)該計劃進行在每周開周例會上確認(rèn)開發(fā)進度是否和計劃保持一致,如果不一致則需要好相應(yīng)方案;保證能如期提交系統(tǒng)給到
3、客戶。1.6開發(fā)根據(jù)開發(fā)計劃,項目經(jīng)理將組織開發(fā)團隊完成具體的開發(fā)任務(wù),每周向公司部門、客戶主管匯報項目進度。對應(yīng)具體的開發(fā)則熟悉、理解需求,明白設(shè)計文檔;按照計劃中時間點開發(fā)功能,提交代碼。2框架整合2.1新建數(shù)據(jù)庫及 web 項目2.1.1創(chuàng)建 itcastTax 數(shù)據(jù)庫- 創(chuàng)建數(shù)據(jù)庫CREATE DATABASE itcastTax DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;2.1.2新建 web 項目新建工作空間指定項目編碼(或工作空間編碼)為 utf-8,再建 web project,配置 buildpath引入應(yīng)用服務(wù)器
4、tomcat 的包:選擇對應(yīng)配置的 tomcat 版本即可。如若對應(yīng)的MyEclipse 版本沒有上述的“MyEclipse Server Library”;可以選擇“My Eclipse Library”然后選擇 ee 的包。需要連接 mysql 數(shù)據(jù)庫,再添加 mysql 驅(qū)動包。2.2框架整合2.2.1添加 struts2 的 jar 包和配置文件1、添加 struts2 jar 包到web-inf/lib 目錄下;2、添加 struts.xml 到 src 目錄下??稍凇皊truts-2.xappsstruts2-blankWEB-INFclasses”下復(fù)制。在 struts.xml
5、 中添加幾個常用屬性:3、配置 web.xml:添加 struts2 過濾器:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><!- 禁用動態(tài)方法-><constant name="struts.enable.DynamicMethodInvocat
6、ion" value="false" /><!- 配置成開發(fā)模式 -><constant name="struts.devMode" value="true" /><!- 配置拓展名為 action -><constant name="struts.action.extention" value="action" /><!- 把主題配置成 simple -><constant name="struts.u
7、i.theme" value="simple" />2.2.2添加 hibernate 的 jar 包和配置文件添加 hibernate jar 包到 web-inf/lib 目錄下;至于 hibernate.cfg.xml 文件,因項目使用 spring 來整合管理實體和數(shù)據(jù)庫的連接等 hibernate原本的配置,所以這個配置文件不再需要。2.2.3添加 spring 的 jar 包和配置文件添加 spring jar 包到 web-inf/lib 目錄下添加 spring 配置文件 applicationContext.xml 到 src 目錄下;在
8、web.xml 中spring器,啟動 spring 容器:2.3整合測試項目2.3.1整合 struts 和 spring預(yù)期:如果可以在 action 中能夠正確調(diào)用 service 里面的方法執(zhí)行并返回到一個頁面中;那么我們認(rèn)定 struts 和 spring 的整合是的。編寫 JUnit 測試類,測試 spring 加載是否正確:<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
9、;<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern></filter-
10、mapping>編寫TestService 接口和實現(xiàn)類TestServiceImpl在 applicationContext.xml 中添加 bean 掃描配置信息;這邊使用導(dǎo)入配置文件的方式配置。首先在 cn.itcast.test.conf 中建立 test-spring.xml(可以applicationContext.xml 內(nèi)容)里面的配置就是普通的 bean 掃描,只是將掃描范圍縮小了。<!- service -><context:component-scan base-package="cn.itcast.test.service.impl&q
11、uot; />將 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 中配置如下原本在 hibernate.cfg.xm
12、l 中需要配置的信息,在 spring中配置后 hibernate.cfg.xml 可刪除。1、 配置 c3p0 數(shù)據(jù)庫連接源:<!- 導(dǎo)入外部的 properties 配置文件 -><context:property-placeholder location="classpath:perties" /><!- 配置 c3p0 數(shù)據(jù)源 -><include file="cn/itcast/test/conf/test-struts.xml"/><struts><package
13、name="test" namespace="/" extends="struts-default"><action name="test_*" class="cn.itcast.test.action.TestAction" method="1"><result name="success">/WEB-INF/jsp/test/test.jsp</result></action></packag
14、e></struts><import resource="classpath:cn/itcast/*/conf/*-spring.xml" />2、 perties3、 配置 sessionFactory,并將 dataSource 指向 c3p0 創(chuàng)建的 dataSource:<bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><propert
15、y name="dataSource" ref="dataSource"></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop><prop key="hibernate.show_sql">true</prop>
16、;<prop key="hibernate.hbm2ddl.auto">update</prop><prop key="javax.persistence.validation.mode">none</prop></props></property><property name="mappingLocations"><list><value>classpath:cn/itcast/*/entity/*.hbm.xml</v
17、alue><value>classpath:cn/itcast/test/entity/*.hbm.xml</value>jdbcUrl=jdbc:mysql:/localhost:3306/itcastTax?useUnicode=true&characterEncoding=utf8 driverClass=com.mysql.jdbc.Driveruser=root password=rootinitialPoolSize=10 maxPoolSize=30<beanid="dataSource"class="co
18、m.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><property name="jdbcUrl" value="$jdbcUrl"></property><property name="driverClass" value="$driverClass"></property><property name="user" value
19、="$user"></property><property name="password" value="$password"></property><!-初始化時獲取三個連接,取值應(yīng)在 minPoolSize 與maxPoolSize 之間。Default: 3 -><property name="initialPoolSize" value="$initialPoolSize"></property><!-連
20、接池中保留的最小連接數(shù)。Default: 3 -><property name="minPoolSize" value="3"></property><!-連接池中保留的最大連接數(shù)。Default: 15 -><property name="maxPoolSize" value="$maxPoolSize"></property><!-當(dāng)連接池中的連接耗盡的時候 c3p0 一次同時獲取的連接數(shù)。Default: 3 -><prope
21、rty name="acquireIncrement" value="3"></property><!-最大空閑時間,1800 秒內(nèi)未使用則連接被丟棄,若為 0 則永不丟棄。Default: 0-><property name="maxIdleTime" value="1800"></property></bean>編寫實體類和對應(yīng)的文件.hbm.xml:文件的頭部信息:<?xml version="1.0" encodin
22、g="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-/Hibernate/Hibernate Mapping DTD 3.0/EN""">編寫完實體文件后,用 JUnit 測試 hibernate 和 spring 的整合,在測試用例中啟動 spring容器的時候?qū)呙桀惛鶕?jù)其創(chuàng)建數(shù)據(jù)庫表,并在測試向表一條數(shù)據(jù)。測試 hibernate,添加一個</list></property></bean>2.3.3配置 spring 事務(wù)管理【注意
23、:上面的 pointcutexpression 表示execution(* cn.itcast.service.impl.*.*(.)】以 Service 結(jié)尾的 bean,或者可寫成完善 TestService 接口和 TestServiceImpl;利用 service 中的操作來驗證上面配置的事務(wù)管理是否生效。添加 dao 層代碼并配置 dao 信息到 test-spring.xml 文件中;準(zhǔn)備事務(wù)測試<!事務(wù)管理-><bean id="txManager"class="org.springframework.orm.hibernate4
24、.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!事務(wù)通知-><tx:advice id="txAdvice" transaction-manager="txManager"><tx:attributes><tx:method name="find*" read-only=&qu
25、ot;true" /><tx:method name="get*" read-only="true" /><tx:method name="load*" read-only="true" /><tx:method name="list*" read-only="true" /><tx:method name="search*" read-only="true" /><
26、tx:method name="*" rollback-for="Throwable" /></tx:attributes></tx:advice><!配置需要進行事務(wù)的類 -><aop:config><aop:pointcut id="serviceOperation" expression="bean(*Service)" /><aop:advisor advice-ref="txAdvice" pointcut-ref
27、="serviceOperation" /></aop:config>測試方法Dao 中Service 中2.4文件分類1、 將配置文件歸類到新建 config 文件夾;2、 源代碼目錄按照功能模塊進行劃分:cn.itcast.子系統(tǒng).功能模塊.*3、 Jsp 放置到 WEB-INF 目錄下;4、 其它:2.5日志工具配置在臺會報出日志 log4j 沒有配置好配置文件的信息。引入 slf4j 的 jar 包和 log4j 的 jar 包及其配置文件,配置 perties 文件。測試:2.6編寫基類 BaseDaoDAO 基類中配備增刪改查
28、的操作。獲取泛型類型:/ 使用反射得到 T 的真實類型ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); /獲取當(dāng)前 new 的對象的 泛型的父類 類型this.clazz = (Class<T>) pt.getActualTypeArguments()0; / 獲取第一個類型參數(shù)的真實類型3用戶管理3.1實現(xiàn) CRUD 的步驟及用戶實體文件1、 用戶實體類及文件:Usre.java 和 User.hbm.xml2、 實現(xiàn) UserDao、UserDaoImpl,直接繼
29、承 BaseDao、BaseDaoImpl;3、 編寫 UserService、UserService 類,里面包括 baseDao 中的基本方法;4、 UserAction 中要實現(xiàn)增刪改查,需要 6 個方法;我們約定需要跳轉(zhuǎn)到頁面的方法以 UI 結(jié)尾,如果 addUI 則說明這是跳轉(zhuǎn)到添加頁面,需要對應(yīng)一個 addUI.jsp。在刪除、修改、添加完成后應(yīng)該返回列表頁面,這時為了避免重復(fù)提交返回使用重定向。配置 user-spring.xml ,并 將 其 導(dǎo) 入 到applicationContext.xml 中 ,然后在 applicatoinContext.xml 中 設(shè) 置 所 有
30、業(yè) 務(wù) dao 的父類 dao ,為 HibernateDaoSupport 注入 sessionFactory。baseDao 中的 在 user-spring.xml 中的內(nèi)容:3.2實現(xiàn)用戶管理的 CRUD 方法及顯示列表在 UserAction 中至少需要有的 6 個方法:listUI() - 返回到列表頁面對應(yīng) listUI.jsp addUI() - 返回到添加頁面對應(yīng) addUI.jsp add() - 重定向到 listUIedit() - 重定向到 listUIeditUI() - 返回到編輯頁面對應(yīng) editUI.jspdelete() - 刪除用戶重定向到 listUI設(shè)
31、置完 action 后,配置 user-struts.xml 文件,里面對應(yīng)各個方法對應(yīng)的頁面;最后將user-struts.xml 包含到 struts.xml 文件中。<!- 所有 dao 的 parent -><bean name="baseDao" abstract="true"><property name="sessionFactory" ref="sessionFactory"/></bean>接下來引入美工設(shè)計好的頁面;將數(shù)據(jù)與頁面結(jié)合展示。3.3完成
32、美工設(shè)計頁面顯示將美工設(shè)計好的頁面到項目中:將 js、css、image、分別放置到 WebRoot 目錄下;其它的 jsp 對應(yīng)頁面填充動態(tài)數(shù)據(jù)。完成后jsp對應(yīng)大多數(shù)頁面樣式和 jquery 都是需要的,所以我們把公共樣式和 jquery、struts信息抽出到一個 header.jsp 文件中,將此文件放入 common 公共文件目錄。庫等3.4批量刪除在 用 戶 列 表 listUI.jsp 中設(shè)置好復(fù)選框 <input type="checkbox" name="selectedRow"value='<s:property
33、value="id"/>'/> ,點擊操作欄中的刪除執(zhí)行 js提交用戶列表表單到后臺 UserAction,在 action 中使用數(shù)組接收的用戶 id,然后在對該數(shù)組進行遍歷刪除。3.5日期組件 wdatepicker導(dǎo)入 WdataPicker 文件包到項目的 js 文件夾下;在用戶管理中的添加、編輯 jsp 頁面對生日表單項引入日期組件:用法:回顯時,注意設(shè)置好顯示格式;可以如下設(shè)置:3.6頭像上傳在用戶管理的添加、編輯頁面中,可以上傳用戶的頭像;頁面中對頭像字段的文本域。<input type="file" name=&
34、quot;headImg"/>type=file之后 UserAction 接收文件需要配置的 3 個基本屬性變量:將頭像文件保存在服務(wù)器的 upload/user 目錄下,文件的名稱以 uuid 重命名。(必須重命名:重名問題特殊字符在顯示時的問題)<s:textfield id="birthday" name="user.birthday" readonly="true"onfocus="WdatePicker(skin:'whyGreen', el:'birthday
35、9;,dateFmt:'yyyy-MM-dd')"><s:paramname="value"><s:datename='user.birthday' format='yyyy-MM-dd' /></s:param></s:textfield><s:textfield id="birthday" name="user.birthday" readonly="true"onfocus="Wda
36、tePicker(skin:'whyGreen', el:'birthday',dateFmt:'yyyy-MM-dd')"/><script type="text/javascript" src="$basePathjs/datepicker/WdatePicker.js"></script>3.7批量導(dǎo)入、導(dǎo)出查閱POI 操作 excel.doc 先了解 POI,使用 POI 工具類導(dǎo)出用戶數(shù)據(jù)到 excel 中。導(dǎo)出:在用戶管理頁面中點擊“導(dǎo)出”,將所有用戶導(dǎo)出
37、到 excel 中。在 userService 中將調(diào)用導(dǎo)出工具類 ExcelUtil 導(dǎo)出數(shù)據(jù)。導(dǎo)入:在用戶管理頁面中,上傳包含用戶列表的 excel 文檔,然后點擊“導(dǎo)入”將 excel 中的用戶的用戶表中,并顯示在列表上。 UserAction 中接受導(dǎo)入文件 UserServiceImpl 中具體處理導(dǎo)入文件3.8表單校驗在用戶的新增、編輯中對帳號、進行非空校驗和帳號的唯一性校驗。需要注意的是在編輯頁面中帳號的唯一性校驗要排除當(dāng)前編輯的帳號,不然將出現(xiàn)無法保存的情況。1、 在 jsp 頁面中,分別進行兩個時機的校驗,是在編輯帳號的表單域時需要到服務(wù)器中校驗是否已經(jīng)存在輸入的帳號;在提交
38、表單時再次進行校驗,避免在填寫表單時帳號已被使用的情況;2、 在 action 中,根據(jù)傳入的帳號和用戶 id 到用戶表中查找用戶,如果出現(xiàn)有任何該帳號已經(jīng)被使用。說明3、 在 service、dao 中的代碼分別如下:UserServiceImpl 中實現(xiàn)的方法:UserDaoImpl 中需要對傳入的 id 進行實現(xiàn)的方法:4抽取 BaseAction在 action 中繼承了 ActionSupport 和其它一些公共屬性,如 selectedRow 等;可能以后還會產(chǎn)生公共的內(nèi)容,所以應(yīng)該把這些共有的抽取出來,放入到一個基本 action 中,我們命名為 BaseAction,讓它去繼承
39、 ActionSupport 和其它公共屬性,其它的 action 只要繼承它就可以了。5系統(tǒng)異常處理當(dāng)在頁面中了請求,請求被系統(tǒng)處理時出現(xiàn)錯誤時,如果沒有特別處理在請求過程中出現(xiàn)的異常信息時,那么返回給用戶的則是頁面呈現(xiàn)給用戶,可對這報錯進行處理。的異常信息頁面;為避免直接將這報錯的5.1分層異常中的能出現(xiàn)相應(yīng)錯誤。處理有分 3 個層,分別是 action、service 和 dao 層,每個層次都有可Action 層可能出現(xiàn)請求參數(shù)、返回結(jié)果有問題; Service 層則可能出現(xiàn)請求中要做的業(yè)務(wù)操作出現(xiàn)問題;出現(xiàn)了問題要根據(jù)實際情況是否會影響本次操作結(jié)果,action 中要根據(jù)異常信息進行
40、然后確定是否操作; dao 層也可能出現(xiàn)在操作數(shù)據(jù)庫時出現(xiàn)錯誤;而此種錯誤一般都是致命的會影響操作結(jié)果。以此;在 3 個層次中至少要有兩種類型的異常信息來標(biāo)識。制定總的系統(tǒng)異常類:Action 層異常類:Service 層異常類:5.2異常處理5.2.1全局異常在struts 總配置文件(struts.xml)中配置一個包括 全局異常和全局結(jié)果的package,然后讓其它所有的業(yè)務(wù)模塊的 struts 配置文件(*-struts.xml)繼承后便可處理由特定異常并處理。在總配置文件 struts.xml 中:拋出的在子業(yè)務(wù)模塊中的*-sturts.xml 中繼承總配置文件中的 package:
41、在具體的處理代碼中拋出系統(tǒng)異常:如果在 action 中只拋出了 ActionException,那么非此異常出現(xiàn)時,如果在全局異常中配置了 java.lang.Exception 異常類的,同樣可以捕獲。5.2.2制定返回類型(StrutsResultSupport)在有特殊情況時;如果沒有異常信息,但是有錯誤并且有錯誤信息等內(nèi)容;此時也需要進行友好的錯誤處理的話,那么可以借助 StrutsResultSupport 返回結(jié)果類型來實現(xiàn)特定處理。此種需要繼承 StrutsResultSupport ,然后可以在子類中獲取本次請求的相關(guān)信息,再根據(jù)相關(guān)信息進行結(jié)果處理:在 struts.xml
42、 總配置文件中定義全局處理類型和全局處理結(jié)果:管理66.1與權(quán)限說明與權(quán)限的關(guān)系6.1.1系統(tǒng)中可以存在多個,每個可以自由的組合系統(tǒng)定義的權(quán)限集合。即和權(quán)限的與關(guān)系是多對多的關(guān)系。為了保存這種多對多關(guān)系,需要一個權(quán)限表來保存。權(quán)限的關(guān)系是一對多的關(guān)系;而權(quán)限與權(quán)限的關(guān)系也為一對多關(guān)系。6.1.2定義系統(tǒng)權(quán)限集將系統(tǒng)中需要使用到的權(quán)限先定義出來:粗粒度的分為各個子系統(tǒng)的以定義在常量文件中。權(quán)限;這些權(quán)限可6.2管理 CRUD實體類及文件6.2.1 Role/Role.hbml.xml RolePrivilege/RolePrivilegeId,RolePrivilege.hbm.xml6.2.2
43、dao、service 層主要操作方法dao 中主要方法:service 中主要方法:6.2.3action 中主要方法6.2.4配置文件配置 role-spring.xml 及 role-struts.xml,并將 role-struts.xml 加入到 struts.xml 總配置文件中。6.3用戶說明一個用戶可以對應(yīng)多個,一個可以對應(yīng)多個用戶。用戶與的關(guān)系也是多對多的;并且用戶不直接關(guān)關(guān)系。在頁面中應(yīng)該體現(xiàn)出在添加、編輯用戶時可以選擇多個統(tǒng)的權(quán)限,用戶的權(quán)限都是通過來關(guān)聯(lián)實現(xiàn)。6.4改造用戶管理6.4.1用戶表實體類、文件的改造新增“用戶”實體及文件:6.4.2用戶保存、更新、刪除方法改
44、造1、 UserAction:在跳轉(zhuǎn)到 addUI 時應(yīng)該初始化系統(tǒng)的所有列表提供添加頁面進行選擇:更新方法:在 UserDaoImpl 中:UserServiceImpl 類中:2、 在 jsp 頁面中將選擇改造為多選:7權(quán)限驗證7.1系統(tǒng)首頁1、 編寫首頁 cn.itcast.home.HomeAction類的內(nèi)容就一個跳轉(zhuǎn)到首頁的方法:public class HomeAction extends ActionSupport /系統(tǒng)首頁2、 配置 home-struts.xml 文件將 home-struts.xml 加入到 struts.xml 中將 home.jsp 加入到項目的 W
45、EB-INF/jsp/home 目錄下,修改進入納稅服務(wù)首頁的。7.2納稅服務(wù)首頁新增納稅服務(wù)的首頁對應(yīng)的 cn.itcast.home.action.HomeAction,里面就只包含 3 個方法,分別轉(zhuǎn)向 frame.jsp、top.jsp、left.jsp 的方法:配置 home-struts.xml 并包含到 struts.xml 中。之后引入 welcome.jsp、bg.jsp 到 common 目錄下,frame.jsp、top.jsp、left.jsp 三個 jsp 文件到 WEB-INF/jsp/目錄下并修改這 3 個頁面中的和相關(guān)信息。<struts><p
46、ackage name="home" namespace="/sys" extends="struts-default"><action name="home_*" class="cn.itcast.home.action.HomeAction" method="1"><result name="home">/WEB-INF/jsp/home/home.jsp</result><result name=&qu
47、ot;1">/WEB-INF/jsp/home/1.jsp</result></action></package></struts>public String execute() return "home"7.3登錄與注銷7.3.1登錄與注銷編寫 LoginAction在這個 action 中;主要處理登錄和注銷操作;方法應(yīng)該包括:1、 跳轉(zhuǎn)到登錄頁;toLoginUI()loginUI2、 當(dāng)沒限時,跳轉(zhuǎn)到?jīng)]限的提示頁面;toNoPermissionUI()noPermissionUI3、 登錄
48、方法;錄。需要具體的 userService,userDao 方法。userDaoImpl 類中具體的實現(xiàn)方法為:4、 注銷登錄;logout()tologinUILoginAction 類(代碼片段):配置 login-struts.xml 文件并引入 struts.xml 中。項目首頁重定向到登錄頁改寫 WebRoot 下面的 index.jsp,在里面沒有登錄情況下直接重定向到登錄頁;如已經(jīng)登錄則跳轉(zhuǎn)到系統(tǒng)首頁。7.4權(quán)限驗證說明在系統(tǒng)中, 需要驗證用戶的登錄,只有登錄后才能系統(tǒng)的。 納稅服務(wù)子系統(tǒng)只有擁有“納稅服務(wù)”權(quán)限的才可以操作。對于上述 2 種的權(quán)限驗證,在此采用過
49、濾器進行處理。編寫 LoginFilter 過濾器,在過濾器中對用戶的 url 進行登錄驗證,在登錄的前提下再次驗證如果的是納稅服務(wù)命名空間下的則利用權(quán)限驗證接口 PermissionCheck 校驗用戶是否有“納稅服務(wù)”。7.4.1登錄過濾器編寫過濾器 cn.itcast.core.filter.LoginFilter 類;實現(xiàn) javax.servlet.Filter 接口:<%pagelanguage="java"import="java.util.*,cn.itcast.core.constant.*" pageEncoding="
50、;utf-8"%><%if(session.getAttribute(Constants.USER) != null)/已登錄,跳轉(zhuǎn)到系統(tǒng)首頁response.sendRedirect(request.getContextPath() + "/sys/home.action"); else /未登錄,跳轉(zhuǎn)到登錄頁面response.sendRedirect(request.getContextPath() + "/sys/login_toLoginUI.action");%>在 web.xml 中配置該過濾器:7.4.2鑒定權(quán)
51、限在過濾器中加入權(quán)限的鑒定;當(dāng)用戶登錄的情況下如果特定模塊需要驗證用戶是否有特定權(quán)限。由于權(quán)限常用于在用戶使用系統(tǒng)時權(quán)限的鑒定,所以可以在用戶實體中加入一個用戶權(quán)限的集合來保存用戶的集合。新增用戶類中列表屬性 userRoles 用于存放用戶的列表。PermissionCheck/PermissionCheckImpl<filter><filter-name>loginFilter</filter-name><filter-class>cn.itcast.core.filter.LoginFilter</filter-class>&l
52、t;/filter><filter-mapping><filter-name>loginFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping>在 applicationContext.xml 中需要限時可以注入其它 Service。PermissionCheck Bean,主要是為了方便在使用鑒定權(quán)7.5解決細節(jié)-登錄頁面嵌套在納稅服務(wù)的首頁中使用了 frameset,當(dāng)前用戶的系統(tǒng)登錄信息失效后;如果再點擊左邊的菜單,那么在右
53、邊的顯示登錄頁面,而正確的應(yīng)該是整個頁面返回到登錄頁。解決這個問題:應(yīng)該在跳轉(zhuǎn)到登錄頁面中使用 js,是否當(dāng)前頁面在框架內(nèi),即當(dāng)前頁面的窗口是否是頂級窗口,如果是子窗口的話;可以直接刷新父窗口的地址則會自動地整個頁面跳轉(zhuǎn)為登錄頁。8信息發(fā)布管理8.1實現(xiàn)信息發(fā)布管理 CRUD8.1.1編寫信息實體文件編寫信息實體類 Info 及其文件 Info.hbm.xml設(shè)置“信息分類”、“狀態(tài)”的常量信息,其中信息分類需要設(shè)置一個靜態(tài) MAP 包括信息分類用于在頁面的顯示。8.1.2實現(xiàn)信息發(fā)布管理1、 編寫 InfoDao/InfoDaoInfo2、 編寫 InfoService/InfoServic
54、eImpl3、 編寫 InfoAction4、 編寫 info-struts.xml 和 info-spring.xml,并將 info-struts.xml 引入struts.xml5、 引入美工頁面并修改6、 實現(xiàn)頁面中添加、編輯、刪除8.2富文本編輯器 Ueditor地址:ueditor1.4.3 utf8-Jsp 版本。完整 demo 可參考文件中的index.html導(dǎo)入 ueditor 到項目中;將 ueditor 導(dǎo)入到項目的 js 目錄下。導(dǎo)入 ueditor/jsp/lib 目錄中的“commons-codec-1.9.jar”、“json.jar”、“ueditor-1.1
55、.1.jar”這幾個 jar 包到項目的 web-inf/lib目錄中。配置 ueditor 中圖片上傳前綴和路徑;打開“ueditor/jsp/config.json”<script type="text/javascript">if(window != window.parent)window.parent.location.reload(true);</script>注意:修改web.xml 中 struts 過濾器的過濾規(guī)則,將/*改為 *.action 。避免引起 struts 過濾器把 ueditor 的圖片等上傳 jsp 給而導(dǎo)致上傳圖
56、片等失敗。引入 ueditor 到 jsp 頁面,在 ueditor 的 ueditor.config.js 文件中,要求我們需要配置好 ueditor的根目錄地址;在我們頁面時也需要在 js 中制定 UEDITOR_HOME_URL 的路徑。運用到頁面時我們只需要將一個 textarea 的表單項的 id 和 euditor 實例化時的 id 一致即可。將下面內(nèi)容引入到 jsp 頁面中:8.3異步信息發(fā)布在 InfoAction 中新增方法 publicInfo,主要用于修改信息的狀態(tài)。<s:textarea id="editor" name="info.content" cssStyle="width:90%;height:160px;" /><scripttype="text/javascript"charset="utf-8" src="$basePathjs/ueditor/ueditor.config.js"></script><scripttype="text/javascript"charset="utf-8" src="
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 撫順初中一模數(shù)學(xué)試卷
- 福州市初三沖刺數(shù)學(xué)試卷
- 阜寧二模數(shù)學(xué)試卷
- 肝炎護理課件
- 東城初中一模數(shù)學(xué)試卷
- 甘南藏族中考數(shù)學(xué)試卷
- 福建省廈門中考數(shù)學(xué)試卷
- 鎮(zhèn)街安全培訓(xùn)課件
- 2025年02月北京首都醫(yī)科大學(xué)附屬北京同仁醫(yī)院招聘5人筆試歷年專業(yè)考點(難、易錯點)附帶答案詳解
- 2025至2030軌道式氧流量計行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 消防檢測流程圖
- Excel模板:血壓記錄監(jiān)測表(自動圖表分析)
- 大健康趨勢課件
- 2023機場海關(guān)旅檢崗位練兵練習(xí)試題及答案
- 準(zhǔn)格爾旗煤層地質(zhì)特征
- 中國古代建筑欣賞(最全)
- 中央空調(diào)系統(tǒng)管理維修保養(yǎng)計劃表
- 總經(jīng)理績效考核評分表(示例)
- 人力資源試用期員工考核表
- 液相色譜-質(zhì)譜聯(lián)用的原理及應(yīng)用課件
評論
0/150
提交評論