新闻发布系统毕业设计
新闻发布系统
引语
新闻发布系统(News Release System or Content Management System)又叫做内容管理系统,是一个基于新闻和内容管理的全站管理系统,新闻发布系统是基于B/S模式的WEBMIS系统。本系统可以将杂乱无章的信息(包括文字图片和影音)经过组织,合理有序地呈现在大家面前。当今社会是一个信息化的社会,新闻作为信息的一部分有着信息量大,类别繁多,形式多样的特点,新闻发布系统的概念就此提出.新闻发布系统的提出使电视不再是唯一的新闻媒体,从此以后网络也充当了一个重要的新闻媒介的功能。简单地说,新闻发布系统就是充当一个网络新闻媒介的功能,主要实现对新闻的分类、上传、审核和发布模拟了一般新闻媒介的新闻发布的过程,通过不同权限的账号分别实现以上所说功能,当然这些功能也可以是某一个账号全部具有。
随着互连网的进一步发展,网络媒体在人们心中的地位进一步提高,新闻发布系统做为网络媒体的核心系统,其重要性是越来越重要:一方面,它提供一个新闻管理和发布的功能;另一方面,现在的新闻发布要求实现与普通的用户实现交互,用户可以很方便地参加一些调查和相关新闻的评论,这一点也是其他一些媒体现在无法做到的(电视,电台等)。同时,Internet发展到当今,可以说只要你上Internet,你就会接触到新闻发布系统。新闻发布系统的用户是相当惊人的,其重要性是不容置疑的,当然这也对新闻发布系统的开发提出了更高的要求。
摘要
互联网时代的到来引发了当今的信息爆炸,更多更快的新闻通过不同的形式在互联网上与众多网民见面。每日清晨,我们总会打开Sina、Yahoo、Tom去获得更多的新闻。更多的企业为了让外界了解自己也纷纷开发了新闻发布系统。本系统可以将杂乱无章的信息(包括文字、图片和影音)经过组织,合理而且有序地呈现在大家面前。简单的说,新闻发布系统就是充当一个网络新闻媒介的功能。
本系统利用Java Web部署,利用java、Tomcat、Microsoft SQL Server2005数据库等软件工具制作。
“基于WEB的新闻发布系统”可以很好地帮助用户发布并展示新闻,用户可以自定义栏目及新闻分类,发布新闻信息,并提供新闻、栏目的管理。本篇论文主要分为四个部分,依次为:网站的系统设计、数据库的设计与实现、后台系统和数据库的配置、前端网络的开发与设计。
关键字:Java,Java Web,Microsoft SQL Server2005,新闻发布系统
目录
第一章新闻发布系统概述--------------------------------------------------------------------------------- 1.1系统开发背景-------------------------------------------------------------------------------------------- 1 1.2新闻发布系统模式-------------------------------------------------------------------------------------- 2第二章新闻发布系统的总体
2.1系统需求分析 ------------------------------------------------------------------------------------------ 2 2.2系统要实现的目标----------------------------------------------------------------------------------- 2 2.3 功能模块简介 ---------------------------------------------------------------------------------------- 3第三章新闻发布概要设计---------------------------------------------------------------------------------
3.1 MVC实现策略 --------------------------------------------------------------------------------------- 4 3.2前端控制器-------------------------------------------------------------------------------------------- 4 3.3应用控制器-------------------------------------------------------------------------------------------- 5 3.4示例工程简介----------------------------------------------------------------------------------------- 6第四章网站的详细设计
4.1新闻发布系统前台主页设计与实现----------------------------------------------------------------- 7 4.2新闻发布系统后台主页设计与实现-------------------------------------------------------------- 8 4.2.1后台登陆页面设计--------------------------------------------------------------------------------- 8 4.2.2后台主界面设计---------------------------------------------------------------------------------- 13 4.3各个模块的实现 ------------------------------------------------------------------------------------- 14
4.3.1 添加栏目模块 ---------------------------------------------------------------------------------- 14
4.3.2 栏目管理模块 ---------------------------------------------------------------------------------- 15
4.3.3 添加类别模块 ---------------------------------------------------------------------------------- 16
4.3.4 类别管理模块 ---------------------------------------------------------------------------------- 16
4.3.5 添加新闻模块 ---------------------------------------------------------------------------------- 17
4.3.6 新闻管理模块 ---------------------------------------------------------------------------------- 17 第五章数据库的设计与实现------------------------------------------------------------------------------
5.1数据库连接的实现--------------------------------------------------------------------------------- 18 5.2数据库各个表的实现------------------------------------------------------------------------------ 19
5.2.1t_Class表的实现------------------------------------------------------------------------------- 19
5.2.2t_Item表的实现-------------------------------------------------------------------------------- 20
5.2.3t_News表的实现 ------------------------------------------------------------------------------ 21
5.2.4t_News_User表的实现---------------------------------------------------------------------- 22 结束语-------------------------------------------------------------------------------------------------------- 22 参考文献 ---------------------------------------------------------------------------------------------------- 23 致谢----------------------------------------------------------------------------------------------------------- 24
第一章新闻发布系统概述
1.1系统开发背景
现代新闻学诞生有200年的历史了。自从造纸术和印刷术的出现,新闻学的发展脚步就没有一刻停歇下来。随着技术的不断进步,新闻也在不断的发生着变化,从早期的纸张记录,到蒸汽印刷机带来的报业繁荣,乃至新闻电讯稿在美国内战期间被广泛的使用。随着收音机的兴起,我们听到了更多梦寐以求的声音,卫星电视的出现也改变了我们的生活,到了今天的网络时代,我们甚至只需要一台电脑和一根网线就可以看到世界任何一个地方的信息。互联网以惊人的速度渗透着人们的生产、生活。企事业单位、机关团体乃至住宅小区上网已经成为一种潮流和时尚。
网站新闻发布系统,又称为信息发布系统。是将网页上的某些需要经常变动的信息,类似新闻、新产品发布和业界动态等更新信息集中管理,并通过信息的某些共性进行分类,最后系统化、标准化发布到网站上的一种网站应用程序。网站信息通过一个操作简单的界面保存到数据库中,然后通过已有的网页模板格式与审核流程发布到网站上。它的出现大大减轻了网站更新维护的工作量,通过网络数据库的引用,将网站的更新维护工作简化到只需录入文字和上传图片,从而使网站的更新速度大大缩短。在某些专门的网上新闻站点,如新浪的新闻中心等,新闻的更新速度已经是即时更新,从而大大加快了信息的传播速度,也吸引了更多的长期用户群,时时保持网站的活动力和影响力。
1.2新闻系统发布模式
本新闻发布系统使用的是B/S架构。
基于WEB的新闻发布系统的特点就是利用Browser/Server(B/S)结构,实现新闻的在线发布、添加、修改、删除等功能。这种系统的优势在于系统简单、功能强大、扩展能力良好以及能够方便的跨地域操作等性能。
B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。
Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。
客户端使用浏览器可以对服务器发起请求,而服务器与数据库相连,服务器就会把数据库中的数据收集,响应给浏览器。后台人员向服务器中添加的数据,会送人到数据库中保存。
第二章新闻发布系统的总体规划
2.1系统需求分析
一个功能基本完善的新闻发布管理系统应是完全控件式的页面布局,使得新闻的录人工作更简便。对新闻的录入、修改、删除等操作,都将立即在主页的对应栏目显示出来,实现“即时发布、即时见效”。所以至少应该具有以下的功能:
1、新闻查看:负责对新闻的列表、分类查看和详细信息的显示。
用户进入系统后,能够查看最近的发布的新闻,并能够选择查看某个新闻类别的所有新闻。用户单击某个新闻标题,就能够查看新闻的详细内容
2、新闻查找:根据指定的条件查找新闻记录。用户登录后可以指定条件进行新闻查找。
3、新闻管理:完成新闻信息的列表,新闻的增加修改和删除操作。
根据管理员的权限,对系统进行管理,超级管理员只有一位,他比普通管理员具有更多的权限。
4、新闻类别管理:管理员在此进行增加修改和删除新闻类别的操作。
5、新闻栏目管理:管理员可以对新闻栏目进行修改、添加和删除等操作。
2.2系统要实现的目标
新闻发布系统主要功能为新闻信息的发布,以及新闻信息的浏览。可以将系统分为两个部分,一个为后台管理部分,一个为前台显示部分。通过后台管理部分来进行新闻数据的维护,通过前台显示部分进行新闻的浏览。
不同类型的用户有不同的操作:公司的员工可以登录到后台,维护栏目包括添加、删除、修改栏目、调整栏目顺序,维护类别包括添加、删除、修改类别、调整类别顺序,发布新闻和维护新闻管理;终端用户可以登录网页浏览新闻。
系统要实现的功能大致如图 2.1所示:
2.3功能模块的简介
根据系统的需求分析设计如图 2.2 所示的工作流程图:
通过工作流程图,我们可以看出新闻发布系统分为两个大的部分:新闻管理后台系统和新闻前台浏览系统。
如表 2.1 就是对功能模块的划分:
第三章 新闻发布概要设计
3.1 MVC 实现策略
系统实现采用分层思想,整个网站的层次分为:表示层、业务逻辑层、业务实体层、数据访问层。以下是各层的作用:
表示层:实现与用户的交互
业务逻辑层:实现业务逻辑方法(前端控制器和应用控制器) 业务实体层:实现数据库表的映射(模型层)
数据访问层:实现数据库信息读写操作的方法(模型层)
表示层调用业务逻辑层的方法,业务逻辑层调用数据访问层的方法,而业务逻辑层和数据访问层要用到业务实体层中的实体类。各层之间的调用关系如图 3.1 所示:
3.2 前端控制器
前端控制器是通过中央控制器提供请求管理和处理。
前端控制器(Font Controller )取代通常发生在表示层的请求,从而取代MVC (Model View Controller )模式的控制器部分。前端控制器管理内容的读取、导航。前端控制器是系统的一个入口,它负责调用相应的逻辑Bean 。逻辑Bean 负责完成相应的处理工作,然后更新视图View 。
前端控制器处理所有来自用户的请求。这些请求只有在得到控制器的验证并被前端控制器重新定向才可以访问相应的资源。这也是安全空值的一种方式。
实际上在Java EE 体系结构下,各种资源的联结都是通过XML 实现的。所有Web 层的应用在部署的时候都必须打包成WAR 文件,Web 应用通常是由一些JSP 、Servlet 和
Java Bean
以及JSP标签组成。在简单的Web应用中,可以在JSP文件中实现对业务方法,甚至后台数据库资源等实现的直接访问。但是作为一个可扩展和可伸缩的应用来说,这样做有很多不变任何模式都有应用的上下文环境(context),在实际中有可能是多个控制器分布式地处理不同的控制要求。这种分布式控制机制是由Web的配置文件Web.xml来实现的。当然也可以集中处理所有请求,在一个集中的环境中判断分发请求。分布式控制用户的请求是由配置文件描述的,如下是一个完整的前端控制器描述。
完整的前端控制器代码如下:
当有客户端请求时,容器都要读取配置文件以便判断用户对资源的访问权限,并对某些类型的用户分发到对应的控制器来处理。
3.3DAO模式
在应用控制器中,我们将通过调用数据访问对象(DAO)模式来完成具体的处理方法。DAO (Data Access Object)模式能够更加专注于编写数据访问代码。DAO负责将VO(Value Object)存入数据库或者从数据库中读取数据生成VO。
3.4示例工程简介
按照程序的层次,我们划分出controller、model两个包,具体如图 3.4 所示:
在controller下面划分了三个包:
cn.handson.controller.action:应用分发器包,其中Action和BaseAction是这个包的接口和实现类。
cn.handson.controller.listener:过滤器和监听器的包。
cn.handson.controller.servlet:防止Servlet的包,前端控制器DispatcherServlet 在该包中。
在model下面划分了两个包:
cn.handson.model.connection;
cn.handson.model.service /*而它的下面又划分了四个包:*/
cn.handson.model.service.dao;
cn.handson.model.service.dao.page;
cn.handson.model.service.exception;
cn.handson.model.service.pojo;
第四章网站的详细设计
4.1新闻发布系统的前台设计与实现
网页的前台页面设计如图 4.1 所示:
需要实现的功能有:
1、导航栏中要显示每个新闻栏目名称链接,同时还需要新闻首页的链接、用户登录页面的链接。
2、热点新闻要显示每月点击最高的4条新闻。
页面整体采用表格布局,关键代码如下:
border="0" id="index_r1_c1" alt="" /> |
4.2新闻发布系统后台主页设计与实现 4.2.1后台登录页面的设计 用户在login.jsp页面中输入用户名、密码,并将其提交,在DispatcherServlet中接受请求并将请求转发到LoginAction中。在LoginAction的query方法中调用了UserDao与数据库交互,对用户名和密码进行验证。如果验证失败,LoginAction返回一个错误的URL,转回login.jsp;如果验证成功,LoginAction返回一个成功的URL,转向index.html页面。 后台登陆界面如图 4.2 所示: 后台功能实现步骤如下: 第一步:在开始编写登录代码之前,先编写数据库访问的类(DefaultConnectionFactory.java),它实现了ConnectionFactory接口,这样做的好处是, 当我们需要更改系统数据库管理系统时,只需要更改本类中的代码即可实现,而无需更改项目中的其他代码,提高了项目的可维护性。同时对JDBC连接的封装,提高了代码的重用性。 详细代码如下: public Connection getConnection() { Connection conn = null; try { Class.forName(DRIVER_NAME); conn = DriverManager.getConnection(URL,USERNAME, PASSWORD); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } 第二步:把连接SQL Server 2005的驱动jar包:sqljdbc.jar放到lib中。 第三步:在cn.handson.model.service.pojo包中创建管理员的值对象——NewsUser类,其代码如下: private int userId; private String userName; private String userPassword; 并为其提供get、set方法。 第四步:在程序架构中提供一个基类BaseDao,我们所写的数据访问对象必须继承BaseDao。通过重写BaseDao的一些方法完成CRUD的操作。为了完成登录的数据持久部分,我们继承BaseDao实现类UserDao。在cn.handson.model.service.dao包中创建抽象类BaseDao,代码如下: public abstract class BaseDao{ private ConnectionFactory connectionFactory; public ConnectionFactory getConnectionFactory(){ if(connectionFactory= =null){ connectionFactory =new DefaultConnectionFactory() }return connectionFactory; } } 在cn.handson.model.service.dao包中创建UserDao类,在UserDao中重写父类的query 方法,用来检验用户名和密码是否正确。代码如下: public class UserDao extends BaseDao{ public List query(Object objects) throws DataAccessException { Connection conn = getConnectionFactory().getConnection(); PreparedStatement pstmt = null; ResultSet rs = null; boolean isUser = false; NewsUser user = (NewsUser) objects; try { pstmt = conn.prepareStatement("select userid,userpassword" + " from t_news_user where username=?"); pstmt.setString(1, user.getUserName()); rs = pstmt.executeQuery(); String password = null; if (rs.next()) { password = rs.getString("userpassword"); user.setUserId(rs.getInt("userid")); if (password.equals(user.getUserPassWord())) { isUser = true;} } else { isUser = false;} List list = new ArrayList(); list.add(Boolean.valueOf(isUser)); list.add(user); return list; } 第五步:在完成DAO后,实现应用控制器Action,在程序架构中提供了一个接口Action 和一个抽象类BaseAction。Action是一个抽象接口,它里面做任何的抽象和定义,在抽象类BaseAction中我们定义了若干个业务方法,以调用相关业务。为登录创建一个单独的Action 叫做LoginAction,它在cn.handson.controller.action包中,在LoginAction中完成用户的验证和登录,代码如下: public class LoginAction extends BaseAction { public String query(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); NewsUser user = new NewsUser(); String username = ""; username = request.getParameter("username"); String password = request.getParameter("password"); user.setUserName(username); user.setUserPassWord(password); UserDao userDao = new UserDao(); List userResult = null; userResult = userDao.query(user); Boolean isUser = (Boolean) userResult.get(0); if (isUser.booleanValue() == true) { user = (NewsUser) userResult.get(1); String uname = user.getUserName(); session.setAttribute("username", uname); session.setAttribute("user", user); return "/admin/index.html"; } else { return "/admin/login.jsp"; } } 第六步:完成了LoginAction类后,要在请求中对其进行调用,Action的调用是在前端控制器DispatcherServlet中完成的,在DispatcherServlet中需要在其重写的doGet和doPost方法中调用dispatch分发方法。通过DispatcherServlet类的实现,完成了前端请求的分析、调用处理和转向。在调用处理方面,DispatcherServlet类通过解析管理员登录请求提交的URI(login.do)决定调用相关的应用控制器(LoginAction)来处理。 第七步:把Web.xml文件中的代码添加到工程的Web.xml中,代码如下: 第八步:编写完Web.xml文件后,编写登录页面,用于发送登录请求。Login.jsp代码如下: 当管理员登录失败后,跳转的页面还是login.jsp;管理员登录成功后,跳转的页面是后台主页面。 4.2.2后台主页面的设计 后台主页面设计如图 4.3所示:
|