当前位置:文档之家› 基于WEB的新闻发布系统的设计与实现

基于WEB的新闻发布系统的设计与实现

基于WEB的新闻发布系统的设计与实现
基于WEB的新闻发布系统的设计与实现

目录

第1章前言 (3)

第2章系统概述 (3)

2.1设计模式 (3)

2.1.1 MVC模式基本原理 (4)

2.2.2 MVC Model1 (5)

2.2.3 MVC Model2 (5)

2.3小结 (6)

第3章系统设计 (6)

3.1系统总体设计 (6)

3.1.1 系统构架 (6)

3.1.2系统类设计 (7)

3.2视图层设计 (8)

3.2.1 前台设计 (8)

3.2.2 后台设计 (8)

3.3模型层设计 (9)

3.3.1 前台显示和用户登录 (9)

3.3.2 新闻管理 (9)

3.3.3 栏目管理 (10)

3.4控制层设计 (10)

3.4.1 用户登录 (10)

3.4.2 新闻管理 (10)

3.4.3 栏目管理 (10)

3.5数据库设计 (10)

3.5.1 数据库概念设计 (10)

3.5.2 数据库表设计 (11)

3.6数据库连接设计 (12)

3.6.1 传统的数据库连接 (12)

3.7小结 (15)

第4章系统实现 (15)

4.1视图层实现 (15)

4.1.1 公共页面 (15)

4.1.2 前台实现 (17)

4.1.3 后台实现 (18)

4.2模型层实现 (20)

4.2.1 新闻显示 (20)

4.2.2 新闻管理 (21)

4.2.3 栏目管理 (21)

4.3控制层实现 (21)

4.3.1 用户登录 (22)

4.3.2 新闻管理 (22)

4.3.3 栏目管理 (23)

4.4小结 (23)

第5章系统运行测试 (23)

5.1系统测试环境 (23)

5.1.1 系统测试硬件环境 (23)

5.1.2 系统测试软件环境 (23)

5.2系统测试 (24)

总结 (25)

参考文献 (26)

致谢 (27)

附录 (28)

第1章前言

伴随着网络的出现,网页逐渐融入人们的生活。快速及时的新闻浏览,五彩缤纷的网上信息,使网络与人们的生活息息相关,于是世界上出现了第三媒体——Internet。它打破了地域限制,真正使信息得以共享,改变了人们的工作和生活方式。人们对信息的需求有了更新,更高的要求,而网页由于本身所具有的信息量大,传递快速,没有时空限制等特点恰好满足这种要求。也正是由于网络实现网站的数据信息能够进行实时交互,保证网站数据的实时性。

随着Internet信息技术的高速发展,越来越多的企业想将自己企业的信息通过网络与全世界分享并最终实现电子商务,所以它们已经建立或计划建立自己的网站。但是,如果为了建立和维护自己的网站而聘请专职的网络技术人员,其成本对于一个中小型企业来说实在是太高了。对于上面这类企业来说,他们最需要的就是一个现成的可以自动发布信息的新闻发布系统,这样只要会打字,会上网就能利用新闻发布系统快速简洁地发布企业信息。

然而传统的信息发布方式已经不适应这个快速变化的信息时代,需要一个更高效,更简洁的方式进行信息发布。内容管理系统正是基于这样一个目的而诞生的,它是企业信息化建设和电子政务的新宠。它的基本思想是分离信息内容和表现形式,内容存储在数据库或独立的文件中,而表现形式存储在模版里。当用户请求页面时,各部分联合生成一个标准的HTML页面;当信息修改时,用户只需在一个可视化的界面对信息内容进行修改。大大缩短了信息的更新时间,提高了效率,并且简化了操作。

本设计便是基于内容管理思想的一个新闻发布系统,以下各章从系统概述、需求分析、系统设计、系统实现、系统运行测试和系统评价与改进依次展现系统开发过程。

第2章系统概述

本章主要介绍在系统开发过程中所采用系统设计模式。

2.1 设计模式

随着Web技术的发展,Web内容从一些静态页面发展到内容丰富的动态页面。目前,用于生成动态网页较为流行的技术有Microsoft的ASP、Tex的PHP和Sun的JSP。ASP只能工作在微软的IIS(Internet Information Server)和PWS(Personal Web Server)上及PHP模式,一些天生缺陷使得它们的使用受到了一定的制约。而JSP是一种完全与平台无关的开发新技术,它集极高的运行效率,较短的开发周期,超强的扩展能力,完全开放的技术标准,自由的开发方式等众多完美特性于一身。

JSP+JavaBean+Servlet+JDBC是一套能够实现动态网站的开发和维护的技术。JDBC用于连接数据库并对数据库进行存储,Servlet用于处理过程控制,JavaBean用于封装业务逻辑,JSP用于页面显示部分。而MVC正是这种设计模式代表。

2.1.1 MVC模式基本原理

MVC (Model-View-Controller),即把一个应用的输入、处理、输出流程按照Model, View, Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层,其三层之间的关系和功能如图2-1“MVC组件类型关系和功能图”。

视图层(View)

解释模型

模型更新请求

发送用户输入给控制器允许控制器选择视图

控制器层(Controller)

定义应用程序行为

用户动作映射成模型更新

选择相应的视图

模型层(Model)

封装应用程序状态

响应状态查询

应用程序功能

通知视图改变

状态查询

通知改变

状态改变

视图选择

用户请求

方法调用事件

图2-1 MVC组件类型关系和功能图

MVC设计模式的典型流程[4]为:首先Controller接收用户的请求,并决定应该调用哪个Model来进行处理,然后Model用业务逻辑来处理用户的请求并返回数据,最后Controller用相应的View格式化Model返回的数据,并通过表示层呈现给用户。

控制层(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉我们,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个链接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。

模型层(Model)就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要

的核心,必须能够满足大多数客户的需求,包括保证应用程序各组件的事务整合、维护并快速获取应用数据,支持事务工作流的协调以及在已有应用程序中集成新的应用组件等。MVC并没有提供模型的设计方法,而只告诉我们应该组织管理这些模型,以便于模型的重构和提高重用性。

视图层(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML,XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。

2.2.2 MVC Model1

在MVC模式的Model1体系中,JSP页面独立响应请求并将出理结果返回客户,所有的数据存取都是由JavaBean来完成。Model1体系十分适合简单应用需要,却不能满足复杂的大型应用程序的实现。MVC Model1的体系结构如图2-2所示。

JSP

JavaBean

库JDBC

请求

响应

图2-2 MVC Model1体系结构图

2.2.3 MVC Model2

MVC模式的Model2体系结构是一种把JSP与Servlet联合起来实现动态内容服务的方法。它吸取了两种技术的优点,用JSP生成表达层的内容,让Servlet完成深层次的处理任务。这是一种有代表性的方法,它清晰地分离了表达和内容,明确了角色的定义及开发者与网页设计者的分工。本系统的设计模式选择的便是Model2。MVC Model2的体系结构如图2-3所示。

Servlet

JSP

库JDBC

请求

响应

JavaBean

图2-3 MVC Model2体系结构图

2.3 小结

本章对MVC设计模式基本原理进行了详细阐述,并介绍了MVC的两种不同的模式Model1和Model2,并确定本系统的设计模式便是MVC Model2。

第3章系统设计

根据上一章的需求用例分析,本章从先总体构架的角度对系统进行总体设计,然后根据MVC三层模式对系统进行详细设计,最后对系统数据库和数据库连接池进行了设计。

3.1 系统总体设计

3.1.1 系统构架

系统基于MVC Model2设计模式,设计出本系统自己的设计模式,在MVC Model2基础上加入数据库连接池模块层对数据库操作进行封装。具体模式图如图3-1。

Servlet

JSP

库JDBC

请求

响应

JavaBean Connection Pool

图3-1 系统设计模式图

对于MVC设计模式,在本系统中具体实现方式是:Model由JavaBean完成,View由JSP完成,Controller由Servlet完成,再加上数据库连接池专门负责数据库连接和管理。本系统具体构架如图

3-2。

系统基本构架

视图层View

控制层

Contriller

模型层

Model

数据层

Database

JSP

Servlet

JavaBean对

象Connection

Pool

数据库

调用

返回

图3-2 系统构架图

3.1.2系统类设计

在本系统中,根据对系统需求的分析,可以总结出如下的需求集:

(1)系统应该分为前台和后台;

(2)系统前台应该可以显示新闻栏目和新闻以及用于管理员登录系统后台的登录界面;

(3)一般用户应该可以在前台自由浏览新闻,包括选择性地浏览新闻即先选择新闻栏目再浏览新闻栏目下的新闻条目;

(4)注册用户可以发表相关新闻的评论;

(4)系统管理员应该可以登录到系统后台;

(5)系统管理员应该可以对新闻栏目和新闻进行查看、修改、删除和添加操作,也可以对注册用户管理,同时还可以对相关新闻的评论进行管理。

由以上需求集进一步分析可知:

(1)“新闻栏目”和“新闻”为系统的两个主要内容,所以应该分别作为一个类,而新闻栏目和新闻的显示需要管理类进行管理,系统管理员要对栏目和新闻进行查看、添加、修改和删除,也需要相应的管理类进行管理,所以,系统对于新闻栏目和新闻分别需要“栏目管理类”和“新闻管理类”;

(2)系统中应该要有超级管理员、管理员、注册用户等角色,超级管理员是最高权限的,管理员是超级管理员发放的,注册用户是前台注册产生的。

(3)系统要保存信息,必须用到数据库,所以需要一个数据库连接的类;

(4)要将系统的各个功能执行成功,少不了相应的控制类。

因此,识别出系统主要的类:新闻管理类(NewsJdbc),栏目管理类(NewclaJdbc),用户管理类(RoleJdbc),评论管理类(Pingl)数据库连接的连接对象类(JdbcConn)以及各个Servlet类。

3.2 视图层设计

3.2.1 前台设计

当一个用户浏览新闻系统时,首先进入系统前台界面。如果把一个系统比作一个人,那么前台界面则是这个人的脸,因此系统的前台界面的设计是比较重要的,并且,前台界面应该被设计得比较简洁,方便。

首先,在本系统的前台界面的顶部用户可以看到一个专为注册用户提供的登录入口,为用户提供了方便。而对于一般用户来说,他们也不会感觉这有何不妥,因为此登录界面比较简洁,并不会影响用户正常地阅读新闻。

其次,在登录界面的下方是新闻栏目的显示,显示系统新闻栏目数据库中已有的新闻栏目,一目了然,用户可以方便地找到自己喜欢和关心的新闻所在的栏目。

再次,在新闻栏目的下方则是新闻条目的显示,默认的新闻条目的显示方式是以表格的形式将系统新闻数据表中的新闻按发布时间进行列表(发布较早的新闻被放在列表的后面,而发布较迟的新闻被放在列表的前面,体现了新闻的“新”,即“时效性”)。新闻列表中仅显示新闻的标题,发布时间和新闻作者,如果想浏览整篇新闻,用户可以点击新闻标题(超链接)。

然后,用户可以对自己比较关心和感兴趣的新闻进行有选择性地浏览,这时新闻栏目便起作用了。当用户点击新闻所在的栏目时,系统在新闻列表中只显示本栏目的新闻条目。用户可以在此浏览自己关心和感兴趣的新闻。

3.2.2 后台设计

3.2.2.1 后台主页面设计

当用户登录到系统后台时,他便成为系统管理员,可以执行对新闻和栏目的查看、修改、删除和添加。此界面主要是面向管理员的,界面要设计得简洁方便,使得系统管理员在管理系统时容易操作。

当管理员用户登录到系统后台时,呈现到他眼前的是系统后台管理的主页面:

首先,系统后台主页面左上角是欢迎词(欢迎+用户级别+管理员名),对于管理员,他可以感觉到系统的人性化;对于系统本身,系统可以识别此时登录的是哪个管理员,可以分配管理员的权限。

其次,欢迎词下方是系统管理的功能选择,一目了然,管理员可以在此选择要操作的模块进入,然后执行相应的操作。

再次,再往下就是系统新闻列表,与前台新闻显示类似,只是多了对新闻的操作(修改和删除)。管理员可以在此对系统已有的新闻进行修改和删除操作。

3.2.2.2 添加新闻设计

如果系统管理员在系统后台主页面中选择“添加新闻”,管理员会进入下图这样一个页面进行新闻的添加,添加完新闻标题和新闻正文内容后,还必须选择所添加新闻所属的新闻栏目。确认所有内容均已填好,点击“发表”按钮,新闻发布工作完成,如果点击“清除”按钮,则系统清除管理员刚才的所有输入,让管理员重新填写新闻的各项内容。管理员可以在系统后台主页面中看到刚刚发表的新闻,可以对其进行相关操作。

3.2.2.3 栏目管理设计

如果系统管理员在系统后台主页面中选择“栏目管理”,系统将链接到新闻栏目管理页面。栏目管理页面上有一些链接按钮,可以让管理员链接到其他页面。链接按钮下面是系统已有新闻栏目的列表,在此,管理员可以对新闻发布系统的栏目进行操作(编辑和删除栏目)。

如果管理员想要添加新闻栏目,只需点击“添加栏目”,就可以被链接到添加新闻栏目页面,添加栏目完成后,管理员可以在栏目管理主页面的栏目列表中找到新添加的栏目,并对其进行相关操作。

3.3 模型层设计

本系统模型层由JavaBean完成,模型层设计主要设计出完成各个功能模块中模型层的JavaBean 类。模型层的类主要新闻管理类NewsJdbc以及栏目管理类NewclaJdbc。

3.3.1 前台显示和用户登录

在前台显示和用户登录模块中,充当模型层的是News和Newcla根据系统分析中的系统前台需求用例分析和上述的前台界面功能描述,对系统的前台的每一个流程、每一个模块进行详细功能设计。

3.3.2 新闻管理

管理员在系统后台主界面中可以对已有新闻进行管理(修改、删除和添加),新闻管理模块中充当

模型层的仍然是News和Newcla。

3.3.3 栏目管理

栏目管理中可以对已有栏目的编辑、删除以及添加新栏目。

3.4 控制层设计

3.4.1 用户登录

当用户通过系统前台提供的登录入口登录后台系统时,系统将用户的登录信息提交给登录控制层处理。所以登录控制器必须对用户登录信息进行识别,判断其是否有权限登录到后台系统。用户登录控制器由LoginServlet完成。

3.4.2 新闻管理

新闻管理中主要涉及到新闻信息的添加、删除和修改,所以其控制层由NewsServlet完成。

3.4.3 栏目管理

栏目管理模块主要对新闻栏目进行修改、删除和添加,此功能模块控制层由NewclaServlet完成。

3.5 数据库设计

3.5.1 数据库概念设计

根据上面的数据库需求分析,就可以构造出各种实体,以及并根据它们的关系绘制出实体间的E-R 图,为以后的逻辑设计打下基础。如图3-1为本新闻发布系统实体间的E-R图。

栏目编号

栏目

栏目名称

新闻

新闻编号新闻标题新闻内容

管理员名

称所属栏目发布时间

属于

1

N

管理员管理1N 用户名

密码

图3-3 实体之间关系的E-R 图

3.5.2 数据库表设计

数据库逻辑设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据库模型。本系统使用Mysql 数据库。

新闻发布系统的数据库中各表的设计结果如下面几个表所示。

图3-4 新闻栏目表

图3-5 新闻表

图3-6 用户表

图3-7 评论表

3.6 数据库连接设计

3.6.1 传统的数据库连接

传统的数据库连接模式基本上是按以下步骤进行:①在主程序(如Servlet、Beans)中建立数据库连接;②进行SQL操作,取出数据;③断开数据库连接。本系统也是才用此链接方式,连接类JbdcConn.Java代码如下:

package com.newsinfo.db;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class JdbcConn {

private JdbcConn(){

}

static{

try {

//1.加载数据库连接驱动

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public static Connection getConn(){

//2.创建数据库的连接

Connection conn = null;

try {

conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/data","root","123");

System.out.println("连接数据库成功!");

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

//释放资源

public static void free(Statement st , ResultSet rs , Connection conn){ try {

if(rs != null){

rs.close();

rs = null;

}

} catch (SQLException e) {

e.printStackTrace();

}finally {

try {

if(st != null){

st.close();

st = null;

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

try {

if (conn != null){

conn.close();

conn = null;

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

}

3.7 小结

本章首先进行了系统总体设计,接着按照MVC设计模式的三层结构根据系统需求用例对新闻发布系统功能进行设计,最后设计出系统的数据库并对数据库连接进行了相应的设计。通过本章,系统设计出了用来完成系统用例的业务功能模型以及完成各个用例的类。

第4章系统实现

根据上一章的设计思路设计用来完成系统用例的业务功能,整个系统按照MVC模式的三个部分以及数据库连接池进行编码实现,分为视图层、控制层、模型层和数据库连接池。由于系统实现的代码量较大限于篇幅,文中仅显示部分代码。

4.1 视图层实现

在系统其它视图层部分实现之前,先对那些常用的公共页面模块部分实现。

4.1.1 公共页面

top.jsp中包含了其它页面常用到的页面头部的设计。具体代码如下:

<%@page import="com.newsinfo.mag.NewclaJdbc"%>

<%@page import="java.util.List"%>

<%@page import="com.newsinfo.vo.Newcla"%>

type="text/css">

<%@ page language="java" pageEncoding="UTF-8"%>

欢迎进入长江师范学院新闻网    

onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://..../' );" href="javascript:void(0);">设为主页  加入收藏

background="img/top.jpg">

pluginspage="https://www.doczj.com/doc/aa5329469.html,/go/getflashplayer"

type="application/x-shockwave-flash" width="850" height="120">

首页

<%

NewclaJdbc nj=new NewclaJdbc();

List cla=nj.selcetFenlei();

for(Newcla one:cla){

%>

<%=one.getNewcla() %>

<%

}

%>会员注册

footer.jsp中包含了其它页面常用到的页面尾部的设计。具体代码如下:

<%@ page language="java" pageEncoding="UTF-8"%>

class="bk">

copyright@zkmy2010  版权所有:曾晓龙  管理入口
联系地址:长江师范学院邮编:408100 QQ:359257073

本系统的CSS设计了两个CSS样式表(css.css、sc.css)它主要设置页面中显示的Body结构的样式、超链接A的样式、页面中表格Table样式等的设置。CSS样式表可以使系统整体风格一致。

4.1.2 前台实现

系统前台视图层由index.jsp实现。index.jsp仅负责显示新闻栏目和系统已有新闻以及为管理员用户提供一个登录入口。index.jsp页面显示截图如图4-1。

图4-1 index.jsp页面实现截图

4.1.3 后台实现

系统后台视图层主要由admin_news.jsp、admin_newsinsert.jsp、admin_newcla.jsp、admin_newclainsert.jsp、admin_role.jsp和admin_roleinsert.jsp组成。

admin_news.jsp是系统后台主页面。其实现显示截图如图4-2。

图4-2 admin_news.jsp实现截图

admin_newsinsert.jsp实现新闻的添加。当用户在后台主页面中选择添加新闻按钮时,管理员便进入此页面。其实现截图如图4-3。

图4-3 admin_newsinsert.jsp实现截图

admin_newcla.jsp实现新闻栏目的管理,管理员可以在此对进行新闻栏目的相关操作。其实现截图如图4-4。

图4-4 admin_newcla.jsp实现截图

admin_newclainsert.jsp它实现栏目的添加功能。其实现截图如图4-5。

图4-5 admin_newclainsert.jsp实现截图

admin_role.jsp实现的是对本系统用户的管理,其实现截图如图4-6。

admin_roleinsert.jsp它实现管理员的添加功能,其实现截图如图4-7。

图4-7 admin_roleinsert.jsp实现截图

4.2 模型层实现

模型层实现中主要给出了实现功能模块中的各类的功能函数,具体代码见附件。

4.2.1 新闻显示

在前台页面中显示系统已有新闻,需要新闻类NewsJdbc和新闻管理类NewclaJdbc。在此模块中主

相关主题
文本预览
相关文档 最新文档