资源描述
分类号 编 号 华北水利水电学院 实训报告 题目 新闻发布系统 院 、 系 软件职业技术学院 专 业 软件技术 姓 名 张浩然 学 号 200917534 指导教师 李永强 44 摘要【摘要】随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。个性化已逐渐成为当今Web应用的潮流。利用JSP技术开发的网站新闻管理系统,实现了网站新闻的动态管理,因为可以用来动态发布新闻信息,所以使得对信息的管理更加及时、高效,提高了工作效率。【关键词】Struts组建编程模型、ActionForm的说明、样式层、持久层、服务层、控制层。目录摘要10 引言31 系统分析41.1 需求分析41.2 可行性分析42 总体设计42.1 项目规划42.2 系统功能结构图43 系统设计53.1 设计目标53.2 开发及运行环境53.3 逻辑结构设计54 网站总体架构64.1 文件布局64.2 网站首页的运行结果64.2 类的分布85 网站后台主要功能模块设计85.1 后台登录模块设计85.2 总管理员设置模块设计115.3 更改总管理员密码模块设计235.4 新闻信息管理275.5 总结326 网站前台主要功能模块设计326.1 今日新闻的显示326.2 输入新闻的关键字查找新闻346.3 新闻人物的查看和投票367 小结39附录一 参考文献40附录二 数据表41附录三 文件架构图430 引言21世纪的特征是数字化、网络化和信息化,它是一个以数据库技术为核心的信息时代。而随着信息技术的发展,报社行业也成为一个高度依赖信息业的行业。信息技术的飞速发展不仅使新闻工作者逐渐摆脱了繁重的手工劳动、提高了工作效率,而且推着报社行业向现代化管理迈进。现代化的新闻发布系统也应该有现代化的管理系统。在科技日益发达的今天,人们对新闻更加重视。因此,新闻发布进行现代化管理就变的尤为重要。数据库是数据管理的最新技术,是计算机科学的重要分支。今天,信息资源已成为各个部门的重要财富,建立一个满足新闻发布信息处理要求的行之有效的信息系统也成为一个报社发展的重要条件。新闻发布系统,它是报社管理系统的一部分,其作用是对所有新闻进行有效的管理。通过本系统不仅可以进行新闻发布工作,而且还可以对和新闻相对应的人员情况进行查询,并可随时进行增加,修改,删除等工作,使工作人员能够有效地对新闻进行有效的控制和管理。因此,通过新闻发布系统,使新闻工作系统化,规范化,自动化,从而大大提高了新闻发布工作的效率。1 系统分析1.1 需求分析通过相关调查,要求网站具有以下功能;通过网络,展示各行业新闻及相关信息。提供新闻搜索功能。设置新闻人物投票功能,并统计投票数量。支持其他网站的友情链接。为后台管理提供管理入口。1.2 可行性分析 利用计算机实现新闻发布管理势在必行。对于报社来说,利用计算机支持管理部门高效率完成新闻信息管理的日常事务,是适应现代报社制度要求、推动报社由劳动型管理走向科学化、规范化的必要条件;而新闻信息管理是一项琐碎、复杂而又必须十分细致准确的工作,新闻信息的管理,工作人员信息的管理,等,绝对的不允许出错,如果实行手工操作,需手工填制大量的表格,这就会耗费工作人员大量的时间和精力,而且安全度也不理想,利用计算机进行新闻发布信息工作的管理,不仅能够保证各项信息准确无误、快速输出,同时计算机具有手工管理所无法比拟的优点,例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高新闻管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件2 总体设计2.1 项目规划新闻网是一个功能完善的新闻类网站,由客户前台新闻浏览和后台新闻管理两大部分组成。前台功能模块前台主要包括新闻分类、显示新闻详细信息、新闻信息查询、新闻人物投票、友情链接、提供后台登录口。后台管理模块后台主要包括后台总管理员设置及密码修改、添加管理员、管理员信息设置、新闻类型管理、新闻详细类型管理、新闻信息管理、链接管理、新闻人物管理、退出后台。2.2 系统功能结构图新闻发布系统前台功能结构,如图所示。新闻网前台功能结构新闻分类新闻详细信息新闻信息查询新闻人物投票友情链接后台登录口 新闻网前台功能结构图新闻网后台功能结构,如图所示。新闻网后台功能结构总管理员设置总管理员修改密码添加管理员管理员信息设置新闻类型管理新闻详细类型管理新闻信息管理新闻人物管理链接管理退出后台 新闻网后台功能结构图3 系统设计3.1 设计目标本网站是根据各行业新闻信息分类进行开发设计的,主要实现如下目标:分类展示各行业最新新闻状况。显示新闻的详细信息。设置新闻搜索功能模块。设置新闻人物投票及投票数统计功能。提供其他网站的友情链接。3.2 开发及运行环境硬件平台:CPU:P41.8GHz;内存:256MB以上。软件平台:操作系统:Windows xp或者window7;数据库:SQL Server 2000;开发工具包:JDK Version1.4.1;Web服务器:Tomcat;浏览器:google分辨率:最佳效果1024*768像素。3.3 逻辑结构设计本系统数据库采用SQL server 2000数据库,系统数据库名称为db_news。数据库db_news中包含7张表。关于数据库中的数据表请参见附录B4 网站总体架构4.1 网站首页的运行结果网站前台首页的运行结果如图所示。312 网站前台首页运行结果网站框架图说明如下:表1 网站前台首页页面说明区域名称说明对应文件1网站导航主要展示网站的旗帜广告和站内导航条typeNewWatch.do2功能模块主要用于显示导航模块中的功能linkSelect.do3内容显示主要用于显示功能模块中的内容dateNews.do?type=今日新闻网站后台首页的运行结果如图所示。312 网站后台首页运行结果网站后台首页中的各部分说明如表2所示。表2 网站后台首页页面说明区域名称说明对应文件1网站导航主要展示网站的旗帜广告和站内导航条typeTopAction.do2功能模块主要用于显示导航模块中的功能left_main.jsp3内容显示主要用于显示功能模块中的内容right_main.jsp4.2 类的分布新闻发布系统是利用Struts框架实现的,新闻发布系统中类的分布如图所示。样式层前台控制层服务层工具层后台控制层持久层 类的分布类存放的文件夹功能如表3所示。表3 类存放的文件夹功能列表名称功能持久层(dao文件夹)各种方法(增加、删除、修改和查询)的实现样式层(domain文件夹)所存放的类是Actionform类,在类中必须要继承ActionForm(也就是entends ActionForm)服务层(server文件夹)存放的dao层功能的业务的类控制层(webtier文件夹)存放在jsp页面中存在的方法实现的类工具层(tool文件夹)类名为JDBConnection.java(连接数据库的功能)、类名为Chinese.java(字符级转换的类)、类名为SessionLib(用来存在session变量)5 网站后台主要功能模块设计5.1 后台登录模块设计在新闻发布系统中,后台管理员分为两种:一个是普通管理员,他可以对新闻类型进行定义,也可以发布新闻、设置投票人数及网站链接;另一个是超级管理员,他除了可操作以上功能外,还可以对普通管理员进行设置,总管理员和普通管理员都能通过后台登录页面登录后台,然后对系统进行相应的操作。在前台单击“进入后台”超链接,即可进入到后台登录页面,如图所示。单击“账号”和“密码”的文本框,输入账号:mr 密码:*,单击【提交】按钮即可进入新闻网后台界面。 后台登录页面1 样式层的类具体代码如下/* ManagerActionForm.java*/package com.victor.domain;import org.apache.struts.action.*;public class ManagerActionForm extends ActionForm private Integer managerID; /在数据库中的流水号 private String managerIssueDate; /管理员添加日期 private String managerMark; /管理员的标示 private String managerName; /管理员帐号 private String managerPassword; /管理员密码 private String managerRealName; /管理员的真实姓名 private String managerType; /管理员的权限 public ManagerActionForm() this.managerID = new Integer( -1); this.managerIssueDate = ; this.managerMark = ; this.managerName = ; this.managerPassword = ; this.managerRealName = ; this.managerType = ; public Integer getManagerID() return managerID; public void setManagerID(Integer managerID) this.managerID = managerID; .2持久层的方法验证输入的内容是否正确有很多方法,笔者采用的是利用sql语句的方法进行验证输入账号和密码。对输入的账号及密码判断是否正确。利用接口类的方法实现的代码如下:/* ManagerDao.java*/public interface ManagerDao public ManagerActionForm managerCheck(ManagerActionForm managerActionForm)实现接口的方法的代码如下:/* ManagerDaoImpl.java*/核对普通管理员帐号和密码public class ManagerDaoImpl implements ManagerDao /实现接口类中的方法用implements加上接口类名 public ManagerActionForm managerCheck(ManagerActionForm managerActionForm) ManagerActionForm manager = null; 定义一个Object型的数据,初使化为null JDBConnection connection = new JDBConnection(); /连接数据库的方法 String sql = select * from tb_manager where Name= + managerActionForm.getManagerName() + ; try ResultSet rs = connection.executeQuery(sql); / 把sql语句传到JDBConnection类中去 while (rs.next() manager = new ManagerActionForm(); manager.setManagerPassword(rs.getString(3); /查找过所需要的字段数据 catch (SQLException ex) connection.close(); return manager; /把对象返回到方法中去 3服务层的方法利用接口类的方法实现的代码如下:/* ManagerFacade.java*/public interface ManagerFacade public ManagerActionForm managerCheck(ManagerActionForm managerActionForm)实现接口的方法的代码如下:/* ManagerFacadeImpl.java*/public class ManagerFacadeImpl implements ManagerFacade /实现接口类的方法用implements private ManagerDao managerDao; public ManagerFacadeImpl() this.managerDao = new ManagerDaoImpl(); /实现dao类的方法。 public ManagerActionForm managerCheck(ManagerActionForm managerActionForm) return this.managerDao.managerCheck(managerActionForm); /调用持久层的方法 4管理员登陆控制层的方法/* ManagerCheckAction.java*/package com.victor.webtier.managerAction;/核对帐号和密码public class ManagerCheckAction extends Action private ManagerFacade managerFacade; public ManagerCheckAction() this.managerFacade = new ManagerFacadeImpl(); public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) Chinese chinese = new Chinese(); ManagerActionForm managerActionForm = (ManagerActionForm) actionForm; managerActionForm.setManagerName(chinese.str(httpServletRequest. getParameter(managerName);ManagerActionForm manager = this.managerFacade.managerCheck(managerActionForm); /通过对象调用方法 if (manager = null) return actionMapping.findForward(managerWrong);/通过manager是空值的话,返回错误页面。 else if (!manager.getManagerPassword().equals(httpServletRequest.getParameter( managerPassWord)return actionMapping.findForward(managerWrong);/查找的值与在jsp页面中的值不一致,返回错误页面。 return actionMapping.findForward(managerRight); /查找的值与在jsp页面中的值一致,返回正确页面。 5struts-config.xml中的配置在这里主要配置formBean和action动作指向的jsp页面。代码如下:/* struts-config.xml*/ 6管理员登陆jsp页面的说明/* managerCheck.jsp*/ 管理员登陆 帐号: 密码: 5.2 总管理员设置模块设计总管理员在数据库中是惟一的,总管理员的信息在页面中不会显示出来,在此页面中只能修改自己的密码及对普通管理员进行设置。用户单击“总管理员设置”超链接,进入总管理员设置页面。系统首先对用户输入的账户和密码进行核对。因为并不是所有的管理员都能够有这个权利,所以在SQL语句中应体现惟一性的条件,样式层所要调用的类是ActionForm,跟用户登录时调用的actionForm是同一个类,在这里就不做介绍了。1总管理员的登录操作登录方法主要用于系统管理员进行系统维护时,作为登录后台时密码验证之用。在用户输入用户账号和密码之后,调用该方法即可验证该用户是否合法。单击“总管理员设置”超链接,进入到总管理员设置页面,实现此超链接的jsp代码如下:/* left_main.jsp*/总管理员设置总管理员页面的运行结果如图所示。 总管理员页面运行结果单击“请输入账户”和“请输入密码”的文本框,输入账户及密码,最后单击【提交】按钮,界面右侧自动显示管理员的全部信息。如下图1.8所示。更改总管理员密码:单击【更改总管理员密码】按钮,界面右侧自动显示相关的界面,如图所示。 更改总管理员密码单击“请输入原来的密码”文本框,输入密码,单击【提交】按钮,系统弹出如图1.10所示的界面,单击“请输入新密码”及“请再次输入新密码”文本框,两次输入相同的新密码,最后单击【提交】按钮,系统弹出修改成功的提示信息即完成修改操作。总管理员页面所对应的jsp页面代码如下:/* adminPassword.jsp*/ 请输入帐户: 请输入密码: 在上面的jsp页面代码中,action触发的是adminAction.do的方法,它与后台登录的方法相似,只是调用的SQL语句不同。在持久层中查询总管理员的方法的代码如下:接口类的方法:/* ManagerDao.java*/public ManagerActionForm adminCheck(ManagerActionForm managerActionForm)实现接口类的方法:/* ManagerDaoImpl.java*/ public ManagerActionForm adminCheck(ManagerActionForm managerActionForm) ManagerActionForm manager = null; /初始化对象JDBConnection connection = new JDBConnection(); String sql = select * from tb_manager where Name= + managerActionForm.getManagerName() + and mark= + managerActionForm.getManagerMark() + ;try ResultSet rs = connection.executeQuery(sql); /执行查找的方法 while (rs.next() manager = new ManagerActionForm(); manager.setManagerPassword(rs.getString(3); /取出查询的密码 catch (SQLException ex) connection.close(); /关闭数据库 return manager; 在服务层中实现持久层的方法如下:接口类的方法:/* ManagerFacade.java*/public interface ManagerFacade public ManagerActionForm adminCheck(ManagerActionForm managerActionForm);实现接口类的方法:/* ManagerFacadeIm.java*/public class ManagerFacadeImpl implements ManagerFacade private ManagerDao managerDao; public ManagerFacadeImpl() this.managerDao = new ManagerDaoImpl(); public ManagerActionForm adminCheck(ManagerActionForm managerActionForm) return this.managerDao.adminCheck(managerActionForm); /调用持久层的方法 具体在控制层的代码如下:/* ManagerDaoImpl.jsp*/package com.victor.webtier.managerAction; import org.apache.struts.action.*;import javax.servlet.http.*;import com.victor.domain.ManagerActionForm;import com.victor.service.ManagerFacade;import com.victor.service.ManagerFacadeImpl;/核对总管理员帐号和密码public class AdminCheckAction extends Action private ManagerFacade managerFacade; public AdminCheckAction() this.managerFacade = new ManagerFacadeImpl(); public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) ManagerActionForm managerActionForm = (ManagerActionForm) actionForm; managerActionForm.setManagerName(httpServletRequest.getParameter(Name);/从页面上取值 managerActionForm.setManagerMark(总管理员); /取固定的名称 ManagerActionForm manager = this.managerFacade.adminCheck(managerActionForm); if (manager = null) /if判断,做比较 return actionMapping.findForward(adminWrong); else if (!manager.getManagerPassword().equals(httpServletRequest.getParameter(adminPassWord) return actionMapping.findForward(adminWrong); return actionMapping.findForward(adminRight); 上面的类文件中加载了ManagerActionForm类,这个类是属于ActionForm类,相当于JavaBean,在这里主要实现进行取值和赋值的功能。struts-config.xml的配置的代码如下:/* struts-config.xml*/ 如果用户输入的总管理员的账户和密码不正确,此时jsp页面中将提示用户密码不正确。实现此功能的jsp代码如下:/* adminPasswordFail .jsp*/ adminPasswordFail 密码不正确 2秒种后从新输入密码2对普通管理员的操作总管理员登录成功后,系统将对除了总管理员以外的所有普通管理员进行查询操作。此时页面运行结果如图所示。 总管理员查询功能单击相应管理员后面的【修改密码】按钮即可进行密码的修改。具体的操作方法同“更改总管理员密码”的操作方法相同。添加新的管理员:单击【添加新的管理员】按钮,界面右侧自动显示相关的界面, 管理员注册单击“请输入账号”文本框,输入相应的账号,单击【提交】按钮,系统自动显示如图所示的界面,单击“密码”及“真实姓名”文本框,输入密码及姓名,最后单击【提交】按钮,系统弹出注册成功的提示信息即管理员添加成功。持久层的查询代码如下:接口类的代码:/* ManagerDao.java*/package com.victor.dao;import java.util.List;import com.victor.domain.ManagerActionForm;public interface ManagerDao public List managerSelect(ManagerActionForm managerActionForm); /在接口类的查询方法方法实现接口类的代码:/* ManagerDaoImpl.java*/查出所有的管理员 public List managerSelect(ManagerActionForm managerActionForm) JDBConnection connection = new JDBConnection(); /调用连接数据库的方法 List list = new ArrayList(); /定义一个List容器的对象,去实现ArrayList()中的方法 String sql = select * from tb_manager where mark= + managerActionForm.getManagerMark() + ; /有条件的查询语句 try ResultSet rs = connection.executeQuery(sql); /调用JDBConnection查询的方法 while (rs.next() ManagerActionForm manager = new ManagerActionForm(); manager.setManagerID(Integer.valueOf(rs.getString(1); manager.setManagerName(rs.getString(2); manager.setManagerPassword(rs.getString(3); manager.setManagerRealName(rs.getString(4); manager.setManagerIssueDate(rs.getString(5); manager.setManagerMark(rs.getString(6); list.add(manager); /l利用对象list的add()方法把查出来的数据放在List容器中 connection.close(); /关闭数据库 catch (SQLException ex) return list; /返回值要与方法的类型要一致 服务层的查询代码如下:接口类的代码:/* ManagerFacade.java*/public interface ManagerFacade public List managerSelect(ManagerActionForm managerActionForm);实现接口类的代码:/* ManagerFacade.java*/public class ManagerFacadeImpl implements ManagerFacade private ManagerDao managerDao; public ManagerFacadeImpl() this.managerDao = new ManagerDaoImpl(); public List managerSelect(ManagerActionForm managerActionForm) return this.managerDao.managerSelect(managerActionForm); /利用对象managerDao调用持久层的方法 控制层实现的代码如下:/*ManagerFacade.java*/package com.victor.webtier.managerAction;import org.apache.struts.action.*;import javax.servlet.http.*;import com.victor.domain.ManagerActionForm;import com.victor.service.ManagerFacade;import com.victor.service.ManagerFacadeImpl;import java.io.UnsupportedEncodingException; /加载所需要的类/总管理员全部查看信息public class AdminSelectAction extends Action private ManagerFacade managerFacade; public AdminSelectAction() this.managerFacade = new ManagerFacadeImpl(); public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) ManagerActionForm managerActionForm = (ManagerActionForm) actionForm; managerActionForm.setManagerMark(普通管理员); httpServletRequest.setAttribute(listAdminSelect,managerFacade.managerSelect(managerActionForm); return actionMapping.findForward(adminSelectAction); struts-config.xml的配置:/* struts-config.xml*/ 管理员查询jsp代码的实现:/*adminSelect.jsp*/查看全部信息function projectDelete(date)if(confirm(是否删除这一组数据吗?)window.location=adminDeleteAction.do?managerID=+date; 查看全部信息 数据库ID 帐号 真实姓名 注册时间/t
展开阅读全文