
毕业论文(设计)
题 目:新闻管理与发布系统
学 号:********B100
姓 名:周 x x
年 级:2008级
学 院:信息科学技术学院
系 别:计算机科学与技术
专 业:计算机科学与技术
指导教师:xx xx
完成日期: 年 月 日
摘 要
网络技术的飞速发展,促进信息传播的速率,拓展了信息的覆盖面。我们每天都会轻易的接受到大量的新闻资讯。然而,快速更新、数量巨大的新闻数据,给新闻信息管理者带来了新闻管理工作的巨大压力;同时对于新闻受体,在浏览信息前不得不花大量的时间进行筛选,才能得到对自己有效的信息,传播新闻的速率提高了,但针对性、有效性却下降了。本课题针对这一问题,使用JavaWeb技术、MySQL数据库、Tomcat服务,通过MCV架构实现了一套基与B/S结构的新闻管理与发布系统。论文介绍了该系统的设计与实现过程,主要包括系统概述、使用的相关技术简介、需求分析、系统总体设计、系统详细设计、数据库设计、系统实现等八个部分内容。绪论部分概述本系统问题的提出,开发目的;技术介绍部分简要的介绍开发本系统用到的技术;需求分析部分包括对本系统开发的总体需求分析及功能需求分析等;系统总体设计包括对本系统的数据流的分析图和系统总体功能模块图;系统详细设计是针对每一个功能模块的设计说明;系统数据库设计部分是系统数据库的设计与实现说明;系统实现部分包括系统实现过程的描述。
关键词: 新闻信息管理;针对性;JSP;MVC;
Abstract
The rapid development of network technology is making great contribution in promoting the dissemination of information rate and expanding the coverage of the informatio-n. Every day we received a lot of news and information easily. However, the huge amount of rapidly updating data of news has brought much work pressure to the news and information managers, at the same moment to get the valid information It was inevitable for the news consumer to take a long time in information filtering, for this reason it is better to say the decline of relevance and effectiveness better than the rate increase of news broadcasting; For this issue above, this project use Java Web technology, MySQL database, the Tomcat service, discuss how to implement a B / S structure based information management and publishing system by MCV architecture. This paper intr-oduces the system design and implementation process, including a summary of the system, the use of technology introduction, requirements analysis, system design, system detailed design, database design, system implementation in eight parts. Introduction summarize an overview of the problem proposed, the development purposes; technical description is part of a brief introduction to the technology used in developing the system; needs analysis is part of the overall and function analysis; system design including the system analysis of data flow diagrams and overall functional module diagram; detailed design of the system for the design of each function module; the design portion of the system database is the description of system database design ;system implementation section includes a description of the system achieve process.
Keywords: news information management; relevance; JSP;MVC Design Pattern
1.系统概述
1.1.问题提出
21 世纪是信息化的时代。随着信息技术, 特别是网络技术、通信技术和多媒体技术的飞速发展,极大提高了现实生活中新闻信息的传播速率、拓展了信息的覆盖面。只要我们一打开电脑,连上网络,便可以在第一时间接收到全球各地、各个时段的财政资讯、实时报道、娱乐活动等各个方面的各种类的巨量信息。网络的发展,拓展了信息的传播渠道,提高信息传播速率、增广覆盖面的同时,也导致了网络信息的日益膨胀,同时夹杂在新闻报道的各类商业广告、不良信息充斥着我们的眼球。对于信息接受者而言,虽然通过各类新闻浏览网站便可接触到最新的时讯,但往往巨量的新闻其实并不全是自己感兴趣的信息,所以在浏览新闻时不得不花掉大量的时间进行筛选,才能得到自己想要的有效信息。新闻的快速更新、新闻量的不断增大,也给新闻管理的工作者带来新闻组织、信息分类上的工作压力。
新闻传播不能只是在传播速度上的提高,也要关注新闻信息发布的有效性,将新闻信息传播给需要它的受体。提高新闻发布的针对性、准确性。
因此,为了方便人们快速的获取自己关注的新闻消息,促进新闻传播的有效性,提高新闻系统的管理者在管理、发布新闻上工作的效率,必须开发一个功能完善、使用方便的新闻管理与发布系统来满足人们的需求。
1.2.项目目的
本课题是为了实现一套比较完整的新闻管理与发布系统。方便前台用户通过系统接收有效的新闻时讯,快速浏览到用户关注的实时报道。而新闻管理人员可以通过系统对进行编辑、发布、审核等工作,提高工作效率。
1)前台系统总体目标:
⏹页面布局结构清晰、合理色调统一,提高用户体验效果。
⏹新闻信息的按不同的板块模式显示,方便普通浏览用户浏览站点新闻。
⏹前台包含用注册功能,每个注册用户拥有自己的个人新闻中心。
⏹注册用户可以订阅新闻消息,系统根据用户订阅栏目,显示相关栏目的信息。
⏹系统注册用户可以对自己喜爱的新闻进行收藏条目,方便再次浏览新闻内容。
⏹系统根据用户浏览的信息、用户收藏内容、订阅栏目自动提供新闻推荐(用户关注、感兴趣的栏目)。
2)后台系统总体目标:
⏹管理员登陆时验证用户名和密码,通过后可以使用后台系统。系统根据管理员权限,分配管理员的操作。
⏹系统超级管理员可以对整个系统的信息进行更新,对前台用户进行增、删、改管理,给系统的普通管理员进行权限的修改。
⏹系统普通管理员通过验证后可以,使用后台系统对网站的新闻条目进行增加、编辑、审核等功能, 以及对新闻评论评论进行统一管理。
1.3.可行性分析
由于开发此新闻管理与发布系统需要的环境有Windows 2000及以上系统,基于WEB的网络编程开发语言Java,需要操作人员熟练使用Java语言进行网络编程。MySQL数据库的熟悉,需要操作人员熟练使用进行相关数据库的操作,具有一定的数据库开发功底及编程能力。使用的网页设计开发工具Drameweaver和Photoshop相结合,优美的界面设计。再加上Windows 2003或WindowsXp稳定的运行环境的支持和开发人员的过硬技术,从功能和性能上完全都满足系统的要求,因此从技术方面来讲开发此新闻管理系统是可行的。
2.Jsp及相关技术简介
2.1.关于Jsp技术
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP与JavaServlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。
2.2.JavaScript
JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言。你可以利用JavaScript轻易的做出亲切的欢迎信息、漂亮的数字钟、有广告效果的跑马灯及简易的选举,还可以显示浏览器停留的时间。让这些特殊效果提高网页的可观性。
2.3.B/S结构
B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对c/s结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过www浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。B/S结构,主要是利用了不断成熟的www浏览器技术,结合浏览器的多种Script语言(VBScript,JavaScript)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的c/s结构应用程序将是巨大的进步。B/S结构的系统一般由浏览器、Web服务器和数据库服务器组成,其结构如 图2.3.1
图2.3.1 B/S结构的系统的体系结构
2.4.MVC框架
MVC是一个设计框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
MVC架构的特点:
1)低耦合性
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2)高重用性和适用性
随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
3)较低的生命周期成本
MVC使开发和维护用户接口的技术含量降低。
4)快速的部署
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
5)可维护性
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
6)有利于软件工程化管理
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。
3.系统需求分析
3.1.总体需求描述
新闻管理与发布系统主要分为前台和后台两大部分,呈现给用户浏览器的是前台的网站部分,这一部分提供给用户系统内的新闻资讯供用户浏览和使用;后台部分一般不与用户打交道,由管理员对后台的信息进行管理。它主要包括应用程序服务器和数据库服务器。应用程序服务器控制着前台网站的功能和表现形式,而数据库服务器则用来存放大量的站内新闻信息资源。管理系统的前台网站的具体的组织实施过程就是网站的建设过程,我们一般从网页的设置和布局方面来考虑。网页设计的总体原则是要把项目开发信息以及相关消息、资源集中在网站页面上,这样有利于简化用户对有用信息的查寻。而具体的处理过程,则是根据不同的需求类型来确定不同的页面构成。如果每次建立一个新的网站都需要从最低层的网站的设计着手将是一个重复而繁琐的工作。包括网站页面的布局和设置,后台数据库的描述,信息资源的整合等方面。
网站系统用户面临不同的阶层,我们不光要使后台的数据库设计满足需求,也因为用户使用的访问工具因人而异,所以我们需要在浏览器的兼容性方面下苦功夫,并且要尽量达到W3C标准。
3.2.功能需求
实时新闻管理发布系统主要是满足用户浏览实时新闻,通过新闻管理发布系统来关注自己感兴趣的新闻,获取有用的实时信息,并且通过自己的新闻订阅功能可以在第一时间得到自己关注的信息,增强了信息传播的有效性。除此之外新闻管理与发布系统能够方便管理员、新闻编辑等系统后台用户对新闻的管理以及实事新闻的发布,提高工作的效率。
新闻管理发布系统的使用用户基本分为三类:系统管理员、普通管理员、注册用户、普通浏览用户。
管理员,通过后台管理系统实现网站内容的更新与维护,及时发布新的新闻资讯。系统管理员还可以管理员进行权限的管理。
注册用户,完成注册后可以根据自己需求修改订阅不同栏目的新闻信息,收藏自己感兴趣的新闻、更改个人信息等。
3.3.页面需求
根据系统的功能需求新闻管理发布系统的页面主要分为两大类:前台页面和后台页面。
前台页面主要包括:新闻网站首页、用户新闻文章浏览、用户登陆注册页面、用户信息更改页面、新闻栏目订阅页面、用户收藏夹页面、新闻推荐显示页面等。
后台页面主要包括:管理员登陆页面、系统管理页面、系统信息页面、用户管理页面、安全管理页面(管理员权限管理)、新闻编辑管理页面。
3.4.数据需求
通过数据字典的各个部分内容可以基本完成对数据需求的描述。
3.4.1.基本数据项及数据结构
基本数据项:
1)用户信息:用户名、密码、订阅内容、等级、注册时间、权限、订阅记录、个人说明等数据项,用以完成对注册用户的描述。
2)新闻信息:包括新闻标题、新闻板块、新闻栏目、发布时间、评论数等。
3)评论信息:包括评论内容、时间、评论ID等
4)图片信息:所属文章编号、描述、存储地址、图片名等
5)新闻栏目信息:包括栏目名、点击率、收录文章数量、所属板块等。
6)新闻板块信息:包括板块名、点击率。
7)系统信息:包括系统名称、注册用户数量、版本号等。
8)等级信息:包括等级名称、等级描述、用户数量。
9)收藏记录信息:包括用户ID、文章ID、新闻标题、收藏时间等。
10)用户浏览信息:用户ID、浏览新闻ID、浏览新闻标题、浏览新闻所属栏目。
3.4.2.数据条目
| 名称 | 别名 | 简述 | 来源 | 去向 |
| 用户注册信息表 | 用户注册时必须正确填写的信息表 | 注册用户 | 用户数据库 | |
| 用户数据更新表 | 用户数据变动时用户数据更新的数据表 | 注册用户 | 用户数据库 | |
| 新闻发布信息表 | 网站编辑发布新闻时信息表 | 网站管理员 | 新闻信息数据库 |
1)功能的完整性
2)数据库的安全性
3)软件的可维护、可靠性
4)程序的可移植性
3.6.系统开发环境
服务器:免安装版Tomcat5.0
JDK :JDK1.6
IDE: Myeclipse8.0、DreamweaverCS5
浏览器:Mozilla Firefox
4.系统总体设计
4.1.系统数据流
根据数据需求以及系统功能需求的分析,可以得到数据流图。
4.1.1.顶层数据流图
图 4.1.1.1 顶层数据流图
4.1.2.一层数据流图
一层数据流图如 图4.1.2.1所示:
图 4.1.2.1层数据流图
4.1.3.二层数据流图
如图4.1.3.1 4.1.3.2所示:
图4.1.3.1 2层数据流图
图4.1.3.2 2层数据流图
4.2.系统总体功能模块
根据需求分析,可以得到系统的总体模块。系统总体模块可分为前台和后台两块系统总体功能模块如 图:
图4.2.1 系统总体模块图
各功能模块的具体功能介绍:
本系统主要分为:前台展示新闻和后台管理两大部分,下面对系统的各部分功能模块加以详细说明。
5.系统详细设计
5.1.前台功能模块
前台系统大模块包括页面展示、个人新闻中心。细化后分为为页面展示、会员登陆注册、新闻展示、栏目订阅、新闻收藏、新闻推荐。
1)页面展示,包括首页新闻展示、单篇新闻显示、评论列表显示。首页中包含各类板块新闻的展示,用户点击单篇新闻后进入单篇新闻的展示,及文章评论。总的来说页面展示是该网站为用户提供的一个浏览新闻的平台,管理员会把近期的新闻展示给用户看,可以分类查询,把数据库中的新闻按板块、及各类排行显示出来,不仅方便了用户查找新闻信息,同时也使得网站有一个清晰的系统结构。
2)会员登陆包括会员注册、资料修改、会员登录。每一个浏览该网站的用户,系统都会提示注册用户。注册用户可以修改个人信息、登录密码等。
3)新闻订阅是为方便用户浏览新闻,每个注册用户都有一个“个人新闻中心”,在用户浏览新闻的过程中,随时可以查看自己已浏览过的新闻和关心的新闻,还可以修改其订阅的新闻栏目,系统会根据用户订阅的栏目为用户提供实时新闻。
4)新闻收藏为注册用户提供一个收藏新闻信息的空间,用户在浏览新闻时可以把自己喜欢的新闻加入到收藏夹。以便再次查询浏览。
5)用户注册后,在个人新闻空间可以使用新闻推荐功能,该功能根据用户平常浏览的喜好,及各类新闻的点击率为用户提供三个栏目的新闻信息。
前台模块结构图,如图
图5.1.1前台系统模块结构图
5.2.后台功能模块
主要包括系统管理、内容管理、用户管理、安全管理四大部分。
1)系统管理分为系统设定、公告管理。管理员以超级管理者的身份登录后台后,只要具备系统管理的权限,就可以对使用系统设定功能对系统的名称、系统描述等基本信息进行设定。公告管理功能完成对网站友情链接、公告的增加、删除、修改。
2)内容管理:包括板块管理、栏目管理、新闻管理、评论管理。管理员以管理者身份登陆后,通过板块管理、栏目管理对网站系统的板块、栏目进行增加更改、删除、修改。新闻管理实现网站管理员对网站前台新闻的添加、编辑、删除、审核、发布以及修改新闻在前台显示的状态。管理员如果具备评论管理权限可使用评论管理功能对,网站新闻的评论进行查看、审核、删除及更改其显示状态(设定是否前台显示)。
3)用户管理分为:用户组管理、用户管理。系统超级管理员可以通过用户组管理功能修改网站注册前台注册用户的分组类型,添加、删除、修改分组。用户管理功能实现对注册用户查看、删除、修改登录状态等操作。
4)安全管理,实现对系统超级管理员的查看、添加、删除以及每一位管理员使用后台对各个栏目新闻进行增加、删除、编辑、审核操作的权限分配。
后台管理系统结构图如,图5.2.1
图5.2.1 后台系统模块结构图
5.3.新闻管理系统业务流程分析
新闻管理与发布系统前台主要是实现网上浏览新闻的整个业务流程,通过网站上的新闻展示和分类查询功能、浏览新闻的信息、浏览新闻的信息;找到想要浏览的新闻后,会员便可以将想了解的新闻先放入“我的新闻中心”中,然后再找其它新闻,会员可查询“我的新闻”里面的已选定的新闻项,并可以删除项目。
会员在新闻管理系统的整个浏览过程的业务流程。
如图5.3.1所示:
图5.3.1前台系统主要业务流程
新闻管理与发布系统后台主要为管理员提供新闻管理的平台,管理员登陆后台后系统根据管理员的权限提供不同的操作,管理员可以通过后台系统对网站的新闻进行编辑、发布、删除、审核等管理操作。超级管理员除了可以对新闻信息进行管理外,可以对普通管理员进行管理,如添加、删除、管理员,更改普通管理员的权限。
图5.3.2后台系统主要业务流程
5.4.系统业务流程细化
该系统的具体模块设计:其中前台管理包括会员登记、新闻展示、新闻订阅三大部分,后台管理包括会员管理、新闻管理、分类处理三大模块。
下面介绍前台管理子系统的设计:
1)会员登记
会员登记子系统划分成会员登录、会员注册模块,图3.5.1是会员登记流程图5.4.1:
图5.4.1会员登记流程图
2)新闻展示
新闻展示子系统可以对新闻进行分类展示,图5.4.2是新闻展示流程图:
图5.4.2 新闻展示流程图
3)新闻选定
新闻选定子系统可以查询新闻、修改已选新闻和提交新闻,新闻订购流程图如5.4.3所示:
图5.4.3新闻订阅流程图
下面介绍后台管理部分子系统的设计:
4)会员管理
会员管理子系统划分成会员删除、查看会员模块。子系统查看、删除用户的流程图如图5.4.4所示:
图5.4.4 查看、删除用户流程图
5)新闻管理
新闻管理子系统分为添加新闻、查看新闻、修改新闻、删除、审核新闻四个部分,其查看新闻、修改新闻、删除新闻模块的流程图如图5.4.5所示:
图5.4.5查看、修改、删除新闻模块的流程图
6.系统数据库设计
在建设网站系统之前,必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。
数据库设计要遵循一些规则,一个好的数据库满足一些严格的约束和要求。尽量分离各实体对应的表,一个实体对应一个表,分析该实体有哪些属性,对应有些什么字段,以及各实体之间的联系。实体、属性与联系是进行概念设计时要考虑的三个元素,也是一个好的数据库设计的核心。
6.1.数据概念模型设计
数据库概念模型设计是在需求分析的基础上进行的。根据分析的结果得出的以下几个实体:管理员、注册用户、新闻信息、评论信息、收藏信息、订阅信息等。
6.1.1.新闻管理系统E-R图
系统E-R图 如下
图6.1.1.1系统E-R
6.1.2.实体属性图
系统实体属性图,如图6.1.2.1
图6.1.2.1 实体属性图
6.2.数据库逻辑结构设计
实体描述
会员信息=会员编号+用户名+密码+等级+登陆状态+积分+订阅栏目+权限+Email+注册日期+性别
栏目信息=栏目编号+栏目名称+所属板块+新闻总条数+显示状态+描述
收藏信息=收藏号+ 新闻编号+ 用户号
新闻详细信息=新闻编号+新闻名称+新闻类别+所属栏目+新闻编辑+点击量
系统基本统计信息=注册用户数 + 总新闻数量 + 系统名称+版本号
图片信息=图片编号 + 描述 + 存储地址+ 添加时间+所属栏目+所属板块
板块信息= 板块编号+ 描述+创建时间+包含栏目数
收藏信息 =收藏编号 + 新闻编号 + 收藏时间+ 收藏新闻标题+所属栏目+收藏用户编号 + 收藏时间
板块信息 = 板块编号+ 描述+创建时间+包含栏目数
用户浏览记录信息=记录编号 + 用户编号 + 浏览新闻编号 + 浏览新闻所属编号
6.3.数据库逻辑模型设计
数据库表的结构基本情况如下:
表6.3.1 n_user用户信息表
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | int(11) | 自增 |
| userName | 用户注册名称 | char(30) | Not null |
| rankId | 用户等级 | int(11) | Not null |
| pwd | 密码 | char(30) | Not null |
| powers | 管理员权限 | varchar(500) | Not null |
| subscription | 订阅记录 | varchar(500) | Not null |
| sex | 性别 | varchar(1) | Not null |
| 邮箱 | char(50) | 允许为 null | |
| state | 状态 | int(1) | Not null |
| regTime | 注册时间 | varchar(50) | Not null |
| lastTime | 上次登陆时间 | varchar(50) | Not null |
| loginNum | 个人签名 | int(11) | Not null |
| commentNum | 邮箱 | int(11) | Not null |
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | Int(11) | 自增 |
| columnId | 栏目ID | Int(11) | Not null |
| columnName | 栏目名 | Ntext | Not null |
| title | 新闻标题 | varchar(25) | Not null |
| picId | 图片ID | Int(10) | 允许 null |
| addDate | 添加时间 | varchar(25) | Not null |
| content | 新闻内容 | Char | Not null |
| kitNum | 新闻点击率 | Int(11) | Not null |
| commentNum | 评论内容 | Int(4) | Not null |
| author | 发布管理员 | char(20) | Not null |
| authorId | 管理员ID | int(11) | Not null |
| lasComment | 最新评论 | char(150) | Not null |
| source | 来源 | char(50) | Not null |
| sourceUrl | 网络来源Url | char(100) | Not null |
| isExamine | 是否通过审核 | varchar(5) | Not null |
| sortId | 所属板块ID | int(11) | Not null |
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | int(11) | 自增 |
| content | 评论内容 | varchar(500) | Not null |
| articleId | 新闻ID | int(11) | Not null |
| authorId | 评论人ID | int(11) | 允许null |
| author | 评论人 | varchar(30) | 允许 null |
| postTime | 评论时间 | varchar(50) | Not null |
| display | 是否显示 | int(1) | Not null |
| sortId | 新闻板块ID | int(11) | Not null |
| columnId | 新闻栏目ID | Int(11) | Not null |
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | int(11) | 自增 |
| sortName | 板块名 | varchar(30) | Not null |
| info | 描述 | varchar(150) | 允许 null |
| kitNum | 点击率 | int(11) | Not null |
| columnNum | 栏目ID | int(11) | Not null |
| aritcleNum | 包含新闻总数 | int(11) | Not null |
| createTime | 创建时间 | varchar(50) | Not null |
| reviewTotal | 评论总数 | int(11) | Not null |
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | int(11) | 自增 |
| info | 描述 | varchar(500) | 允许为 null |
| addr | 存储地址 | varchar(500) | Not null |
| postTime | 发布时间 | varchar(50) | Not null |
| articleId | 新闻ID | int(11) | Not null |
| sortId | 板块ID | int(11) | Not null |
| cloumnId | 栏目ID | int(11) | Not null |
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | int(11) unsigned | 自增 |
| columnName | 栏目名 | varchar(10) | Not null |
| sortId | 板块ID | int(11) | Not null |
| sortName | 板块名 | varchar(100) | Not null |
| info | 栏目描述 | varchar(150) | 允许 null |
| kitNum | 点击率 | int(11) | Not null |
| aritcleNum | 文章总数 | int(11) | Not null |
| reviewTotal | 评论总数 | int(11) | Not null |
| createTime | 创建时间 | varchar(50) | Not null |
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | int(11) | 自增 |
| articleId | 新闻ID | int(11) | Not null |
| userId | 用户ID | int(11) | Not null |
| favTime | 添加收藏时间 | varchar(50) | 允许为 null |
| title | 标题 | char(150) | Not null |
| columnId | 栏目ID | int(11) | Not null |
| columnName | 栏目名 | varchar(10) | Not null |
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | int(11) | 自增 |
| userId | 用户ID | int(11) | Not null |
| articleId | 新闻ID | int(11) | Not null |
| columnId | 新闻所属栏目ID | int(11) | Not null |
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | int(11) | 自增 |
| userTotal | 用户总数 | int(11) | Not null |
| articelTotal | 新闻总数 | int(11) | Not null |
| columnTotal | 栏目总数 | int(11) | Not null |
| info | 描述 | char(150) | Not null |
| reviewNum | 评论总数 | int(11) | Not null |
| 列名 | 说明 | 类型 | 备注 |
| id | 主键 | int(11) | 自增 |
| rankName | 用户类别名 | char(30) | Not null |
| isLogin | 用户组是否可登陆 | int(1) | Not null |
| userTotal | 组用户总数 | int(11) | Not null |
该系统在MySQL数据库系统中设计完成
数据库设计 如图6.4.1
图6.4.1 系统数据库设计图
数据表设计,如图6.4.2
图6.4.2 系统数据表设计
7.系统实现
7.1.Jsp+Servlet+JavaBean实现MVC架构
本系统采用Jsp+Servlet+JavaBean方法实现MVC设计模式。编写本系统时,力求做到简单明了,严格遵循三层结构。模型(Model):用Java类以及Java对象实现,封装业务逻辑,提供相应的接口。视图层:主要由Java Server Page(JSP)承担,生成视图的代码则可能是一个servlet的一部分。控制器:由Servlet来实现,视图发送请求控制器(servlet),控制器依据请求的不同,调用相应的模型(java类),模型处理之后的结果会返回给控制器,控制器会依据结果选择合适的视图(JSP)。
系统架构如 图7.1.1 所示,
图7.1.1 系统实现架构
7.2.业务逻辑实现
系统采用了DAO设计模式实现数据层的访问。DAO模式是J2EE核心模式中的一种,其主要目的就是在业务核心方法和具体数据源之间再增加一层,用这一层来连接业务方法和数据源,这样就实现了两者的解耦,如图7.2.1
图7.2.1 数据库访问图
数据源为关系数据库MYSQL。通过使用DAO模式,业务核心部分就不用关心数据层是如何实现数据库操作的,只关心自己的业务操作即可。数据库的操作全部交给DAO代理。系统中对应每一个实体对象都有相关的DAO操作类。
7.3.Servlet实现控制器
本系统的每一个模块都用相应的处理的Servlet,不同模块的Servlet根据页面的请求,控制程序流程转向。系统中主要包括:新闻处理的Servlet、评论处理的Servlet、栏目处理的Servlet、登陆处理的Servlet、图片处理的Servlet、用户收藏的Servlet等。
7.4.系统开发实现项目
1)结构清晰系统项目文件结构,便于对文件进行管理,有助于提高我们开发软件的效率,图
图7.3.1 系统项目文件结构图
2)系统功能实现的各个类结构
图7.3.3实体类、数据操作DAO类、servlet类
3)系统程序流如 图7.3.4
图7.3.4 系统程序流图
7.5.表示层实现
表示层负责接收用户的输入以及将输出数据呈现给用户,并且根据CSS样式表决定呈现样式。表示层可以对简单的用户输入数据的有效性负责,同时管理会话及页面跳转等逻辑。鉴于此表示层又可分为页面的美工以及表示逻辑。
7.5.1.页面美工
网站的页面是与用户交互的直接前台,用户感受网站好坏的一个影响因素便是对网站页面可视化感官,因此表示层的设计的可观性、协调性、交互性程度是评价一个网站优良的重要因素。所以页面的美工效果对网站的能否推广起着关键性作用。
在设计页面时需要考虑网站的整体统一性,个人认为一个网站不适宜包括太多风格的页面,应该凸显主题、实现整个系统的统一性。因此在设计页面的美工时会选择一些主题样式文件(如.skin、CSS样式文件以及整张的模板页和网站frame框架等)作为网站统一的主题。
本网站页面设计中采用了“DIV+CSS”页面样式布局方法,这样的设计方法可以通过.css文件统一设计页面样式使得内容和样式的分离,使页面和样式的调整变得更加方便,而且CSS的极大优势表现在简洁的代码,能够增强网页的可读性。
1)前台页面设计实现
前台页面整体布局如 图7.5.1.1
图7.5.1.1 前台页面整体布局
前台首页index.jsp显示如 图7.5.1.2
图7.5.1.2 前台首页
新闻查看及评论如图
查看新闻图7.5.1.3
2)后台页面设计实现
后台页面整体布局如 图7.5.1.4
图7.5.1.4后台页面整体布局图
后台管理系统后台页面如 图7.5.1.5
图7.5.1.5 后台页面
7.5.2.表示逻辑
表示逻辑负责与表示有关的逻辑,如页面如何条件性跳转、根据用户的输入进行数据验证,然后显示不同的信息、根据系统运行情况显示不同的信息等。概括来说,美工决定了“怎么显示”,表示逻辑决定了 “显示什么”。
表示逻辑根据不同状态显示不同页面内容,如用户登录后在页面上加入用户的信息、根据操作的不同调用不同的操作控制器,绑定显示数据,更新列表信息(如最新发布的新闻、最新评论、点击排行榜等)。
本系统页面动态数据的显示控制主要用到了JSP表达式和JSTL标签。如在页面的首页顶端,用户没有登录时无Session数据,页面显示“登录”、“注册”。用户登陆后则显示用户信息和个人新闻中心入口、退出登陆链接。
其表示逻辑代码为:
${userBean.userName},您好! | [ 退出
7.6.前台主要模块功能实现
7.6.1.用户注册登陆
前台系统提供多用户使用,用户可以通过注册成为网站会员。页面如图
图7.6.1.1前台用户登陆页面
7.6.2.个人新闻中心
用户进入系统后可以通过注册页面注册成为为系统的用户,系统会在用户表内增加一条包含有个人的ID,userName等信息的记录的。用户可通过前台登陆页面登陆系统,系统根据数据库信息显示,“个人主页”。
进入个人新闻中心后用户可以“查看收藏”,“查看订阅”,“查看系统推荐新闻”、“修改个人信息”等。个人新闻中心如 图7.6.2.1
图7.6.2.1 个人中心页面
7.6.3.新闻收藏
注册用户登陆后可以在浏览新闻时对感兴趣的新闻进行,“添加收藏”将新闻添加到个人的收藏夹中。如图7.6.3.1
图7.6.3.1 添加到收藏
加入收藏后,打开个人收藏夹,既可以查看和管理收藏夹的内容。本系统收藏夹现在的实现了“查看“、“删除”、“清空收藏夹”功能。如 图7.6.3.2
图7.6.3.2 新闻收藏夹页面
7.6.4.新闻订阅
1)用户注册成功后,登入个人新闻中心,系统会自动订阅两个的内容,用户点击“栏目名称”,便可以通过超链接查看该栏目中最新发布的前六条新闻。订阅目录显示,如图7.6.5.1
图7.6.4.1 订阅目录
2)用户可以通过“修改订阅”功能,修改订阅的栏目。更改完成后,提交用户的订阅情况会在订阅列表里显示。如图7.6.4.2
图7.6.4.3 新闻订阅
修改后的栏目显示如 图7.6.4..4
图7.6.4..4 添加到目录后
点击订阅的栏目后,显示新闻列表 如 图7.6.4.5
图7.6.4.5 查看订阅
3)订阅信息的存储,在数据中表示为用户的表n_user的“subscribe”字段,subscription是一个具有如下形式的字符串“,5-33,8-34,8-35,”, “,2-16,2-17,2-18,3-13,3-14,”其中有效数据为5-33, 8-34,8-35, 数据中”-”前一位表示板块ID,“-”后一位数据表示栏目ID。在后台提取数据时首先用split方法对字符串进行切分得到一个一维数据,然后以形式板块ID号(栏目ID、栏目ID、栏目ID、栏目ID)的形式进行分组。其切分关键代码如下:
String[] sub = substr.split(
for (int i = 1; i < sub.length; i++) {
sortId = sub[i].split("-");
sortId1 = Common.strToint(sortId[0]);
SubBean subbean = new SubBean();
subbean.setSortId(sortId1);
subbean.setSortName(sortdao.getSortNameById(sortId1));
Sublist.add(subbean);
for (int j = i+1; j < sub.length; j++) {
sortId = sub[j].split("-");
sortId2 = Common.strToint(sortId[0]);
if (sortId1 != sortId2) {
i = j - 1;
break;
}
}
}
int sublist=Sublist.size()-1;
boolean flag=Sublist.get(sublist).getSortId()==Sublist.get(sublist-1).getSortId();
if(sublist>0&&flag)//如果最后一个和倒数的二个相等去掉最后一个元素
{
Sublist.remove(sublist);
}
for (int i = 1; i < sub.length; i++) {
subId1 = sub[i].split("-");
for (int j = 0; j < Sublist.size(); j++) {
num1 = Common.strToint(subId1[0]);
num2 = Sublist.get(j).getSortId();
if (num2 == num1) {
Sublist.get(j).getColumnIdlist().add(Common.strToint(subId1[1]));
Sublist.get(j).getColumnNamelist().add(columndao.getcolumnNameById(Common.strToint(subId1[1])));
break;
}
}
}
切分方法:返回一个包含实体的SubBean 对象的List 数据。
其中SubBean类 包含四个属性值和它的GET SET 方法,为:
public class SubBean implements Serializable {
private int sortId = -1;
private String sortName = "";
private List columnIdlist = new ArrayList();
private List columnNamelist = new ArrayList();
7.6.5.新闻推荐
在用个人新闻中心里,系统会通过n_article(新闻表)、n_record(用户浏览文章记录表) 、n_favorites(用户收藏表)以及用户订阅的信息,根据新闻记录的评论总数(review)、点击率(kitsNum)等因素为用户提供四个栏目的新闻内容。点击“查看推荐”,打开推荐列表, 如图7.6.5.1
图7.6.5.1 今日推荐列表
7.7.后台主要模块功能实现
7.7.1.后台系统主页
后台系统主页为用户登陆界面,用户通过用户名和密码验证后进入到系统,根据权限使用后台系统的管理功能。如图7.7.1
图7.7.1 后台系统主页
7.7.2.后台新闻管理
后台新闻管理,为用户提供对系统新闻的增删改、及审核操作。下面介绍新闻添加:
管理员进入系统后,在菜单栏中选择“内容管理”,点击新闻管理,页面会显示查询到的当前数据库中的新闻信息。图7.7.2.1
图7.7.2.1 新闻管理页面
点击“添加新闻页面”,使用新闻添加功能 如图7.7.2.2
图7.7.2.2 新闻添加
填写好表单后,是否提交图片,是否允许评论后,点击提交。系统会将请求提交给ArticleServlet,ArticleServlet首先判定输入是否合法,如果输入正确,ArticleServlet调用articleAdd操作方法,将数据插入数据库。(本系统使用SmartUpload,来实现上传图片)articleAdd方法:获取页面传入的数据后,将图片上传,保存到服务器中,保存成功后将一条数据记录插n_picture数据表,然后通过picID = pdao.queryMaxId();获取图片的ID,再将一条包含新闻标题、新闻内容、图片ID、图片路径的记录插入n_article表。
需要注意的是,在JSP页面中包含多媒体文件的表单
