新聞網(wǎng)新聞網(wǎng)信息管理系統(tǒng)_第1頁(yè)
新聞網(wǎng)新聞網(wǎng)信息管理系統(tǒng)_第2頁(yè)
新聞網(wǎng)新聞網(wǎng)信息管理系統(tǒng)_第3頁(yè)
新聞網(wǎng)新聞網(wǎng)信息管理系統(tǒng)_第4頁(yè)
新聞網(wǎng)新聞網(wǎng)信息管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

企業(yè)級(jí)JAVAⅡ課程設(shè)計(jì)文檔企業(yè)級(jí)JAVAⅡ課程設(shè)計(jì)文檔21-廣州大學(xué)華軟軟件學(xué)院2012年第六學(xué)期《企業(yè)級(jí)JAVAⅡ》課程設(shè)計(jì)

題目:新聞網(wǎng)、新聞網(wǎng)信息管理系統(tǒng)專業(yè):網(wǎng)絡(luò)應(yīng)用軟件開發(fā)班級(jí):IB01組長(zhǎng):鄧?yán)戆步M員:方泓清遞交日期:2012年6月4日編號(hào):時(shí)間:2021年x月x日書山有路勤為徑,學(xué)海無涯苦作舟頁(yè)碼:第65-頁(yè)共NUM頁(yè)目錄TOC\o"1-2"\h\z\u新聞網(wǎng)信息管理系統(tǒng)(后臺(tái)) 一八8549\h-1-一、系統(tǒng)執(zhí)行原理 一八8550\h-2-二、系統(tǒng)功能需求 一八8551\h-2-1、 系統(tǒng)功能描述 一八8552\h-2-三、數(shù)據(jù)庫(kù)設(shè)計(jì) 一八8553\h-4-1、數(shù)據(jù)庫(kù)使用MYSQL。2、相關(guān)各數(shù)據(jù)庫(kù)表: 一八8554\h-4-1、公共模塊設(shè)計(jì)與實(shí)現(xiàn) 一八8556\h-5-2.系統(tǒng)各功能模塊設(shè)計(jì)與實(shí)現(xiàn) 一八8557\h-一三-新聞聯(lián)播新聞網(wǎng)(前臺(tái)) 一八8558\h-29-一、系統(tǒng)執(zhí)行原理 一八8559\h-29-二、系統(tǒng)功能需求 一八8560\h-30-三、數(shù)據(jù)庫(kù)設(shè)計(jì) 一八8561\h-31-1、數(shù)據(jù)庫(kù)使用MYSQL。2、相關(guān)各數(shù)據(jù)庫(kù)表: 一八8562\h-31-四、系統(tǒng)實(shí)現(xiàn) 一八8563\h-33-1、公共模塊設(shè)計(jì)與實(shí)現(xiàn) 一八8564\h-33-系統(tǒng)各功能模塊設(shè)計(jì)與實(shí)現(xiàn) 一八8565\h-38-五、附錄 一八8566\h-60-新聞網(wǎng)信息管理系統(tǒng)(后臺(tái))上課班級(jí):IB01學(xué)號(hào):0940111147姓名:方泓清學(xué)號(hào):0940111145姓名:鄧?yán)戆惨?、系統(tǒng)執(zhí)行原理1.客戶機(jī)將HTTP請(qǐng)求發(fā)送給Web服務(wù)器2.Web服務(wù)器將該請(qǐng)求轉(zhuǎn)發(fā)給struts.xml3.在struts.xml中的action的type實(shí)現(xiàn)spring的請(qǐng)求代理4.在spring的配置文件中對(duì)action類進(jìn)行注入5.action類中注入sevice,service中注入dao,當(dāng)服務(wù)器啟動(dòng)時(shí),spring對(duì)類自動(dòng)設(shè)置。6.執(zhí)行順序從action>service>dao,然后返回。7.action將響應(yīng)發(fā)送給Web服務(wù)器8.Web服務(wù)器將響應(yīng)轉(zhuǎn)發(fā)給客戶機(jī)二、系統(tǒng)功能需求系統(tǒng)功能描述角色:管理員

功能描述:

(1)身份驗(yàn)證功能:管理員只有成功登錄后才可進(jìn)入系統(tǒng)管理新聞以及相關(guān)信息。

其流程圖如圖1-1-1所示:

圖1-1-1

(2)管理員:可增加、修改、刪除、查詢新聞信息;可修改密碼、增加管理員。

其流程圖如圖1-1-2所示:

圖1-1-2三、數(shù)據(jù)庫(kù)設(shè)計(jì)

1、數(shù)據(jù)庫(kù)使用MYSQL。

2、相關(guān)各數(shù)據(jù)庫(kù)表:

①管理員表admin(如圖1-2-1)

圖1-2-1

②新聞信息表news(如圖2-2)

圖1-2-2

四、系統(tǒng)實(shí)現(xiàn)

1、公共模塊設(shè)計(jì)與實(shí)現(xiàn)

①applicationContext.xml(位于NewsManage/WebRoot/WEB-INF目錄下)用于管理數(shù)據(jù)庫(kù)連接、Hibernate的sessionFactory、事務(wù)管理以及struts2的action。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd"> <!--定義c3p0數(shù)據(jù)源--> <beanid="dataSource"class="com.mchange.v2.c3p0xboPooledDataSource" destroy-method="close"> <!--指定連接數(shù)據(jù)庫(kù)驅(qū)動(dòng)--> <propertyname="driverClass"value="com.mysql.jdbc.Driver"/> <!--指定連接數(shù)據(jù)庫(kù)url--> <propertyname="jdbcUrl" value="jdbc:mysql://localhost:3306/newsmanage?useUnicode=true&characterEncoding=utf-8"/> <propertyname="user"value="root"/> <propertyname="password"value="57661一五69"/> </bean> <!--定義Hibernate的sessionFactory--> <beanid="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!--依賴注入上面所配置的數(shù)據(jù)源--> <propertyname="dataSource"ref="dataSource"/> <!--使用mappingResource屬性列出全部映射文件--> <propertyname="mappingResources"> <list> <value>com/sise/s2sh/po/Admin.hbm.xml</value> <value>com/sise/s2sh/po/News.hbm.xml</value> </list> </property> <!--配置Hibernate的sessionFactory的屬性--> <propertyname="hibernateProperties"> <props> <!--指定使用方言--> <propkey="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <!--是否在控制臺(tái)輸出hql語(yǔ)句--> <propkey="show_sql">true</prop> <propkey="hibernate.hbm2ddl.auto">update</prop> <propkey="hibernate.jdbc.batch_size">20</prop> </props> </property> </bean> <!--定義事務(wù)管理--> <beanid="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <propertyname="sessionFactory"ref="sessionFactory"/> </bean> <!--定義事務(wù)管理攔截器--> <beanid="transactionInterceptor" class="erceptor.TransactionInterceptor"> <propertyname="transactionManager"ref="transactionManager"/> <propertyname="transactionAttributes"> <props> <propkey="get*">PROPAGATION_REQUIRED,readOnly</prop> <propkey="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!--定義代理自動(dòng)管理事務(wù)--> <beanid="ProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <!--指定需要Spring管理事務(wù)的Bean--> <propertyname="beanNames"> <list> <value>adminService</value> <value>newsService</value> </list> </property> <!--調(diào)用事務(wù)管理攔截器--> <propertyname="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean> <!--配置HibernateTemplate--> <beanid="hibernateTemplate"class="org.springframework.orm.hibernate3.HibernateTemplate"> <propertyname="sessionFactory"ref="sessionFactory"/> </bean> <!--依賴注入--> <beanid="adminService"class="com.sise.s2sh.service.impl.AdminServiceImpl"> <propertyname="adminDao"ref="adminDao"/> </bean> <beanid="newsService"class="com.sise.s2sh.service.impl.NewsServiceImpl"> <propertyname="newsDao"ref="newsDao"/> </bean> <beanid="adminDao"class="com.sise.s2sh.dao.impl.AdminDaoImpl"> <propertyname="hibernateTemplate"ref="hibernateTemplate"/> </bean> <beanid="newsDao"class="com.sise.s2sh.dao.impl.NewsDaoImpl"> <propertyname="hibernateTemplate"ref="hibernateTemplate"/> </bean> <beanid="login"class="com.sise.s2sh.action.admin.Login"> <propertyname="adminService"ref="adminService"/> </bean> <beanid="newnews"class="com.sise.s2sh.action.news.NewNews"> <propertyname="newsService"ref="newsService"/> </bean> <beanid="findNews"class="com.sise.s2sh.action.news.findNews"> <propertyname="newsService"ref="newsService"/> </bean> <beanid="findRangeNews"class="com.sise.s2sh.action.news.FindRangeNews"> <propertyname="newsService"ref="newsService"/> </bean> <beanid="firstPage"class="com.sise.s2sh.action.news.FirstNewsPage"> <propertyname="newsService"ref="newsService"/> </bean> <beanid="previousOrNextPage"class="com.sise.s2sh.action.news.PreviousOrNextNewsPage"> <propertyname="newsService"ref="newsService"/> </bean> <beanid="lastPage"class="com.sise.s2sh.action.news.LastNewsPage"> <propertyname="newsService"ref="newsService"/> </bean> <beanid="findOneNews"class="com.sise.s2sh.action.news.findOneNews"> <propertyname="newsService"ref="newsService"/> </bean> <beanid="updateNews"class="com.sise.s2sh.action.news.UpdateNews"> <propertyname="newsService"ref="newsService"/> </bean> <beanid="deleteOneNews"class="com.sise.s2sh.action.news.DeleteOneNews"> <propertyname="newsService"ref="newsService"/> </bean> <beanid="changepwd"class="com.sise.s2sh.action.admin.ChangePwd"> <propertyname="adminService"ref="adminService"/> </bean> <beanid="createadmin"class="com.sise.s2sh.action.admin.Createadmin"> <propertyname="adminService"ref="adminService"/> </bean> <beanid="logout"class="com.sise.s2sh.action.admin.Logout"/></beans>②struts.xml(位于NewsManage/src目錄下)用于管理應(yīng)用中的action映射,以及action包含的result定義等。主要配置struts項(xiàng)目的一些全局屬性,用戶和響應(yīng)action之間的對(duì)應(yīng)關(guān)系,以及配置action中可能用到的參數(shù)、處理結(jié)果返回頁(yè)面,還有攔截器的配置等。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts> <includefile="struts-default.xml"/> <constantname="struts.i一八n.encoding"value="UTF-8"/> <constantname="struts.custom.i一八n.resources"value="Messages"/> <packagename="default"extends="struts-default"> <!--自定義攔截器--> <interceptors> <interceptorname="SessionInterceptor" class="erceptors.SessionInterceptor"/> </interceptors> <global-results> <resultname="loginPage">/sessionNull.jsp</result> </global-results> <actionname="loginValidate"class="com.sise.s2sh.action.validators.LoginValidate"> <resultname="input">/login.jsp</result> <resulttype="chain">login</result> </action> <actionname="login"class="login"> <result>/index.jsp</result> <resultname="error">/login.jsp</result> </action> <actionname="newnewsValidate"class="com.sise.s2sh.action.validators.NewnewsValidate"> <resultname="input">/newsSystem/newsManage/news_add.jsp</result> <resulttype="chain">newNews</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="newNews"class="newnews"> <resultname="success"type="redirect">findNews.action</result> <resultname="addnewsError">/newsSystem/newsManage/news_add.jsp</result> <resultname="invalid.token">/newsSystem/newsManage/news_add.jsp</result> <!--限制頁(yè)面重復(fù)提交--> <interceptor-refname="defaultStack"/> <interceptor-refname="tokenSession"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="findNews"class="findNews"> <result>/newsSystem/newsManage/news_m.jsp</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="findRangeNews"class="findRangeNews"> <result>/newsSystem/newsManage/news_m.jsp</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="firstPage"class="firstPage"> <result>/newsSystem/newsManage/news_m.jsp</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="previousOrNextPage"class="previousOrNextPage"> <result>/newsSystem/newsManage/news_m.jsp</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="lastPage"class="lastPage"> <result>/newsSystem/newsManage/news_m.jsp</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="findOneNews"class="findOneNews"> <result>/newsSystem/newsManage/news_edit.jsp</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="showOneNews"class="findOneNews"> <result>/newsSystem/newsManage/news_see.jsp</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="updatenewsValidate" class="com.sise.s2sh.action.validators.UpdateNewsValidate"> <resultname="input">/newsSystem/newsManage/news_edit.jsp</result> <resulttype="chain">updateNews</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="updateNews"class="updateNews"> <resultname="success"type="redirect">findNews.action</result> <resultname="invalid.token">/newsSystem/newsManage/news_edit.jsp</result> <!--限制頁(yè)面重復(fù)提交--> <interceptor-refname="defaultStack"/> <interceptor-refname="tokenSession"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="deleteOneNews"class="deleteOneNews"> <resultname="success"type="redirect">findNews.action</result> <resultname="deletenewserror"type="chain">findNews</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="changepwdValidate" class="com.sise.s2sh.action.validators.ChangePwdValidate"> <resultname="input">/newsSystem/adminManage/pwd_change.jsp</result> <resulttype="chain">changepwd</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="changepwd"class="changepwd"> <resultname="success"> /newsSystem/adminManage/pwd_changesuccess.jsp </result> <resultname="pwderror">/newsSystem/adminManage/pwd_change.jsp</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="createadminValidate" class="com.sise.s2sh.action.validators.CreateAdminValidate"> <resultname="input">/newsSystem/adminManage/admin_add.jsp</result> <resulttype="chain">createadmin</result> <interceptor-refname="defaultStack"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="createadmin"class="createadmin"> <result>/newsSystem/adminManage/admin_addsuccess.jsp</result> <resultname="createAdminError">/newsSystem/adminManage/admin_add.jsp</result> <interceptor-refname="defaultStack"/> <interceptor-refname="tokenSession"/> <interceptor-refname="SessionInterceptor"/> </action> <actionname="logout"class="logout"> <resulttype="redirect">/login.jsp</result> </action> </package></struts>③web.xml(位于NewsManage/WebRoot/WEB-INF目錄下)web容器的配置文件。用于指定應(yīng)用程序的開始頁(yè)面、注冊(cè)和指定任何應(yīng)用程序的過濾器filter、監(jiān)聽器listener、指定應(yīng)用上下文初始參數(shù)的名/值、為servlet注冊(cè)和創(chuàng)建URL等。<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.5"xmlns="xjava.sunx/xml/ns/javaee" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="xjava.sunx/xml/ns/javaee xjava.sunx/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>/login.jsp</welcome-file> </welcome-file-list> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>safecode</servlet-name> <servlet-class>com.sise.s2sh.util.SafeCode</servlet-class> </servlet> <servlet-mapping> <servlet-name>safecode</servlet-name> <url-pattern>/safecode</url-pattern> </servlet-mapping></web-app>2.系統(tǒng)各功能模塊設(shè)計(jì)與實(shí)現(xiàn)

①登錄功能

·管理員訪問登錄頁(yè)面(login.jsp)進(jìn)入登錄界面并輸入用戶名、密碼和驗(yàn)證碼,由系統(tǒng)進(jìn)行判斷(首先判斷驗(yàn)證碼是否正確,若正確則進(jìn)一步判斷用戶名和密碼,否則提示相應(yīng)信息),如果為合法用戶則進(jìn)入系統(tǒng)界面,否則提示相應(yīng)信息。登錄同時(shí)將保存當(dāng)前管理員信息到session對(duì)象中,如果管理員直接訪問系統(tǒng)主頁(yè)面(index.jsp)將獲取不到用戶名,此時(shí)會(huì)跳轉(zhuǎn)回登錄頁(yè)面并提示相應(yīng)信息?!み\(yùn)行界面如圖1-3-1:

圖1-3-1·關(guān)鍵代碼如下:

xOverride publicStringexecute()throwsException{ HttpSessionsession=ServletActionContext.getRequest().getSession(); if(session.getAttribute("rand")==null){ returnERROR; } //獲得圖形校驗(yàn)碼 Stringsf=(String)session.getAttribute("rand"); //如果圖形校驗(yàn)碼正確,判斷帳號(hào)、密碼是否正確 if(sf.equals(safecode)){ Adminadmin=adminService.findAdmin(name,password); if(admin==null){ addActionError(getText("loginerror")); returnERROR; }else{ //將admin信息存入session session.setAttribute("admin",admin); session.setAttribute("name",admin.getName()); session.setAttribute("previousLogintime",admin.getLogintime()); //獲得當(dāng)前系統(tǒng)時(shí)間并格式化,存入管理員登錄時(shí)間 Datedate=Calendar.getInstance().getTime(); SimpleDateFormatformatter=newSimpleDateFormat( "yyyy-MM-ddHH:mm:ss"); StringdateString=formatter.format(date); admin.setLogintime(dateString); //更新管理員登錄時(shí)間信息 adminService.updatelogintime(admin); returnSUCCESS; } }else{ addActionError(getText("codeerror")); returnERROR; }}其中,各表單域均有對(duì)應(yīng)的表單驗(yàn)證,后臺(tái)使用struts2表單驗(yàn)證框架。驗(yàn)證返回信息統(tǒng)一由項(xiàng)目src目錄下的Mperties保存。②系統(tǒng)主頁(yè)面

·管理員通過登錄進(jìn)入系統(tǒng),運(yùn)行界面如圖1-3-2:

圖1-3-2系統(tǒng)界面分上、下、左、右四個(gè)部分。右上方顯示登錄折系統(tǒng)管理員用戶名以及上次登錄時(shí)間,在安全方面有一定作用。右上角為退出按鈕,可安全退出系統(tǒng)。左方為選擇列表欄,可選擇相應(yīng)模塊進(jìn)行管理。右方為歡迎界面,顯示一些基本信息?!りP(guān)鍵代碼如下:(實(shí)現(xiàn)管理員用戶名以及上次登錄時(shí)間代碼請(qǐng)看上方登錄功能代碼)顯示管理員、管理員上次登錄時(shí)間關(guān)鍵代碼:(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/WebRoot/admin_top.jsp)<tdwidth="74%"height="38"class="admin_txt"> 歡迎! <b><s:propertyvalue="#"/></b> 您上次登錄時(shí)間: <s:propertyvalue="#session.previousLogintime"/></td>安全退出系統(tǒng)關(guān)鍵代碼:(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.admin/Logout.java)publicStringexecute()throwsException{ HttpSessionsession=ServletActionContext.getRequest().getSession(); session.invalidate(); returnSUCCESS;}③管理員管理模塊(修改密碼)

·選擇管理員管理—修改密碼,運(yùn)行界面如圖1-3-3:

圖1-3-3·關(guān)鍵代碼如下:實(shí)現(xiàn)功能關(guān)鍵代碼(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.admin/ChangePwd.java和NewsManage/src/com.sise.s2sh.dao.impl/AdminDaoImpl.java) publicStringexecute()throwsException{ HttpSessionsession=ServletActionContext.getRequest().getSession(); //從session獲得當(dāng)前登錄管理員信息 Adminadmin=(Admin)session.getAttribute("admin"); //判斷舊密碼是否正確 if(admin.getPassword().equals(password)){ admin.setPassword(newpwd1); //更新管理員密碼信息 adminService.changepwd(admin); returnSUCCESS; }else addActionError(getText("oldpswerror")); returnPWDERROR;} publicvoidchangepwd(Adminadmin){ hibernateTemplate.update("password",admin); }此模塊同樣擁有由struts2表單驗(yàn)證框架實(shí)現(xiàn)的表單驗(yàn)證,只有在舊密碼輸入正確,兩次輸入的新密碼相同時(shí)修改密碼操作才能成功。④管理員管理模塊(創(chuàng)建新管理員)

·選擇管理員管理—新管理員,運(yùn)行界面如圖1-3-4:

圖1-3-4·關(guān)鍵代碼如下:實(shí)現(xiàn)功能關(guān)鍵代碼(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.admin/Createadmin.java和NewsManage/src/com.sise.s2sh.dao.impl/AdminDaoImpl.java) publicStringexecute()throwsException{ //通過用戶名查找管理員信息 Admina=adminService.findAdminByName(name); //如果不為空,說明已經(jīng)存在 if(a!=null){ addActionError(getText("adminexist")); returnCREATEADMINERROR; }else{ Datedate=Calendar.getInstance().getTime(); SimpleDateFormatformatter=newSimpleDateFormat( "yyyy-MM-ddHH:mm:ss"); StringdateString=formatter.format(date); Adminadmin=newAdmin(); admin.setName(name); admin.setPassword(newpwd1); admin.setLogintime(dateString); adminService.addAdmin(admin); returnSUCCESS; }} xSuppressWarnings("unchecked") publicAdminfindAdminByName(Stringname){ Stringsql="fromAdminasadminwhere=?"; List<Admin>list=hibernateTemplate.find(sql,name); if(list!=null&&list.size()>0) returnlist.get(0); else returnnull; } publicvoidaddAdmin(Adminadmin){ hibernateTemplate.save(admin); }此模塊同樣擁有由struts2表單驗(yàn)證框架實(shí)現(xiàn)的表單驗(yàn)證,只有在各表單域輸入內(nèi)容符合要求時(shí)新建管理員操作才能成功。如果管理員已經(jīng)存在,則操作無效。通過查找指定管理員用戶名,如果不為空說明新建的管理員暫未存在,此時(shí)操作可進(jìn)行。⑤新聞常規(guī)管理模塊(新增新聞)

·選擇新聞常規(guī)管理—新增新聞,運(yùn)行界面如圖1-3-5:

圖1-3-5·關(guān)鍵代碼如下:實(shí)現(xiàn)功能關(guān)鍵代碼(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.news/NewNews.java和NewsManage/src/com.sise.s2sh.dao.impl/NewsDaoImpl.java) privatestaticfinalStringADDNEWSERROR="addnewsError"; xSuppressWarnings("unchecked") publicStringexecute()throwsException{ HttpSessionsession=ServletActionContext.getRequest().getSession(); //獲得當(dāng)前系統(tǒng)時(shí)間并格式化,存入創(chuàng)建新聞時(shí)間 Datedate=Calendar.getInstance().getTime(); Newsnews=newNews(); news.setTitle(title); news.setSource(source); news.setContent(content); news.setType(type); news.setAdminName(((Admin)session.getAttribute("admin")).getName()); news.setIssue_time(date); Listlist=newsService.findNewsByTitle(news); if(list!=null){ addActionError(getText("newsexist")); returnADDNEWSERROR; }else{ newsService.addNews(news); returnSUCCESS; }} xSuppressWarnings("unchecked") publicList<News>findNewsByTitle(Newsnews){ Stringtitle=news.getTitle(); Stringhql="fromNewsasnewswherenews.titlelike'%"+title +"%'"; List<News>list=hibernateTemplate.find(hql); if(list.size()>0&&list!=null){ returnlist; }else returnnull; } publicvoidaddNews(Newsnews){ hibernateTemplate.save(news); }此模塊同樣擁有由struts2表單驗(yàn)證框架實(shí)現(xiàn)的表單驗(yàn)證,只有在各表單域輸入內(nèi)容符合要求時(shí)新建管理員操作才能成功。如果新聞已經(jīng)存在,則新增失敗并返回newsexist提示信息。此功能實(shí)現(xiàn)方法:存入數(shù)據(jù)庫(kù)前查找數(shù)據(jù)庫(kù)中新聞標(biāo)題為輸入標(biāo)題的新聞并返回結(jié)果賦給list,再進(jìn)行判斷。若list不為空則新聞存在,反之則將新聞數(shù)據(jù)插入數(shù)據(jù)庫(kù)。⑥新聞常規(guī)管理模塊(新聞管理)此模塊包含以下功能:1、按時(shí)間范圍查詢新聞;2、按新聞?lì)愋筒樵冃侣劊?按時(shí)間范圍和新聞?lì)愋筒樵冃侣劊?、修改指定新聞;5、刪除指定新聞;6、查看新聞詳細(xì)信息;7翻頁(yè)功能;8添加新聞鏈接。

·選擇新聞常規(guī)管理—新聞管理,運(yùn)行界面如圖1-3-6:

圖1-3-6·關(guān)鍵代碼如下:顯示所有新聞功能實(shí)現(xiàn)的關(guān)鍵代碼(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.news/findNews.java和NewsManage/src/com.sise.s2sh.dao.impl/NewsDaoImpl.java) publicStringexecute()throwsException{ List<News>list=newArrayList(); //查出所有新聞信息并賦給list paging=newPaging(); intcount=newsService.pageCount(paging,null); previousPage=false; //記錄數(shù)少于等于10時(shí) if(count<=10){ nextPage=false; }else{ nextPage=true; } list=newsService.findNews(count); list2=newArrayList(); for(inti=0;i<list.size();i++){ NewsInfonInfo=newNewsInfo(); //根據(jù)新聞信息中的type值,顯示新聞?lì)愋? if(list.get(i).getType()==1){ nInfo.setType("國(guó)內(nèi)新聞"); }elseif(list.get(i).getType()==2){ nInfo.setType("國(guó)際新聞"); }elseif(list.get(i).getType()==3){ nInfo.setType("軍事新聞"); }elseif(list.get(i).getType()==4){ nInfo.setType("財(cái)經(jīng)新聞"); }elseif(list.get(i).getType()==5){ nInfo.setType("體育新聞"); }elseif(list.get(i).getType()==6){ nInfo.setType("汽車新聞"); }elseif(list.get(i).getType()==7){ nInfo.setType("房產(chǎn)新聞"); }elseif(list.get(i).getType()==8){ nInfo.setType("娛樂新聞"); }elseif(list.get(i).getType()==9){ nInfo.setType("時(shí)尚新聞"); }elseif(list.get(i).getType()==10){ nInfo.setType("游戲新聞"); }else{ nInfo.setType("其它新聞"); } nInfo.setNewsId(list.get(i).getNewsId()); nInfo.setTitle(list.get(i).getTitle()); nInfo.setSource(list.get(i).getSource()); nInfo.setContent(list.get(i).getContent()); nInfo.setAdminName(list.get(i).getAdminName()); nInfo.setIssue_time(list.get(i).getIssue_time()); //將查找出的新聞信息封裝到list2 list2.add(nInfo); } setList2(list2); returnSUCCESS;} publicList<News>findNews(Integercount){ if(count>=10){ count=10; } List<News>news=hibernateTemplate.find("fromNews").subList(0,count); returnnews; }·選擇時(shí)間范圍以及新聞?lì)愋筒樵冎付ǚ秶鷥?nèi)新聞信息(查詢開始至2012-06-03且類別為國(guó)內(nèi)新聞的新聞信息),運(yùn)行界面如圖1-3-7:

圖1-3-7·關(guān)鍵代碼如下:顯示指定范圍新聞功能實(shí)現(xiàn)的關(guān)鍵代碼(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.news/findRangeNews.java) publicStringexecute()throwsException{ //HttpSessionsession=ServletActionContext.getRequest().getSession(); List<News>list=newArrayList(); NewsRootnewsRoot=newNewsRoot(); paging=newPaging(); Datedate=endDate; if(endDate!=null){ longtemp_1=date.getTime(); longtemp_2=(1*24*3600*1000-1); date=newDate((temp_1+temp_2)); } newsRoot.setBeginDate(beginDate); newsRoot.setEndDate(date); newsRoot.setType(type); //session.setAttribute("newsRange",newsRoot); intcount=newsService.pageCount(paging,newsRoot); previousPage=false; if(count<=10){//記錄數(shù)小于等于10時(shí) nextPage=false; }else{ nextPage=true; } //查出所有新聞信息并賦給list list=newsService.findNewsByDateAndType(newsRoot,count); list2=newArrayList(); if(list==null){ returnSUCCESS; }else{ for(inti=0;i<list.size();i++){ NewsInfonInfo=newNewsInfo(); //根據(jù)新聞信息中的type值,顯示新聞?lì)愋? if(list.get(i).getType()==1){ nInfo.setType("國(guó)內(nèi)新聞"); }elseif(list.get(i).getType()==2){ nInfo.setType("國(guó)際新聞"); }elseif(list.get(i).getType()==3){ nInfo.setType("軍事新聞"); }elseif(list.get(i).getType()==4){ nInfo.setType("財(cái)經(jīng)新聞"); }elseif(list.get(i).getType()==5){ nInfo.setType("體育新聞"); }elseif(list.get(i).getType()==6){ nInfo.setType("汽車新聞"); }elseif(list.get(i).getType()==7){ nInfo.setType("房產(chǎn)新聞"); }elseif(list.get(i).getType()==8){ nInfo.setType("娛樂新聞"); }elseif(list.get(i).getType()==9){ nInfo.setType("時(shí)尚新聞"); }elseif(list.get(i).getType()==10){ nInfo.setType("游戲新聞"); }else{ nInfo.setType("其它新聞"); } nInfo.setNewsId(list.get(i).getNewsId()); nInfo.setTitle(list.get(i).getTitle()); nInfo.setSource(list.get(i).getSource()); nInfo.setContent(list.get(i).getContent()); nInfo.setAdminName(list.get(i).getAdminName()); nInfo.setIssue_time(list.get(i).getIssue_time()); //將查找出的新聞信息封裝到list2 list2.add(nInfo); } setList2(list2); returnSUCCESS; }}·點(diǎn)擊任何新聞的修改鏈接,對(duì)新聞進(jìn)行修改。運(yùn)行界面如圖1-3-8:

圖1-3-8·關(guān)鍵代碼如下:修改指定新聞功能實(shí)現(xiàn)的關(guān)鍵代碼(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.news/UpdateNews.java) publicStringexecute()throwsException{ HttpSessionsession=ServletActionContext.getRequest().getSession(); //從session中獲取新聞信息 Newsnews=(News)session.getAttribute("news"); //如果頁(yè)面請(qǐng)求中的新聞信息與數(shù)據(jù)庫(kù)中的信息相同,則不做操作 if(news.getTitle().equals(title)&&news.getSource().equals(source) &&news.getContent().equals(content) &&news.getType().equals(type)){ System.out.println("新聞未更改,不更新..."); returnSUCCESS; }else{ //否則,將頁(yè)面請(qǐng)求中信息更新到數(shù)據(jù)庫(kù) news.setTitle(title); news.setSource(source); news.setContent(content); news.setType(type); newsService.updateNews(news); System.out.println("新聞?dòng)懈?,已更?.."); returnSUCCESS; }}此模塊同樣擁有由struts2表單驗(yàn)證框架實(shí)現(xiàn)的表單驗(yàn)證。提交之后進(jìn)行表單域的驗(yàn)證,之后再寫入數(shù)據(jù)庫(kù)。按返回按鈕可返回上一步。·點(diǎn)擊任何新聞的刪除鏈接,可刪除新聞。運(yùn)行界面如圖1-3-9:

圖1-3-9·關(guān)鍵代碼如下:刪除指定新聞功能實(shí)現(xiàn)的關(guān)鍵代碼(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.news/DeleteOneNews.java) privatestaticfinalStringDELETENEWSERROR="deletenewsError"; xOverride publicStringexecute()throwsException{ Newsnews=newNews(); news.setNewsId(newsId); Newsnews2=newsService.findNewsById(newsId); if(news2!=null){ newsService.deleteOneNews(news2); returnSUCCESS; } addActionError(getText("deletenewsFail")); returnDELETENEWSERROR;}·點(diǎn)擊新聞的標(biāo)題或操作欄目下的新聞詳細(xì),可查看新聞詳細(xì)信息。運(yùn)行界面如圖1-3-10:

圖1-3-10此功能的返回按鈕可實(shí)現(xiàn)返回跳轉(zhuǎn)到此頁(yè)面前的新聞信息頁(yè)面?!りP(guān)鍵代碼如下:查看指定新聞詳細(xì)信息功能實(shí)現(xiàn)的關(guān)鍵代碼(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.news/findOneNews.java) publicStringexecute()throwsException{ Newsnews2=newsService.findNewsById(newsId); HttpSessionsession=ServletActionContext.getRequest().getSession(); session.setAttribute("news",news2); returnSUCCESS;}·點(diǎn)擊新聞管理頁(yè)面中的的首頁(yè)、上一頁(yè)、下一頁(yè)、尾頁(yè)、第…頁(yè)可實(shí)現(xiàn)翻頁(yè)。運(yùn)行界面如圖1-3-11:

圖1-3-11此功能實(shí)現(xiàn)翻頁(yè):如果當(dāng)前頁(yè)為第1頁(yè),則不顯示首頁(yè)與上一頁(yè)的超鏈接;如果當(dāng)前頁(yè)為最后一頁(yè),則不顯示尾頁(yè)和下一頁(yè)的超鏈接;只有不為首頁(yè)和尾頁(yè)的時(shí)候才會(huì)顯示所有翻頁(yè)超鏈接。同時(shí),實(shí)現(xiàn)頁(yè)數(shù)、當(dāng)前頁(yè)的結(jié)果?!りP(guān)鍵代碼如下:翻頁(yè)功能實(shí)現(xiàn)的關(guān)鍵代碼(詳細(xì)代碼請(qǐng)查看項(xiàng)目NewsManage/src/com.sise.s2sh.action.news/FirstNewsPage.java、PreviousOrNextNewsPage.java、LastNewsPage.java)以下以PreviousOrNextNewsPage.java為例: publicStringexecute()throwsException{ List<News>list=newArrayList(); paging=newPaging(); xSuppressWarnings("unused") intcount=newsService.pageCount(paging,null); paging.setCurrentPage(currentPage); list=newsService.previousOrNextPage(paging,null); if(currentPage<=1){ previousPage=false; nextPage=true; }elseif(currentPage>=paging.getTotalPage()){ previousPage=true; nextPage=false; }else{ previousPage=true; nextPage=true; } list2=newArrayList(); if(list==null){ returnSUCCESS; }else{ for(inti=0;i<list.size();i++){ NewsInfonInfo=newNewsInfo(); //根據(jù)新聞信息中的type值,顯示新聞?lì)愋? if(list.get(i).getType()==1){ nInfo.setType("國(guó)內(nèi)新聞"); }elseif(list.get(i).getType()==2){ nInfo.setType("國(guó)際新聞"); }elseif(list.get(i).getType()==3){ nInfo.setType("軍事新聞"); }elseif(list.get(i).getType()==4){ nInfo.setType("財(cái)經(jīng)新聞"); }elseif(list.get(i).getType()==5){ nInfo.setType("體育新聞"); }elseif(list.get(i).getType()==6){ nInfo.setType("汽車新聞"); }elseif(list.get(i).getType()==7){

溫馨提示

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

評(píng)論

0/150

提交評(píng)論