新闻网、新闻网信息管理系统_第1页
新闻网、新闻网信息管理系统_第2页
新闻网、新闻网信息管理系统_第3页
新闻网、新闻网信息管理系统_第4页
新闻网、新闻网信息管理系统_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

54-/NUMPAGES56广州大学华软软件学院2012年第六学期《企业级JAVAⅡ》课程设计

题目:新闻网、新闻网信息治理系统专业:网络应用软件开发班级:IB01组长:邓理安组员:方泓清递交日期:2012年6月4日目录TOC\o"1-2"\h\z\u新闻网信息治理系统(后台) -1-一、系统执行原理 -2-二、系统功能需求 -2-1、 系统功能描述 -2-三、数据库设计 -4-1、数据库使用MYSQL。2、相关各数据库表: -4-1、公共模块设计与实现 -5-2.系统各功能模块设计与实现 -13-新闻联播新闻网(前台) -29-一、系统执行原理 -29-二、系统功能需求 -30-三、数据库设计 -31-1、数据库使用MYSQL。2、相关各数据库表: -31-四、系统实现 -33-1、公共模块设计与实现 -33-系统各功能模块设计与实现 -38-五、附录 -60-新闻网信息治理系统(后台)上课班级:IB01学号:0940111147姓名:方泓清学号:0940111145姓名:邓理安一、系统执行原理1.客户机将HTTP请求发送给Web服务器2.Web服务器将该请求转发给struts.xml3.在struts.xml中的action的type实现spring的请求代理4.在spring的配置文件中对action类进行注入5.action类中注入sevice,service中注入dao,当服务器启动时,spring对类自动设置。6.执行顺序从action>service>dao,然后返回。7.action将响应发送给Web服务器8.Web服务器将响应转发给客户机二、系统功能需求系统功能描述角色:治理员

功能描述:

(1)身份验证功能:治理员只有成功登录后才可进入系统治理新闻以及相关信息。

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

图1-1-1

(2)治理员:可增加、修改、删除、查询新闻信息;可修改密码、增加治理员。

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

图1-1-2三、数据库设计

1、数据库使用MYSQL。

2、相关各数据库表:

①治理员表admin(如图1-2-1)

图1-2-1

②新闻信息表news(如图2-2)

图1-2-2

四、系统实现

1、公共模块设计与实现

①applicationContext.xml(位于NewsManage/WebRoot/WEB-INF目录下)用于治理数据库连接、Hibernate的sessionFactory、事务治理以及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数据源--> <beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <!--指定连接数据库驱动--> <propertyname="driverClass"value="com.mysql.jdbc.Driver"/> <!--指定连接数据库url--> <propertyname="jdbcUrl" value="jdbc:mysql://localhost:3306/newsmanage?useUnicode=true&characterEncoding=utf-8"/> <propertyname="user"value="root"/> <propertyname="password"value="576611569"/> </bean> <!--定义Hibernate的sessionFactory--> <beanid="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!--依靠注入上面所配置的数据源--> <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> <!--是否在操纵台输出hql语句--> <propkey="show_sql">true</prop> <propkey="hibernate.hbm2ddl.auto">update</prop> <propkey="hibernate.jdbc.batch_size">20</prop> </props> </property> </bean> <!--定义事务治理--> <beanid="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <propertyname="sessionFactory"ref="sessionFactory"/> </bean> <!--定义事务治理拦截器--> <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> <!--定义代理自动治理事务--> <beanid="ProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <!--指定需要Spring治理事务的Bean--> <propertyname="beanNames"> <list> <value>adminService</value> <value>newsService</value> </list> </property> <!--调用事务治理拦截器--> <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目录下)用于治理应用中的action映射,以及action包含的result定义等。要紧配置struts项目的一些全局属性,用户和响应action之间的对应关系,以及配置action中可能用到的参数、处理结果返回页面,还有拦截器的配置等。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts> <includefile="struts-default.xml"/> <constantname="struts.i18n.encoding"value="UTF-8"/> <constantname="struts.custom.i18n.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> <!--限制页面重复提交--> <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> <!--限制页面重复提交--> <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容器的配置文件。用于指定应用程序的开始页面、注册和指定任何应用程序的过滤器filter、监听器listener、指定应用上下文初始参数的名/值、为servlet注册和创建URL等。<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.5"xmlns="/xml/ns/javaee" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/javaee /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.系统各功能模块设计与实现

①登录功能

·治理员访问登录页面(login.jsp)进入登录界面并输入用户名、密码和验证码,由系统进行推断(首先推断验证码是否正确,若正确则进一步推断用户名和密码,否则提示相应信息),假如为合法用户则进入系统界面,否则提示相应信息。登录同时将保存当前治理员信息到session对象中,假如治理员直接访问系统主页面(index.jsp)将猎取不到用户名,现在会跳转回登录页面并提示相应信息。·运行界面如图1-3-1:

图1-3-1·关键代码如下:

@Override publicStringexecute()throwsException{ HttpSessionsession=ServletActionContext.getRequest().getSession(); if(session.getAttribute("rand")==null){ returnERROR; } //获得图形校验码 Stringsf=(String)session.getAttribute("rand"); //假如图形校验码正确,推断帐号、密码是否正确 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()); //获得当前系统时刻并格式化,存入治理员登录时刻 Datedate=Calendar.getInstance().getTime(); SimpleDateFormatformatter=newSimpleDateFormat( "yyyy-MM-ddHH:mm:ss"); StringdateString=formatter.format(date); admin.setLogintime(dateString); //更新治理员登录时刻信息 adminService.updatelogintime(admin); returnSUCCESS; } }else{ addActionError(getText("codeerror")); returnERROR; }}其中,各表单域均有对应的表单验证,后台使用struts2表单验证框架。验证返回信息统一由项目src目录下的Mperties保存。②系统主页面

·治理员通过登录进入系统,运行界面如图1-3-2

图1-3-2系统界面分上、下、左、右四个部分。右上方显示登录折系统治理员用户名以及上次登录时刻,在安全方面有一定作用。右上角为退出按钮,可安全退出系统。左方为选择列表栏,可选择相应模块进行治理。右方为欢迎界面,显示一些差不多信息。·关键代码如下:(实现治理员用户名以及上次登录时刻代码请看上方登录功能代码)显示治理员、治理员上次登录时刻关键代码:(详细代码请查看项目NewsManage/WebRoot/admin_top.jsp)<tdwidth="74%"height="38"class="admin_txt"> 欢迎! <b><s:propertyvalue="#"/></b> 您上次登录时刻: <s:propertyvalue="#session.previousLogintime"/></td>安全退出系统关键代码:(详细代码请查看项目NewsManage/src/com.sise.s2sh.action.admin/Logout.java)publicStringexecute()throwsException{ HttpSessionsession=ServletActionContext.getRequest().getSession(); session.invalidate(); returnSUCCESS;}③治理员治理模块(修改密码)

·选择治理员治理—修改密码,运行界面如图1-3-

图1-3-3·关键代码如下:实现功能关键代码(详细代码请查看项目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获得当前登录治理员信息 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表单验证框架实现的表单验证,只有在旧密码输入正确,两次输入的新密码相同时修改密码操作才能成功。④治理员治理模块(创建新治理员)

·选择治理员治理—新治理员,运行界面如图1-3-4

图1-3-4·关键代码如下:实现功能关键代码(详细代码请查看项目NewsManage/src/com.sise.s2sh.action.admin/Createadmin.java和NewsManage/src/com.sise.s2sh.dao.impl/AdminDaoImpl.java) publicStringexecute()throwsException{ //通过用户名查找治理员信息 Admina=adminService.findAdminByName(name); //假如不为空,讲明差不多存在 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; }} @SuppressWarnings("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表单验证框架实现的表单验证,只有在各表单域输入内容符合要求时新建治理员操作才能成功。假如治理员差不多存在,则操作无效。通过查找指定治理员用户名,假如不为空讲明新建的治理员暂未存在,现在操作可进行。⑤新闻常规治理模块(新增新闻)

·选择新闻常规治理—新增新闻,运行界面如图1-3-5

图1-3-5·关键代码如下:实现功能关键代码(详细代码请查看项目NewsManage/src/com.sise.s2sh.action.news/NewNews.java和NewsManage/src/com.sise.s2sh.dao.impl/NewsDaoImpl.java) privatestaticfinalStringADDNEWSERROR="addnewsError"; @SuppressWarnings("unchecked") publicStringexecute()throwsException{ HttpSessionsession=ServletActionContext.getRequest().getSession(); //获得当前系统时刻并格式化,存入创建新闻时刻 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; }} @SuppressWarnings("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表单验证框架实现的表单验证,只有在各表单域输入内容符合要求时新建治理员操作才能成功。假如新闻差不多存在,则新增失败并返回newsexist提示信息。此功能实现方法:存入数据库前查找数据库中新闻标题为输入标题的新闻并返回结果赋给list,再进行推断。若list不为空则新闻存在,反之则将新闻数据插入数据库。⑥新闻常规治理模块(新闻治理)此模块包含以下功能:1、按时刻范围查询新闻;2、按新闻类型查询新闻;3按时刻范围和新闻类型查询新闻;4、修改指定新闻;5、删除指定新闻;6、查看新闻详细信息;7翻页功能;8添加新闻链接。

·选择新闻常规治理—新闻治理,运行界面如图1-3-6

图1-3-6·关键代码如下:显示所有新闻功能实现的关键代码(详细代码请查看项目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; //记录数少于等于10时 if(count<=10){ nextPage=false; }else{ nextPage=true; } list=newsService.findNews(count); list2=newArrayList(); for(inti=0;i<list.size();i++){ NewsInfonInfo=newNewsInfo(); //依照新闻信息中的type值,显示新闻类型 if(list.get(i).getType()==1){ nInfo.setType("国内新闻"); }elseif(list.get(i).getType()==2){ nInfo.setType("国际新闻"); }elseif(list.get(i).getType()==3){ nInfo.setType("军事新闻"); }elseif(list.get(i).getType()==4){ nInfo.setType("财经新闻"); }elseif(list.get(i).getType()==5){ nInfo.setType("体育新闻"); }elseif(list.get(i).getType()==6){ nInfo.setType("汽车新闻"); }elseif(list.get(i).getType()==7){ nInfo.setType("房产新闻"); }elseif(list.get(i).getType()==8){ nInfo.setType("娱乐新闻"); }elseif(list.get(i).getType()==9){ nInfo.setType("时尚新闻"); }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; }·选择时刻范围以及新闻类型查询指定范围内新闻信息(查询开始至2012-06-03且类不为国内新闻的新闻信息),运行界面如图1-

图1-3-7·关键代码如下:显示指定范围新闻功能实现的关键代码(详细代码请查看项目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){//记录数小于等于10时 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(); //依照新闻信息中的type值,显示新闻类型 if(list.get(i).getType()==1){ nInfo.setType("国内新闻"); }elseif(list.get(i).getType()==2){ nInfo.setType("国际新闻"); }elseif(list.get(i).getType()==3){ nInfo.setType("军事新闻"); }elseif(list.get(i).getType()==4){ nInfo.setType("财经新闻"); }elseif(list.get(i).getType()==5){ nInfo.setType("体育新闻"); }elseif(list.get(i).getType()==6){ nInfo.setType("汽车新闻"); }elseif(list.get(i).getType()==7){ nInfo.setType("房产新闻"); }elseif(list.get(i).getType()==8){ nInfo.setType("娱乐新闻"); }elseif(list.get(i).getType()==9){ nInfo.setType("时尚新闻"); }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; }}·点击任何新闻的修改链接,对新闻进行修改。运行界面如图1-3-8

图1-3-8·关键代码如下:修改指定新闻功能实现的关键代码(详细代码请查看项目NewsManage/src/com.sise.s2sh.action.news/UpdateNews.java) publicStringexecute()throwsException{ HttpSessionsession=ServletActionContext.getRequest().getSession(); //从session中猎取新闻信息 Newsnews=(News)session.getAttribute("news"); //假如页面请求中的新闻信息与数据库中的信息相同,则不做操作 if(news.getTitle().equals(title)&&news.getSource().equals(source) &&news.getContent().equals(content) &&news.getType().equals(type)){ System.out.println("新闻未更改,不更新..."); returnSUCCESS; }else{ //否则,将页面请求中信息更新到数据库 news.setTitle(title); news.setSource(source); news.setContent(content); news.setType(type); newsService.updateNews(news); System.out.println("新闻有更改,已更新..."); returnSUCCESS; }}此模块同样拥有由struts2表单验证框架实现的表单验证。提交之后进行表单域的验证,之后再写入数据库。按返回按钮可返回上一步。·点击任何新闻的删除链接,可删除新闻。运行界面如图1-3-9

图1-3-9·关键代码如下:删除指定新闻功能实现的关键代码(详细代码请查看项目NewsManage/src/com.sise.s2sh.action.news/DeleteOneNews.java) privatestaticfinalStringDELETENEWSERROR="deletenewsError"; @Override publicStringexecute()throwsException{ Newsnews=newNews(); news.setNewsId(newsId); Newsnews2=newsService.findNewsById(newsId); if(news2!=null){ newsService.deleteOneNews(news2); returnSUCCESS; } addActionError(getText("deletenewsFail")); returnDELETENEWSERROR;}·点击新闻的标题或操作栏目下的新闻详细,可查看新闻详细信息。运行界面如图1-3-10

图1-3-10此功能的返回按钮可实现返回跳转到此页面前的新闻信息页面。·关键代码如下:查看指定新闻详细信息功能实现的关键代码(详细代码请查看项目NewsManage/src/com.sise.s2sh.action.news/findOneNews.java) publicStringexecute()throwsException{ Newsnews2=newsService.findNewsById(newsId); HttpSessionsession=ServletActionContext.getRequest().getSession(); session.setAttribute("news",news2); returnSUCCESS;}·点击新闻治理页面中的的首页、上一页、下一页、尾页、第…页可实现翻页。运行界面如图1-3-11

图1-3-11此功能实现翻页:假如当前页为第1页,则不显示首页与上一页的超链接;假如当前页为最后一页,则不显示尾页和下一页的超链接;只有不为首页和尾页的时候才会显示所有翻页超链接。同时,实现页数、当前页的结果。·关键代码如下:翻页功能实现的关键代码(详细代码请查看项目NewsManage/src/com.sise.s2sh.action.news/FirstNewsPage.java、PreviousOrNextNewsPage.java、LastNewsPage.java)以下以PreviousOrNextNewsPage.java为例: publicStringexecute()throwsException{ List<News>list=newArrayList(); paging=newPaging(); @SuppressWarnings("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(); //依照新闻信息中的type值,显示新闻类型 if(list.get(i).getType()==1){ nInfo.setType("国内新闻"); }elseif(list.get(i).getType()==2){ nInfo.setType("国际新闻"); }elseif(list.get(i).getType()==3){ nInfo.setType("军事新闻"); }elseif(list.get(i).getType()==4){ nInfo.setType("财经新闻"); }elseif(list.get(i).getType()==5){ nInfo.setType("体育新闻"); }elseif(list.get(i).getType()==6){ nInfo.setType("汽车新闻"); }elseif(list.get(i).getType()==7){ nInfo.setType("房产新闻"); }elseif(list.get(i).getType()==8){ nInfo.setType("娱乐新闻"); }els

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论