摘 要
随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。个性化已逐渐成为当今Web应用的潮流。本系统是利用JSP技术开发的、利用SQL Server 2000数据库搭建的网站新闻管理系统,实现了前台用户使用、后台用户管理的B/S模式即浏览器/服务器模式。系统大体分两个模块:前台模块;后台模块。前台模块主要实现了用户登录、会员注册、会员信息修改、会员管理新闻信息等功能;后台模块主要实现了添加用户、对会员的权限管理、对新用户加入的审核管理、对新闻信息的管理等功能。本系统具有动态性强、安全保密性好、用户界面友好、容易操作等优点,使得用户对信息的管理更加及时、高效。
关键词:JSP技术;SQL Server 2000;网站新闻管理
I
ABSTRACT
Along with the development of computer science, database technology in Internet is widely used for the user, the network provides circumspect and humanized service.Personalized has gradually become the tidal current Web application.This system is developed by using the techniques JSP SQL Server 2000 database, the web news management system, realized the receptionist user use the user management, the background of B/S model which browser/Server mode.System can be generally divided into two modules: receptionist module, Backstage module.Receptionist module mainly realizes the user login, member, member information modification, member management functions such as news, Backstage module mainly realizes the user to members, add to the new user popedom, add to the audit management, information management, etc.This system dynamics, safety and good secrecy, user friendly interface,easy to operate etc, and allows the user to information management more timely and efficient.
Key words: The JSP Technology;SQL Server 2000;Web News Management
II
目 录
摘 要............................................................. I ABSTRACT .......................................................... II 目 录........................................................... III 前言 ............................................................... 1 1系统开发环境和技术 ............................................... 2 1.1 开发环境介绍 ................................................... 2
1.1.1 MyEclipse ............................................ 2 1.1.2 SQL Server2000 ....................................... 2 1.1.3 Tmocat ............................................... 4 1.2.1 JSP技术 ............................................. 5 1.2.2 JDBC技术 ............................................ 5
2 系统分析 ......................................................... 7 2.1 需求分析 ....................................................... 7 2.2 可行性分析 ..................................................... 7
2.2.1 技术可行性 ........................................... 7 2.2.2 经济可行性 ........................................... 7 2.2.3 社会可行性 ........................................... 8
3 系统设计 ......................................................... 9 3.1 系统特点 ....................................................... 9 3.2 模块设计 ....................................................... 9
3.2.1 前台功能模块 ......................................... 9 3.2.2 后台功能模块 ........................................ 10
3.3 概要设计 ...................................................... 10 3.4 数据库设计 .................................................... 17 4系统实现 ........................................................ 25 4.1管理员登录 .................................................... 25 4.2后台管理 ...................................................... 27 5.系统测试 ........................................................ 46 5.1系统开发环境 .................................................. 46 5.2系统测试 ...................................................... 46
5.2.1测试项目说明 ........................................ 46 5.2.2测试评价 ............................................ 46
III
结 论 ............................................................. 47 致 谢............................................................ 48 参考文献 .......................................................... 49
IV
前言
近年来,Internet技术得到迅速的发展,已经成为计算机产业的一个技术热点。促成Internet高速发展的因素之一就是Web技术。Web技术的发展使得那些具有交互动态页面、有条理的数据库查询、丰富信息内容的页面成为最吸引人的网页。浏览Web有着执行Windows程序一样的感觉和操作性。随着Internet技术的发展,已经成为一种操作平台,为用户提供强大的服务,例如网上购物,网上电子商务,社会信息数据库服务等。
作为计算机发展最迅速的领域之一的数据库技术,已经形成了一整套独有的理论,并广泛地应用于人们的生产和生活中。数据库技术与网站的结合是当今Web技术的一个热点。有了数据库的支持,可以扩展网页的功能,可以方便地设计出交互式页面,可以构造功能强大的后台管理系统,可以为网站的更新、维护提供极大的方便。因此,作为网络开发者或管理者,数据库知识是必不可少的。
在当前社会,信息已成为一种隐型的财富,人们对信息的需求再也不是局限于单纯的电视、报纸等大众途径。随着Internet在中国的发展日新月异,人们在日常生活中也越来越多地使用这项新技术来为自己的工作和生活服务,人们通过网络来获取信息的需求越来越大。基于此种考虑,本系统设计并实现了一种“基于Web的新闻发布系统”,该系统能够实现在线更新最新新闻、设置新闻分类导航等功能,此外,网站管理员也可在线对后台进行管理,例如新闻的修改、删除等操作,以保证新闻的及时、准确。
1
1系统开发环境和技术
1.1 开发环境介绍 1.1.1 MyEclipse
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大地提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。
在结构上,MyEclipse的特征可以被分为7类: JavaEE模型 ;WEB开发工具 ;EJB开发工具 ;应用程序服务器的连接器 ;JavaEE项目部署服务 ;数据库服务 ;MyEclipse整合帮助。对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错。
1.1.2 SQL Server2000
SQL Server 2000 是Microsoft 公司推出的数据库管理系统,它是在SQL Server 7.0的基础上对性能、可靠性、质量以及易用性进行了扩展。SQL Server 2000中包含许多新特性,这些特性使其成为针对电子商务、数据仓库和在线商务解决方案的卓越的数据库平台。其增强的特性包括对丰富的扩展标记语言(XML)的支持、综合分析服务以及便捷的数据库管理。可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。SQL Server不但可以应用于大中型数据库管理中,建立分布式关系数据库,并且也可以开发桌面数据库。事实上,SQL Server数据库处理的基本结构,采取关系型数据库模式,尽管如此,SQL Server的数据库处理方式,则是使用面向对象的操作方式与思想,也就是说,SQL Server的所有功能,都可以基于系统已经建立好的一
2
些对象来达成,是面向对象的一个系统结构。
SQL Server 2000具有良好的兼容性,它除了具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤其是它可以直接存贮XML 数据,可以将搜索结果以 XML格式输出等特点,为构建异构系统的互操作性,奠定了面向互联网的企业应用和服务的基石。这些特点在.NET 战略中发挥着重要的作用。
在使用由Microsoft SQL Server 2000关系数据库引擎的过程中,XML数据可在关系表中进行存储,而查询则能以XML格式将有关结果返回。此外,XML支持还简化了后端系统集成,并实现了跨防火墙的无缝数据传输。还可以使用Hypertext Transfer Protocol(超文本传输协议,HTTP)来访问SQL Server 2000,以实现面向SQL Server 2000数据库的安全Web连接和无须额外编程的联机分析处理(OLAP)数据集。
SQL Server 2000 关系引擎增加了实质化的视图,改善了在特大型数据库环境中执行复杂查询的性能。同时,SQL Server 2000 引入了新的数据挖掘功能,可自动发现在大量数据之间隐藏的关系,并可基于历史数据作出预测。这些数据挖掘功能将要实施,以向最终用户隐藏这种尖端技术的复杂性,并允许开发人员将第三方的数据挖掘产品轻松地集成在客户的应用程序中。
Microsoft SQL Server 2000非常明显的改进就是增加了OLAP(联机分析处理)功能,这可以让很多中小企业用户也可以使用数据仓库的一些特性进行分析。OLAP可以通过存储技术对大型、复杂数据集进行快速、高级的分析工作。数据挖掘功能能够揭示出隐藏在大量数据中的倾向及趋势,它允许组织或机构最大限度的从数据中获取价值。通过对现有数据进行有效分析,这一功能可以对未来的趋势进行预测。
Microsoft SQL Server 2000简化了管理、优化了工作,并且增强了迅速、成功的部署在线商务应用程序所需的可靠性和伸缩性。其中,用以提高可靠性的特性包括日志传送、在线备份和故障切换群集。通过自动优化和改进后的管理特性,诸如数据文件尺寸的自动管理、基于向导的数据库拷贝、自动内存管理和简化的故障切换群集安装与管理,在线商务应用程序能够被迅速部署并有效管理。
3
SQL Server 企业管理器是 SQL Server 的主要管理工具,它提供了一个遵从 MMC 标准的用户界面,使用户得以:
1)定义 SQL Server 实例组。 2)将个别服务器注册到组中。
3)为每个已注册的服务器配置所有 SQL Server 选项。
4)在每个已注册的服务器中创建并管理所有 SQL Server 数据库、对象、登录、 用户和权限。
5)在每个已注册的服务器上定义并执行所有 SQL Server 管理任务。 通过调用 SQL 查询分析器,交互地设计并测试 SQL 语句、批处理和脚本。它支持中小型数据库,多用户的高性能和事物处理,支持分布式数据库和分布处理,能够实现安全性和完整性控制,具有可移植性、可兼容性和可联结性,它具有良好的数据管理能力和良好的开发性。
1.1.3 Tmocat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是7.0
Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器
4
的扩展,但它是运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 的进程单独运行的。
这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat
实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。1.2本系统采用的关键技术
1.2.1 JSP技术
JSP是由Sun公司于1999年6月推出的一项技术,是基于JavaServlet以及整个Java体系的Web开发技术,利用这一技术可以建立先进、安全和跨平台的动态网站。JSP技术在多个方面加速了动态Web页面的开发。
与微软公司的ASP技术相比,JSP具有如下优点:
(1) 开放的技术:JSP技术基于平台和服务器的相互,技术支持来自广泛的、专门的、各种工具包,有服务器的组件和数据库产品开发商提供。相比之下,ASP技术主要依赖MICROSOFT支持。
(2) 平台和服务器的性:JSP编写的代码可运行在任何符合JAVA语法结构的环境中。这样JSP就能够运行在多种WEB服务器上并支持来自多家开发商提供的各种工具包。
(3) 开放的开发过程,开放的源码:自1995年以来,SUN用开放过程方法同国际JAVA组织合作开发和修改JAVA技术和规范。
(4) JSP标记可扩充性:JSP技术能够为开发者扩展JSP标记,充分利用与XML兼容的标记技术强大的功能,大大减少对脚本语言的依赖。
(5)JSP跨平台的可重用性:JSP组件(EJB,JavaBean或定制的JSP标记)都是跨平台可重用的。
1.2.2 JDBC技术
JDBC是Java的开发者—Sun的JavaSoft公司制定的Java数据库连接JavaDataBaseConnectivity技术的简称,是为各种常用数据库提供无缝连接的技术。JDBC在Web和Internet应用程序中的作用和ODBC在Windows系列平台应用程序中的作用类似。JDBC有一个非常独特的动态连接结构,
5
它使得系统模块化。使用JDBC来完成对数据库的访问包括以下四个主要组件:Java的应用程序、JDBC驱动器管理器、驱动器和数据源。简单地说,JDBC能完成下列三件事:
(1) 同一个数据库建立连接; (2) 向数据库发送SQL语句; (3)处理数据库返回的结果。 JDBC
是
一
种
可
用
于
执
行
SQL
语
句
的
JavaAPI(ApplicationProgrammingInterface,应用程序设计接口)。它由一些Java语言写的类、界面组成。JDBC给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。
通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQLServer。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。不但如此,使用Java编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上编写不同的应用。Java和JDBC的结合可以让开发人员在开发数据库应用时真正实现“WriteOnce,RunEverywhere!”。
Java具有健壮、安全、易用等特性,而且支持自动网上下载,是一种很好的与数据库线连接而使用的编程语言。它所需要的是Java应用如何同各种各样的数据库连接,JDBC正是实现这种连接的关键。
JDBC扩展了Java的能力,如使用Java和JDBCAPI就可以公布一个Web页,页中带有能访问远端数据库的Applet。或者企业可以通过JDBC让全部的职工(他们可以使用不同的操作系统,如Windwos,Machintosh或UNIX)在Intranet上连接到几个全球数据库上,而这几个全球数据库可以是不相同的。
6
2 系统分析
2.1 需求分析
在现在手工操作的基础上,更深入的研究新闻管理的处理流程,整体确定了系统总的结构和功能模块,研究各个功能模块之间的联系,并确定了模块之间的接口方案,按照系统的实用性、可靠性、可扩充性、经济性的原则,这几了各类码表及相应的程序代码,并测试了程序的正确性,制定了一套合理、完整的测试方案,对系统进行了整理流程的和功能的测试,使系统达到了用户的使用要求。
2.2 可行性分析
在卡法任何一个基于技术机的应用系统时,都会受到时间、资源上的显示。所以在开发任何应用系统,必须要和客户进行沟通,了解系统的需求,根据客户显示的时间和资源进行可行性分析,减少系统开发的风险,避免人力和财力上的浪费。
2.2.1 技术可行性
本系统的数据库采用的是比较稳定的Microsoft SQL Server,本数据库系统在安全性、准确性和运行速度各方面有绝对的优势,在处理大量数据是,效率高;开发工具采用的是MyEclipse,目前应用最广泛的JAVA开发工具,能够快速开发Windows的应用程序。
2.2.2 经济可行性
本系统投资成本比较低,只要了解开发的的架构和技术,费用较低;另外,由于现在Internet技术的迅速发展,动态网页的开发需求量大,数据和网站的结合又是当今Web技术的热点,在这种情况下,本系统有关阔的前景。所有本系统产生的经济效益远大于开发成本。
7
2.2.3 社会可行性
本溪同采用大叫都比较熟悉的页面设计风格,并有页面引导,操作简单,容易入手;在软件使用阶段只需对企业内部人员进行简单的培训就可以掌握。系统的维护需要有专业的技术人员进行维护,但由于网络行业的发展,目前企业都有专门的计算机人员,所以这不是问题。
8
3 系统设计
3.1 系统特点
(1)系统采用Browser/Server,支持多种浏览器; (2)系统采用的WIN7操作系统;
(3)系统采用SQL Server大型分布式数据库系统,系统稳定; (4)系统从服务器端实现数据资料的统一集中管理; (5)系统具有备份和恢复数据库的功能; (6)系统的页面易用性强,友好,操作简单; (7)系统支持键盘和鼠标操作,简单、快捷; (8)数据库系统跨平台的可移植性,保障原有投资;
3.2 模块设计
新闻管理系统是一个典型的数据库应用程序,前台有:会员注册、会员登录、修改个人信息、新闻管理等模块,后台有:会员管理、新闻管理、新闻分类管理、浏览当日新闻、评论管理等模块组成。
3.2.1 前台功能模块
(1)会员注册模块
会员注册模块是用户通过在页面注册界面填写自己的信息,验证通过后,需等待系统管理员审核后,方能成为系统的会员。
(2)会员登录模块
会员登录模块是用户在登录页面输入登录的用户名和密码,系统确认正确后,登录到系统的首页
(3)修改个人信息模块
修改跟心信息模块是用户在成功登录后,可以修改自己的基本信息。 (4)评论新闻模块
评论新闻模块是用户在成功登录后,可以对发布的新闻信息发表自己的一件和想法,对新闻信息评论的功能。
(5)查看新闻评论模块
9
查看新闻评论模块是用户成功登录后可以对新闻信息内容的评论进行查看。
(6)新闻管理模块
新闻管理模块是对发布的新闻、搜索/编辑、删除发布的新闻、自己发布的新闻是否可以评论以及浏览当日新闻查看新闻的点击量。
3.2.2 后台功能模块
(1)系统管理员登录模块
系统管理员登录模块是实现管理员用户和密码校验的后台功能。 (2)管理员管理模块
管理员管理模块主要有管理用户的功能,主要包含锁定用户、审核用户、更改用的权限等功能。
(3)分类管理模块
分类管理模块主要有添加、修改、删除栏目及增加、删除和修改类别的功能。
(4)新闻管理模块
新闻管理模块主要是实现发布的新闻、搜索/编辑、删除发布的新闻、自己发布的新闻是否可以评论以及浏览当日新闻查看新闻的点击量。
(5)评论管理模块
新闻评论管理模块对自己发布的新闻评论进行管理的功能。
3.3 概要设计
(1)总体功能框图
对上述各项功能进行集中概况,按照结构化程序设计的要求,得下图3-1所示的系统功能框图。
10
网站新闻发布系统 系统管理员 管理 类分闻管理 新论管理 评改信息 修闻评论 新看评论 查闻管理 新闻浏览 新闻浏览 新册会员 注
会员 游客 普通用户 员 管管 理 理 图3-1 总体功能框图
(2)实体图
1)新闻用户信息结构的设计包括用户编号、用户密码、用户名、锁定、级别、审核,设计该实体图,如图3-2所示。
11
用户编号 图3-2 新闻用户实体图
新闻用户 用户名 审核 锁定 级别 用户密码 2)新闻系统信息的结构设计包括系统编号、服务器类型、版权等,设计该实体图,如图3-3所示。
新闻系统 系统编号 版权 服务类型 图3-3 新闻系统实体图
3)新闻统计信息的结构设计包括统计编号、年点击量、日点击量、新闻编号、月点击量、总点击量,设计该实体图,如图 3-4所示。
12
统计编号
新闻统计 年点击量 总点击量 日点击量 新闻编号 月点击量 图3-4新闻统计实体图
4)新闻日志信息的结构设计包括日志编号、操作员姓名、操作类型、创建新闻的IP地址、新闻标题、操作日期,设计该实体图,如图3-5所示。
操作员姓名
图3-5新闻日志实体图
日志编号 新闻日志 新闻标题 操作类型 新闻日志IP 操作日期
5)新闻评论信息的结构设计包括评论编号、新闻编号、评论内容、评论人名字、评论日期,设计该实体图,如图3-6所示。
13
评论编号
图3-6新闻评论实体图
新闻评论 评论内容 新闻编号 评论人名字 评论日期
6)新闻信息的结构设计包括新闻编号、新闻标题、新闻类别编号、新闻来源、新闻内容、新闻关键字、用户编号、新闻日期,设计该实体图,如图3-7 所示。
新闻编 号 用户编 号 图3-7 新闻信息实体图
14
新闻 新闻标题 新闻类别编号 新闻内容 新闻来源 新闻关键字 新闻日期
7)日志信息的结构设计包括日志编号、日志日期、用户编号、日志IP,设计该实体图,如图3-8所示。
日志编号 图3-8 日志信息实体图
日志 日志IP 用户编号 日志日期 8)新闻栏目信息的结构设计包括栏目编号、栏目描述、栏目名称、栏目显示顺序,设计该实体图,如图3-9所示。
栏目编号 图3-9 新闻栏目实体图
新闻栏目 栏目显示顺序 栏目名称 栏目描述
9)新闻类别信息的结构设计包括类别编号、类别名、类别描述、栏目编号、类别显示顺序,设计该实体图,如图3-10 所示。
15
类别编号 图3-10 新闻类别实体图
新闻类别 类别显示顺序 类别名称 类别描述 栏目编号 10)新闻权限管理信息的结构设计包括权限编号、类别编号、用户编号,设计该实体图,如图3-11 所示。
图3-11 新闻权限实体图
新闻权限 权限编号 类别编号 用户编号 16
(3)数据库运行设计E-R图,如图3-12 所示。 新闻用户 1 新闻栏目 属于 图3-12总体E-R图
1 发布 N 新闻信息 N 属于 1 N 新闻类别
3.4 数据库设计
本系统数据库采用SQL Server 2000数据库,通过企业管理器创建数据库,命名为NEWS,根据以上E-R图形成了10个完整的基本表:新闻用户表、新闻系统表、新闻统计表、新闻日志表、新闻评论表、新闻信息表、日志信息表、新闻类别表、新闻栏目表、权限信息表,以下为主要数据表:
(1)新闻用户表(NEWS_USER)
新闻用户表是记录系统用户登陆系统信息。主要包用户名、密码、权限等字段,其中用户编号是主键。新闻用户表结构见表3-1。
17
表3-1新闻用户(NEWS_USER)
属性名 数据类型 长度 4 允许空 Not Null 含义 主键 USERID Int 用户编号 用户名称 用户密码 用户权限 用户锁定 用户审核 是 USERNAME Varchar 50 Null 否 USERPASSWOED POWER Varchar Bit 16 Null 否 1 Null 否 LOCKED Bit 1 Null 否 AUDING Bit 1 Null 否 (2)新闻系统表(NEWS_SYSTEM)
新闻系统表存储系统信息,主要包含系统编号、版权、服务器类型等字段,其中系统编号为主键。新闻系统表部分结构见表3-2。
表3-2新闻系统表部分结构(NEWS_SYSTEM)
属性名 数据类型 长度 允许空 含义 主键 SYSTEMID Int 4 Not Null 系统编号 版权 是 BANQUAN Varchar 50 Null 否 FUWUQILEIXING Varchar 20 Null 服务器 类型 否 18
(3)新闻统计表(NEWS_STATISTIC)
新闻统计表存储新闻的统计的信息,主要包含统计编号、新闻编号、年点击量、月点击量、日点击量、总点击量字段,其中统计编号是主键。新闻统计表表结构见表3-3。
表3-3闻统计表(NEWS_STATISTIC)
属性名 数据类型 长度 允许空 含义 主键 STATISTICID NEWSID Int 4 Not Null 统计编号 新闻编号 年点击量 是 Int 4 Not Null 否 YEARHITS MONTHITS DAYHITS Int 4 Null 否 Int 4 Null 月点击量 否 Int 4 Null 日点击量 否 HITS Int 4 Null 总点击量 否 (4)新闻日志表(NEWS_LOGS)
新闻日志表用于记录系统的日志信息,主要包含日志编号、操作员名字、操作日期、操作类型、新闻标题、新闻日志IP,其中日志编号为主键。新闻日志表结构见表3-4。
19
表3-4新闻日志表(NEWS_LOGS)
属性名 数据类型 长度 允许空 含义 主键 LOGSID Int 4 Not null 日志编号 操作员名字 是 OPERATENAME OPERATEDATE OPERATETYPE NEWSTITLE Varchar Datetime Int 50 Null 否 8 Null 操作日期 否 4 Null 操作类型 否 Varchar 100 Not Null 新闻标题 新闻日志IP 否 NEWSLOGSIP Varchar 15 Null 否 (5)新闻评论表(NEWS_COMMENT)
新闻评论表存储用于对新闻的评论信息,主要包含评论编号、新闻编号、评论人名字、评论日期、评论内容字段,其中评论编号为主键。新闻评论表结构见表3-5。
20
表3-5新闻评论表(NEWS_COMMENT)
属性名 数据类型 长度 4 允许空 Not Null 含义 主键 COMMENTID Int 评论编号 新闻编号 评论人名字 评论日期 评论内容 是 NEWSID Int 4 Not Null 否 COMMENTNAME Varchar 50 Null 否 COMMENTDATE Datetime 8 Null 否 COMMENTCONTENT
Varchar 1000 Null 否 (6)新闻信息表(NEWS)
新闻信息表存储新闻的基础信息,主要包含新闻编号、新闻标题、新闻类别编号、新闻日期、新闻关键字、新闻来源、新闻内容、用户编号等字段,其中新闻编号为主键。新闻信息表结构见表3-6。
表3-6新闻信息表部分结构(NEWS)
属性名 数据类型 长度 允许空 含义 主键 NEWSID Int 4 Not Null 新闻编号 新闻标题 是 NEWSTITLE Varchar 10 Null 否 CLASSID Int 4 Null 新闻类别编号 否 21
NEWSDATE Datetime 8 Null 新闻日期 否 NEWSKEY Varchar 20 Null 新闻关键字 否 NEWSOURCE Varchar 100 Null 新闻来源 否 NEWSCONTENT USERID Ntext Int 16 Null 新闻内容 否 4 Null 用户编号 否 (7)日志信息表(LOGS)
日志信息表用于存储系统的操作日志,主要包括日志编号、日志IP、日志日期、用户编号字段,其中日志编号为主键。日志信息表结构见表3-7。
表3-7日志信息表结构(NEWS)
属性名 LOGSID LOGINIP LOGINDATE USERID 数据类型 Int 长度 允许空 含义 主键 4 Not Null 日志编号 日志IP 日志日期 用户编号 是 Varchar Datetime Int 15 Not Null 否 8 Not Null 否 4 Not Null 否 (8)新闻栏目表(ITEMS)
新闻栏目表存储新闻的栏目内容,主要包括栏目编号、栏目名字、栏目描述、栏目顺序字段,其中栏目编号为主键。新闻栏目表结构见表3-8。
22
表3-8新闻栏目表结构(ITEMS)
属性名 ITEMID ITEMNAME ITEMDESC ITEMORDER 数据类型 Int 长度 允许空 含义 主键 4 Not Null 栏目编号 栏目名字 是 Varchar Varchar Int 50 Null 否 200 Null 栏目描述 否 4 Null 栏目顺序 否 (9)新闻类别表(CLASSES)
新闻类别表存储发布新闻的类别信息,主要包括类别编号、类别名、类别描述、类别顺序、栏目编号字段,其中类别编号为主键。新闻类别表结构见表3-9。
表3-9新闻类别表结构(CLASSES)
属性名 数据类型 长度 允许空 含义 主键 CLASSID CLASSNAME CLASSDESC CLASSORDER ITEMID Int 4 Not Null 类别编号 类别名 是 Varchar Varchar Int 50 Null 否 200 Null 类别描述 否 4 Null 类别顺序 否 Int 4 Null 栏目编号 否
23
(10)权限信息表(POPEDOMS)
权限信息表存储用户的新闻类别权限,主要包括权限编号、新闻类别编号、新闻用户编号字段,其中权限编号为主键。权限信息表结构见表3-10。
表3-10权限信息表结构(POPEDOMS)
属性名 数据类型 长度 允许空 含义 主键 POPEDOMID CLASSID USERID Int 4 Not Null 权限编号 类别编号 用户编号 是 Int 4 Not Null 否 Int 4 Not Null 否
24
4系统实现
4.1管理员登录
在管理员登录的界面中,用户需要在用户名文本框中输入登录的用户名,在密码的文本框中数据对应的系统密码,如果验证不同过,则提醒用户重新输入,如果验证通过,则进入系统后台管理页面,管理员登录界面如图4-1所示。
图4-1管理员登录界面
管理员登录功能的主要代码如下: package cn.handson.controller.action; import java.util.*;
import javax.servlet.http.*;
import javax.servlet.http.HttpServletRequest;
25
import javax.servlet.http.HttpServletResponse; import cn.handson.model.service.dao.*; import cn.handson.model.service.pojo.*; import cn.handson.model.service.exception.*; public class LoginAction extends BaseAction{
private static LoginAction loginAction; public static BaseAction getLoginAction(){ if(loginAction == null){ }
return loginAction; }
public String query(HttpServletRequest request, HttpServletResponse response){ List userResult = null;
HttpSession session = request.getSession(); NewsUser user = new NewsUser();
String username = request.getParameter(\"username\"); String password = request.getParameter(\"password\"); session.setAttribute(\"username\ user.setUsername(username); user.setPassword(password);
26
loginAction = new LoginAction();
UserDao userDao = new UserDao(); try{
userResult = userDao.query(user);
}catch(DataAccessException ex){ }
Boolean isUser = (Boolean)userResult.get(0); if(isUser.booleanValue()==true){
user = (NewsUser)userResult.get(1); session.setAttribute(\"user\ session.setAttribute(\"is_admin\ ex.printStackTrace();
session.setAttribute(\"flag\
return \"/admin/index.html\";
}else{ \");
} } }
return \"/admin/login.jsp\";
request.setAttribute(\"error\您的用户名或密码有错误!
4.2后台管理
功能描述:此功能摩卡是新闻管理的的功能,登录管理员可以对已存
27
在的用户进行管理,或郑家新用户以及对新闻信息的增删改等功能。
(1) 管理员管理 1)添加用户
点击“添加用户”,在相应的文本框里输入用户名、密码和确认密码。点击保存后,验证用户名、密码和确认密码是否输入合格,如果失败则重新输入,验证通过后则添加用户成功。添加用户界面如图4-2 所示。
图 4-2 添加用户界面
2)管理用户
点击“管理用户”,是对注册用户的管理,主要的功能为:用户锁定、审核和权限设置。管理用户界面如图4-3 所示。
a) “用户锁定”功能,状态为“未锁定”时,表示该用户是解锁状态;当状态为“锁定”时,表示该用户已被锁定,用户则不能登录成功。
b) “审核”功能,状态为“未审核”表示该用户注册后并未审核过,不能登录;状态为“审核”时,表示该用户已通过了管理员的审核,如果状态为“未锁定”用户则可登录系统。
c) “权限更改”功能,是对用户查看和发布的权限设置。
28
图4-3 管理用户界面
(2) 分类管理
点击“分类管理”,是新闻类别的管理,包括添加栏目、修改栏目、添加类别、修改类别、删除栏目、删除类别的功能。
1)添加栏目
点击“添加栏目”,输入栏目名称、栏目描述,点击“保存栏目”按钮,添加栏目成功。如图4-4 所示。
图 4-4 添加栏目界面
添加栏目的主要代码:
package cn.handson.controller.action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
29
import cn.handson.model.service.dao.*; import cn.handson.model.service.pojo.*; import cn.handson.model.service.exception.*; public class ItemAction extends BaseAction{ private static ItemAction itemAction ; public static BaseAction getItemAction(){ } public
String
create
(HttpServletRequest
if(itemAction==null){ }
return itemAction;
itemAction=new ItemAction();
request,HttpServletResponse response){
加!\");
} }
30
Item item=new Item();
ItemDao itemDao = new ItemDao();
item.setItemName(request.getParameter(\"ClassName\")); item.setItemDesc(request.getParameter(\"dscription\")); item.setItemOrder(itemDao.query()+1); try{
itemDao.create(item);
request.setAttribute(\"success\添加栏目成功,继续添
return \"/admin/item.jsp\";
}catch(DataAccessException e){ }
return \"/admin/error.jsp\";
request.setAttribute(\"errorMessage\添加失败!\"); System.err.println(e.getMessage());
2)栏目管理
点击“栏目管理”,管理新闻的栏目,包括栏目的修改、删除的功能。如图4-5 所示。
图 4-5 栏目管理界面
栏目管理主要代码:
package cn.handson.controller.action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import cn.handson.model.service.dao.ItemDao; import cn.handson.model.service.pojo.Item;
public class ItemModifyAction extends BaseAction { private static ItemModifyAction itemmodifyAction; public static BaseAction getItemModifyAction() { }
public String remove(HttpServletRequest request,
if (itemmodifyAction == null) { }
return itemmodifyAction;
itemmodifyAction = new ItemModifyAction();
31
HttpServletResponse response) {
id
=
int
Integer.parseInt(request.getParameter(\"itemid\"));
String flag = request.getParameter(\"dele\");
String itemname = request.getParameter(\"ItemName\"+id); String itemdes = request.getParameter(\"ItemDesc\"+id);
int
itemor
Integer.parseInt(request.getParameter(\"ItemOrder\"+id));
Item it = new Item(); it.setItemName(itemname); it.setItemDesc(itemdes); it.setItemId(id); it.setItemOrder(itemor);
if (flag.equalsIgnoreCase(\"delete\")) { // 执行删除
ItemDao cla = new ItemDao(); cla.remove(it);
return \"/admin/item_manager.jsp\";
} else{ ItemDao cla = new ItemDao(); //是否已经存在
if(cla.list(it)==true){ HttpSession session = request.getSession(); session.setAttribute(\"er\
return \"/admin/item_manager.jsp\";
}else{ // 执行修改 cla.update(it);
return \"/admin/item_manager.jsp\";
}
32
=
} }
}
3)添加类别
点击“添加类别”,添加新闻的分类,在分类名称中输入类别名称、选择所属的栏目、添加分类描述、填写分类顺序,点击“保存分类”按钮,添加类别成功。如图4-6 所示。
图 4-6 添加分类界面
添加类别的主要代码:
package cn.handson.controller.action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.handson.model.service.dao.*; import cn.handson.model.service.pojo.*; import cn.handson.model.service.exception.*; public class ClassAction extends BaseAction{ private static ClassAction classAction ; public static BaseAction getClassAction(){
if(classAction==null){ }
33
classAction=new ClassAction();
}
return classAction;
public String create (HttpServletRequest
request,HttpServletResponse response){
classuser.setClassname(request.getParameter(\"ClassName\"));
classuser.setItemid(Integer.parseInt(request.getParameter(\"It
ClassUser classuser=new ClassUser(); ClassDao classDao = new ClassDao();
em\")));
classuser.setClassorder(Integer.parseInt(request.getParameter
classuser.setDes(request.getParameter(\"dscription\"));
(\"select\")));
加!\");
} }
4)类别管理
点击“类别管理”,管理新闻类别,包括类别的修改、删除功能。如图4-7所示。
34
try{
classDao.create(classuser);
request.setAttribute(\"success\添加类别成功,继续添
return \"/admin/class.jsp\";
}catch(DataAccessException e){ }
return \"/admin/error.jsp\";
request.setAttribute(\"errorMessage\添加失败!\"); System.err.println(e.getMessage());
图4-7 类别管理界面
类别管理的主要代码:
package cn.handson.controller.action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import cn.handson.model.service.dao.ClassDao; import cn.handson.model.service.pojo.ClassUser; public class ClaModifyAction extends BaseAction { private static ClaModifyAction modifyAction; public static BaseAction getModifyAction() { }
public String remove(HttpServletRequest request,
HttpServletResponse response) { if (modifyAction == null) { }
return modifyAction;
modifyAction = new ClaModifyAction();
int id = Integer.parseInt(request.getParameter(\"id\")); String claname = request.getParameter(\"ClaName\" + id);
35
int itemid =
Integer.parseInt(request.getParameter(\"ItemId\" + id));
String clades = request.getParameter(\"ClaDes\" + id); int
claorder
=
Integer.parseInt(request.getParameter(\"ClaOr\" + id));
String comm = request.getParameter(\"del\"); ClassUser cl = new ClassUser(); cl.setClassid(id); cl.setClassname(claname); cl.setClassorder(claorder); cl.setDes(clades); cl.setItemid(itemid);
if (comm.equalsIgnoreCase(\"del\")) {
ClassDao cla = new ClassDao(); // 执行删除 cla.remove(cl);
return \"/admin/class_manager.jsp\";
} else {
ClassDao cla = new ClassDao(); // 是否为空
if (cla.list(cl) == true) {
HttpSession session = request.getSession(); session.setAttribute(\"er\return \"/admin/class_manager.jsp\";
} else { }
36
}
// 执行修改 cla.update(cl);
return \"/admin/class_manager.jsp\";
}
}
(3) 新闻管理
点击“新闻管理”,新闻管理主要包括新闻发布、当日新闻一览、新闻管理、新闻统计量、文章是否允许评能。
1)新闻发布
点击“新闻发布”,界面中添加新闻标题、选择信息属性、添加关键字、输入信息来源、输入新闻内容,点击“保存”按钮,发布成功。如图4-8 所示。
图4-8 发布新闻界面
发布新闻的主要代码:
package cn.handson.controller.action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import cn.handson.model.service.dao.*; import
cn.handson.model.service.exception.DataAccessException;
37
import cn.handson.model.service.pojo.*;
public class CreatenewsAction extends BaseAction{ private static CreatenewsAction createnewsAction; public static BaseAction getCreatenewsAction(){ if(createnewsAction == null){ createnewsAction = new CreatenewsAction();
}
return createnewsAction;
}
public String create(HttpServletRequest request,
HttpServletResponse response){ CreateNews createnews = new CreateNews();
String newstitle = request.getParameter(\"Newstitle\"); String classid = request.getParameter(\"News_Class\"); String newsdate = request.getParameter(\"Newsdate\"); String newskey = request.getParameter(\"Newskey\"); String newsource = request.getParameter(\"Newsource\");
String
newscontent
request.getParameter(\"Newscontent\");
String userid = request.getParameter(\"Userid\"); createnews.setNewstitle(newstitle);
createnews.setClassid(Integer.parseInt(classid)); createnews.setNewsdate(newsdate); createnews.setNewskey(newskey); createnews.setNewsource(newsource); createnews.setNewscontent(newscontent);
createnews.setUserid(Integer.parseInt(userid)); CreatenewsDao createnewsdao = new CreatenewsDao(); try{
//保存信息
38
=
createnewsdao.create(createnews); //获得操作人
HttpSession session = request.getSession(); String
flag
=String.valueOf(session.getAttribute(\"flag\"));
String
name=String.valueOf(session.getAttribute(\"username\"));
续!\");
\");
}
return \"/admin/error.jsp\"; }
39
String ip=request.getRemoteAddr(); if(flag.equals(\"0\")) {
LogsView logsview=new LogsView(); logsview.setOperatename(name); logsview.setOperatedate(newsdate); logsview.setType(0);
logsview.setNewstitle(newstitle); logsview.setLoginip(ip); LogsDao logsdao=new LogsDao(); //添加到news_logs中
logsdao.insertnewslogs(logsview); }
request.setAttribute(\"success\添加新闻成功,请继
return \"/admin/info_add.jsp\";
}catch(DataAccessException e){
request.setAttribute(\"errorMessage\添加新闻失败!
System.err.println(e.getMessage());
2) 新闻管理
点击“新闻管理”,管理新闻的功能包括对新闻的编辑、删除、搜索、移动功能,如图4-9 所示。
图4-9 新闻管理界面
新闻管理的主要代码: public
String
update(HttpServletRequest
request,HttpServletResponse response){
CreateNews updatenews = new CreateNews();
String newstitle = request.getParameter(\"Newstitle\"); String classid = request.getParameter(\"News_Class\"); String newsdate = request.getParameter(\"Newsdate\"); String newskey = request.getParameter(\"Newskey\"); String newsource = request.getParameter(\"Newsource\"); String
newscontent
=
request.getParameter(\"Newscontent\");
40
String newsid = request.getParameter(\"Newsid\"); updatenews.setNewstitle(newstitle);
updatenews.setClassid(Integer.parseInt(classid)); updatenews.setNewsdate(newsdate); updatenews.setNewskey(newskey); updatenews.setNewsource(newsource); updatenews.setNewscontent(newscontent);
updatenews.setNewsid(Integer.parseInt(newsid)); CreatenewsDao updatenewsdao = new CreatenewsDao(); System.out.println(\"zenmelezenmele\"); try{ //修改信息
updatenewsdao.update(updatenews); //获得操作人
HttpSession session = request.getSession();
String
=String.valueOf(session.getAttribute(\"flag\"));
String
name=String.valueOf(session.getAttribute(\"username\"));
String ip=request.getRemoteAddr(); if(flag.equals(\"0\")) {
LogsView logsview=new LogsView(); logsview.setOperatename(name); logsview.setOperatedate(newsdate); logsview.setType(1);
logsview.setNewstitle(newstitle); logsview.setLoginip(ip); LogsDao logsdao=new LogsDao();
//添加到news_logs中
41
flag
续!\");
\");
} }
logsdao.insertnewslogs(logsview); }
System.out.println(\"zenmele\");
request.setAttribute(\"success\修改新闻成功,请继
return \"/admin/info_manager.jsp\";
}catch(DataAccessException e){
request.setAttribute(\"errorMessage\修改新闻失败!
}
System.err.println(e.getMessage());
return \"/admin/error.jsp\";
3) 当日新闻一览
点击“当日新闻一览”,显示当日发布的新闻信息。 4) 新闻统计量
点击“新闻统计量”,显示新闻的统计量信息,如图 4-10 所示。
图 4-10 新闻统计量界面
5) 文章是否允许评论
点击“文章是否允许评论”,设置新闻是否允许评能,如图 4-11 所
42
示。
图 4-11 管理新闻评论界面
(4) 评论管理
点击“评论管理”,新闻评论管理的功能包括对新闻评论的搜索、删除的功能,如图4-12所示。
图 4-12 评论管理界面
43
评论管理主要代码:
package cn.handson.controller.action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import cn.handson.model.service.dao.ClassDao; import cn.handson.model.service.pojo.ClassUser; public class ClaModifyAction extends BaseAction { private static ClaModifyAction modifyAction; public static BaseAction getModifyAction() { }
public String remove(HttpServletRequest request,
HttpServletResponse response) { if (modifyAction == null) { }
return modifyAction;
modifyAction = new ClaModifyAction();
int id = Integer.parseInt(request.getParameter(\"id\")); String claname = request.getParameter(\"ClaName\" + id); int
itemid
=
Integer.parseInt(request.getParameter(\"ItemId\" + id));
String clades = request.getParameter(\"ClaDes\" + id); int
claorder
=
Integer.parseInt(request.getParameter(\"ClaOr\" + id));
String comm = request.getParameter(\"del\"); ClassUser cl = new ClassUser(); cl.setClassid(id); cl.setClassname(claname); cl.setClassorder(claorder); cl.setDes(clades);
44
}
cl.setItemid(itemid);
if (comm.equalsIgnoreCase(\"del\")) {
ClassDao cla = new ClassDao(); // 执行删除 cla.remove(cl);
return \"/admin/class_manager.jsp\";
} else { }
ClassDao cla = new ClassDao(); // 是否为空
if (cla.list(cl) == true) {
HttpSession session = request.getSession(); session.setAttribute(\"er\return \"/admin/class_manager.jsp\";
} else { }
}
// 执行修改 cla.update(cl);
return \"/admin/class_manager.jsp\";
45
5.系统测试
5.1系统开发环境
操作系统:Windows7; 开发工具:Myeclipse 8.5; 开发语言:Java;
应用数据库:SQL SERVER 200; 应用服务器:Tomcat6.0;
5.2系统测试 5.2.1测试项目说明
测试是为了“发现程序中的错误而执行程序的过程”,测试的目的就是在系统投入运行之前,尽可能多的发现系统中的错误。
在测试过程中对每个功能逐一测试,其具体操作如下: (1)测试是否能够正常登陆
当用户输入用户名不存在,或用户名与其所输入的密码不准确时,就无法正常登陆。必须输入正确的用户名和密码。
(2)测试前台模块用户登录、会员注册、会员信息修改、会员管理新闻信息等功能;后台模块添加用户、对会员的权限管理、对新用户加入的审核管理、对新闻信息的管理等功能否正常执行。
(3)测试是否能够实时更新产品信息。
5.2.2测试评价
(1)测试结果:功能基本都能实现
(2)软件能力:经测试该软件在各方面综合性能较好。 (3)存在不足:功能有待完善和提高。
(4)测试结论:该系统基本满足新闻发布系统的功能,功能都能实现。
46
结 论
本次毕业设计结合了在北京理工大学计算机专业学习到的很多专业性知识,以及在我工作的环境中学习的知识和开发的经验,都融入到本次具体设计的过程中。本次毕业设计的主要设计思想是以计算机的基础理论为基础,查找相关的文献资料,选择开发工具和开发的语言,配置好开发的环境。在操作过程中一边学习理论的知识一边具体的上机实现,发现了好多自己的不足,遇到了很多难题,通过查找资料和翻阅参考文献,将难题一一解决,终于按时完成了本次毕业设计。
通过本次的别业设计,提高了我对编程的理解,更深入的体会到了学习的重要,以及实践的重要性。更深深的体会到了只掌握了基础是远远不够的,还要有丰富的实践经验,只有理论和实践相结合才能掌握知识的真谛。
本次开发的新闻管理系统还有很多的不足,以及需要很多的功能需要完善和扩展,但是已经出具了新闻管理系统的雏形。由于本人的编程经验和时间问题,有很多更深层次的开发技术没有应用到,比如新闻信息可以以文件的形式存储,用户权限的细化,新闻系统的统计分析,数据库性能的优化等等。但可以这样说本次的毕业设计师我的一个开始,以后我还会不断的学习新的知识和开发技术,努力的钻研和创新,掌握更多的信息和技术,争取创作出性能更强更适合用户的作品。
47
致 谢
在本次毕业设计过程中,得到了知道老师的指导和支持。在此我真心的感谢指导老师给了我大力的帮助。本次系统在总体的结构和功能结构的设计上给予了我非常好的建议,在我编程、数据库设计细节等方面给予了我耐心的指导,让我少走了很多的路,对我本次能够顺利的完成起到了关键性的作用。
我还要感谢学校,在这两年半的生活中教会了我很多不知道的知识,增强了我的眼界和动手能力。谢谢曾经教过的老师,他们不辞辛苦的谆谆教导,是我学会了很多专业知识和做人的道理。还要感谢我的同学在大学生活中地我的帮助。我作为一名计算机毕业生,不仅要学会编写代码的思想,更重要的是要学习整体功能的把控能力。我会在以后生活和以后的工作中不断的完善和提高自己,为学校争光,为自己翻开辉煌的新篇。
48
参考文献
[1] BruceEckel.《JAVA编程思想》. 机械工业出版社.2003. [2] 赛奎春.《JAVA工程应用与项目实践》. 机械工业出版社.2002. [3] FLANAGAN.《JAVA技术手册》. 中国电力出版社.2002年. [4] 孙一林,彭波.《JSP数据库编程实例》. 清华大学出版社.2002. [5] 飞思科技产品研发中心.《JSP应用开发详解》.电子工业出版社.2003.
[6] 孙涌.《现代软件工程》.北京希望电子出版社.2003. [7] 萨师煊,王珊.《数据库系统概论》.高等教育出版社.2002.. [8] 王俊伟,史创明.《数据库管理与应用》.清华大学出版社.2006. [9] 叶乃文,杜永萍.《JAVA核心技术》.机械工业出版社.2006. [10] 李兴华.《JAVA开发实战经验》.清华大学出版社.2008.
49
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务