基于JSP的新闻发布系统论文

基于JSP的新闻发布系统论文
基于JSP的新闻发布系统论文

[摘要]新闻发布系统(News Release System or Content Management System)又叫内容管理系统,是基于新闻和内容管理的全站管理系统 ,本系统可以将杂乱无章的信息(包括文字,图片和影音)经过组织,合理有序地呈现在大家面前.当今社会是一个信息化的社会,新闻作为信息的一部分有着信息量大,类别繁多,形式多样的特点,新闻发布系统的概念就此提出.新闻发布系统的提出使电视不再是唯一的新闻媒体,从此以后网络也充当了一个重要的新闻媒介的功能.它是基于MVC的设计模式,利用Java 语言进行开发的。前台页面用JSP来实现,后台用Servlet类封装DAO层中的方法实现业务逻辑,数据库采用MySQL,系统共分为新闻类别管理、新闻发布管理、新闻评论管理和后台管理四大模块。其中,新闻类别管理,是给新闻进行分类,区别各个新闻的类别。新闻发布管理,是对用户的新闻信息进行整合进行发布。新闻评论管理,是对新闻的评论的管理。后台管理,管理员可以进行添加新闻,添加、删除用户等一系列的管理员操作。

[关键词] 新闻发布系统;MVC模式;Web技术;JSP

Abstract: News release system and that content management system that is based on the news and content management station the management system, the system can will desultorily information (including text, images and video) after organization, reasonable and orderly present in front of everyone. Today's society is an information society, news, as part of the information with information, category is various, the various forms of characteristics, press release the concept of system of poses. News release the system make TV is no longer the only news media, from now on the network has also been used as an important news media function. It is based on the design of the MVC mode, use Java language of development. Front desk with JSP page to realize, with Servlet class background layer encapsulation DAO in business logic method, using MySQL database, system is divided into news management category, press conference management, news comment management and management background four modules. Among them, the news management category, is to give the news classification, difference of each news category. News release management, is to the user's news information released integrate. News comment management, is to the news comments management. Background management, the administrator can add news, add, delete a user, and a series of administrator operation.

Key words: News release system; MVC model; web technology;JSP

目录

1 绪论 (1)

1.1 本课题的研究意义及必要性 (1)

1.2 相关领域国内外应用的现状及发展趋势 (1)

2 系统分析 (3)

2.1 系统功能要求 (3)

2.2 系统开发功能 (3)

2.3 系统的可行性分析 (3)

3 总体设计 (4)

3.1 功能模块划分 (4)

3.2 系统模块设计图 (4)

3.3 开发工具和开发框架介绍 (5)

3.3.1 MyEclipse介绍 (5)

3.3.2 Tomcat介绍 (6)

3.3.3 MVC介绍 (6)

4 详细设计 (7)

4.1 各模块的功能 (7)

4.1.1 游客模块 (7)

4.1.2 管理员模块 (7)

4.2 系统数据库的设计 (9)

4.2.1 数据库表的结构 (9)

4.2.2 数据库选择及理由 (10)

5 系统实现 (11)

5.1 核心模块实现 (11)

5.1.1前台的实现 (11)

5.1.2管理员实现 (22)

6 综合测试 (28)

6.1简单功能实现 (28)

6.1.1 登录控制 (28)

6.1.2新闻管理 (29)

结束语 (31)

参考文献 (32)

1 绪论

1.1 本课题的研究意义及必要性

新闻发布系统(News Release System or Content Management System)又叫做内容管理系统,是一个基于新闻和内容管理的全站管理系统,新闻发布系统是基于B/S模式的WEBMIS系统,本系统可以将杂乱无章的信息(包括文字,图片和影音)经过组织,合理有序地呈现在大家面前.当今社会是一个信息化的社会,新闻作为信息的一部分有着信息量大,类别繁多,形式多样的特点,新闻发布系统的概念就此提出.新闻发布系统的提出使电视不再是唯一的新闻媒体,从此以后网络也充当了一个重要的新闻媒介的功能.

新闻发布系统的特点:

(1)是基于B/S模式下的WEB信息系统,数据库逻辑相对简单,但数据量一般比较庞大;

(2)用户数量大,服务器压力大,是系统设计中必须考虑的问题之一,而一般的信息系

统相对压力要少了很多;

(3)是一个开放式的系统,前台浏览无须验证.

当今社会是一个信息化的社会,新闻作为信息的一部分有着信息量大,类别繁多,形式多样的特点,新闻发布系统的概念就此提出。新闻发布系统的提出使电视不再是唯一的新闻媒体,从此以后网络也充当了一个重要的新闻媒介的功能。简单地说,新闻发布系统就是充当一个网络新闻媒介的功能,主要实现对新闻的分类,上传,审核,发布,模拟了一般新闻媒介的新闻发布的过程,通过不同权限的账号分别实现以上所说功能,当然这些功能也可以是某一个账号全部具有。

传统的报纸杂志已经远远满足不了人们的需求, 人们更加希望于能够在网上了解更多的新闻和信息,网页逐渐融入人们的生活,快速及时地浏览新闻,获取五彩缤纷的网

上信息,已成为人们日常生活的一部分,与此同时越来越多的企业建立了自己的 WEB 网站,企业通过网站可以展示产品,发布最新动态,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等.互联网的世界里蕴藏无限生机,这里只有想不到的,没有做不到的.网络发展前景无限,及早与网络结合,与信息时代同步,与高科技汇合,定会给社会

各行各业的发展注入新鲜的活力.在网络技术的领域里,新闻发布系统的分类:

1、前台动态显示的新闻发布系统

2、前台静态显示的新闻发布系统

3、基于文本的新闻发布系统

4、基于 XML 数据岛的新闻发布系统

1.2 相关领域国内外应用的现状及发展趋势

据CNNIC的相关统计表明,大约60%的用户上网首要的目的是为了获得各方面的信息,而这些信息中,占据首位的就是各类新闻信息。进入信息化社会以来,人们越来越倾向于

利用信息化的快捷来提高处理事情的效率。新闻发布系统的诞生是的新闻的处理发布效率得到了极大的提高。

现如今,各个企业、个人、组织等都在宣传自己的产品,扩大自己的知名度。这些都离不开新闻的影响力,新闻发布系统的不断完善,从而促进了新闻发布的高效,极大的促进了信息的传播。

随着国内电子商务的发展和企业信息化程度的提高 ,越来越多的企业注重自己网站的综合开发 ,但是现在大多数网站使用的新闻信息发布管理平台功能有限 ,或多或少存在以下几个缺点 :(1)新闻信息发布管理系统开发的周期长。(2 )新闻信息发布管理系统开发的工作量大。(3)新闻信息发布管理系统开发通用性差 ,一次开发只对应于一个网站。

2 系统分析

2.1 系统功能要求

(1)由于一项新的软件在被使用之前,对于使用者来说是陌生和崭新的,所以要求系统具有良好的人机界面。

(2)能够实现新闻发布的各项功能,能成功的对用户各种信息进行管理。

(3)查询、修改、删除、添加数据方便,数据的稳定性和可靠性好。

2.2 系统开发功能

系统采用B/S模式。整个系统最关键的就是数据库系统,一个强大的数据库可以支持完善一个优秀的软件设计,通过软件系统与数据库系统的连接来实现通过软件界面观察和处理操作数据。

系统采用三层结构,在客户端用户通过浏览器完成数据下载与模拟操作,浏览器端的表现逻辑通过JSP网页完成。而系统内部复杂的业务逻辑主要通过JavaBean的组件(Component)实现,JavaBean组件在WWW服务器上运行,通过JSP返回到客户浏览器。通过表现逻辑与业务逻辑的分离,使网页内容简洁,系统的可维护性和可扩充性增强。在服务器端,系统使用JDBC中间件访问数据库,数据库服务器定义了本系统所需要的事务逻辑和数据逻辑。本系统使用JSP技术作为表现手段,服务器采用Tomcat作为JSP引擎,系统业务逻辑由JavaBean 组件完成,使用JDBC驱动程序访问数据库。系统采用MySQL 数据库作为数据库服务器。

2.3 系统的可行性分析

本系统的开发是采用java语言在MyEclipse 8.5环境下开发,在tomcat中运行,数据库采用MySQL。Java语言作为新一代的编程语言,其优良的跨平台特性决定了它必然成为web应用程序开发中的佼佼者。MySQL作为最快的数据库,在处理数据量不是特别大的时候能充分发挥其速度快的特点。另外MySQL的管理和维护难度远远低于oracle,有效的降低了企业的维护成本,更重要的是,MySQL的免费部分足以支撑该系统的运行。

Java+tomcat+MySQL这种开发模式无疑是支撑如此一个规模并非巨大、价格低廉、维护成本低的在线员工系统的最佳选择。在技术上和经济上该系统都具有相当的可行性。

3 总体设计

3.1 功能模块划分

开始

新闻系统首页

管理员登陆

管理菜单新闻管理栏目管理管理员管理新闻查看新闻搜索评论

退出

任何用户从浏览器输入地址进入本新闻发布系统后首先进入新闻主界面,即可进行新闻的查看,根据标题或内容进行新闻的搜索,以及进入评论页面进行新闻的评论。输入管理员登录页面的地址,进入登录页面,用户输入用户名和密码以及正确的验证码后可进入后台管理,有新闻的发布,新闻的管理,新闻类别的管理,新闻评论的管理等。断开与服务器的连接即退出本新闻系统。

3.2 系统模块设计图

从功能描述的内容可以看到,本系统可以实现四个完整的功能。根据这些功能,设计出系统的功能模块,如下图所示。

图3-9 新闻发布总体系统功能模块示意图

3.3 开发工具和开发框架介绍

3.3.1 MyEclipse 介绍

MyEclipse 是一个十分优秀的用于开发Java, J2EE 的Eclipse 插件集合。MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench )是对Eclipse IDE 的扩展,利用它我们在数据库和J2EE 的开发、发布,以及应用程序服务器的整合方面极大的提高了工作效率。它是功能强大的J2EE 集成开发 环境,支持代码编写、配置、测试、除错和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate 。

在结构上,MyEclipse 的结构特征可以被分为7类: 1. JavaEE 模型 2. WEB 开发工具 3. EJB 开发工具

4. 应用程序服务器的连接器

5. JavaEE 项目部署服务

6. 数据库服务

7. MyEclipse 整合帮助

对于以上每一种功能上的类别,在Eclipse 中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse 结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

MyEclipse 适用多种操作系统,集成了许多常用的框架,在编写程序时非常方便快捷,是一款不错的Java 开发工具。

新闻发布系统

新闻发布管理

栏目类别管理

新闻搜索管理

用户管理模块

3.3.2 Tomcat介绍

Tomcat是一个免费的开源的Servlet容器,是Apache软件基金会的Jakarta项目中的一个核心项目,是由Apache、Sun和其他一些公司以及个人共同开发而成。Tomcat是一个轻量级应用服务器,比较适合中小型系统和并发访问用户不是很多的场合,是开发和调试JSP 程序的首选。

Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

3.3.3 MVC介绍

MVC体系结构包含三种组件,分别是模型组件、视图组件和控制器组件。

(1)模型组件(Model)

模型是应用中最重要的一部分,它包含了业务实体和业务规则,负责访问和更新持久化数据,提供应用使用的数据和服务的接口。

所有模型组件应当放在系统中同一位置,有利于维护数据的完整性,减少数据冗余提高可重用性。

模型应该和视图和控制器之间保持独立。

(2)视图组件(View)

视图组件用来产生到浏览器的应答,通常而言就是简单的JSP或HTML页面。不同的系统也可使用不能的视图技术。Struts视图主要由JSP网页构成,并提供Struts标签和ActionForm Bean,提供对国际化、接受用户输入表单数据、表单验证和错误处理等的支持,使开发者把精力专注到开发业务需求上。

控制器组件(Servlet)是一个典型的Servlet,为应用接受请求,管理在模型层和视图层之间的数据流。因此他控制着模型层与视图层交互的方式。控制器经常使用帮助器类来代表对特定请求或过程的控制。

(3)控制器组件(Controller)

MVC体系结构的核心是控制器组件。在MVC体系结构中,中心Servlet称为控制器(Controller)负责接受应用的所有请求。接着控制器处理这些请求,与模型(Model)共同工作,为视图(View,通常是JSP)准备任何需要的数据,并将数据转发给JSP。然后JSP 利用控制器准备的这些数据为浏览器产生应答。在这种体系结构中,业务逻辑与表现逻辑彼此分离。业务代码与表现代码的分离,给应用提供了多种多样的接口,以及优秀的代码复用性。

4 详细设计

4.1 各模块的功能

本系统主要分为两个模块:游客浏览模块、管理员模块。

游客,主要指新闻浏览者,主要功能是使用该系统进行新闻浏览、登陆、评论等功能。 管理员,主要是指新闻管理员,主要功能有登陆、用户管理、新闻发布、新闻管理、新闻栏目管理等。

4.1.1 游客模块

学生考试管理功能主要包括:浏览新闻、评论新闻等。

4.1.2 管理员模块

管理员模块功能主要包括修改密码、安全退出、增加新闻、新闻管理、增加栏目、栏目管理、增加管理员、增加管理员、删除管理员、修改管理员等。

一、登录用户管理:修改密码和安全退出两块。用户可以对已登录帐号进行密码的修改工作,利用旧密码进行密码的修改。用例图如4.10所示。

图 4.10登录用户管理用例图

二、新闻管理:新闻管理的主要功能是进行新闻的增加,以及新闻的相关管理,包括新闻的修改、删除、发布。管理员可以通过这个模块进行新闻的相关操作。用例图如4.11所示。

用户管理

管理员 安全退出

旧密码 修改密码

新密码

重复密码

修改密码

图 4.11 新闻管理管理用例图

三、栏目管理:在栏目管理这里,管理员可以添栏目类型,修改栏目类型以及删除栏目类型。用例图如4.12所示。

图 4.12 栏目管理用例图

四、管理员管理:管理员可以在这里进行管理员的更改,包括增加管理员,删除管理员,修改管理员密码。用例图如4.13所示。

管理员

栏目管理

增加栏目

确认添加

修改栏目

删除栏目

确认删除

栏目管理

管理员

新闻管理

增加新闻

新闻标题类别

确认添加

修改新闻

删除新闻

确认删除

新闻管理

图 4.13 管理员管理用例图

4.2 系统数据库的设计

数据库的设计在本系统中占有很重要的位置。数据库表清单如下: 编号 表名 主要保存信息 备注 1 user 记录用户的基本信息 用户信息表 2 news 记录新闻的基本信息 新闻表 3 kind 记录新闻栏目的信息 栏目表 4 comment

记录新闻的评论信息

评论表

4.2.1 数据库表的结构

用户表 users Name code type Primary key Foreign key Mandatory 用户ID userid int True False True 用户名 username varchar False True False 用户密码 userpwd varchar False False False Ip 地址 ip varchar False False False 创建时间 created timestamp False False False 属性标记

priority

int

False

False

False

新闻表 news

管理员

管理员管理

添加管理员

管理员管理

修改密码 删除管理员

Name code Data Type Primary key Foreign key Mandatory

新闻ID newsid int True False True

栏目ID kindid int False True False

新闻标题title varchar False False False

新闻内容content longtext False False False

图片pic varchar False False False

创建时间ntime timestamp False False False

栏目表kind

Name code Data Type Primary key Foreign key Mandatory

栏目ID kindid int True False True

栏目名称kindname varchar False False False

是否显示Isshow int False False False

评论表comment

Name code Data Type Primary key Foreign key Mandatory

评论ID id int True False True

新闻ID newid int False False False

用户ID userid varchar False False False

评论时间ctime timestamp False False False

评论内容content text False False False

4.2.2 数据库选择及理由

MySQL属于小型数据库,号称是最快的数据库。作为一套企业的非营利系统,需要具备成本低廉,维护简单的特点。这些无疑让MySQL脱颖而出,大量应用于类似的系统中。超小的资源占用,快捷的速度,操作的简单,良好的集成度加之其低廉的价格。在不需要存储巨大数据量的此类系统中,当真是首选。

5 系统实现

5.1 核心模块实现

本系统依然采用MVC结构。核心业务在于管理员模块对整个系统的维护及新闻发布模块。

5.1.1前台的实现

(1)新闻浏览主页。在进入新闻浏览页后,会在各个模块看到相应模块的预览新闻的标题。点击可进入相关新闻的阅读界面。通过获得newsid在数据库中获得相关的新闻内容,在showNews.jsp中进行显示。

<%

ResultSet rs = db.getNews(3, "", 1);

%>

通知公告

<%

rs = db.getNews(9, "", 1);

%>

more...

最新新闻

<%

rs = db.getNews(-1, "", 1);

%>

more...

最热新闻

<%

rs = db.getNews(-1, " order by total, ntime desc ", 1);

%>

more...

常见问题

<%

rs = db.getNews(10, "", 1);

%>

more...

(2)新闻展示界面。他从前一个页面获得传递过来的newsid,根据获得的newsid从数据库中找到相应的新闻信息,包括新闻标题,新闻内容,然后进行呈现。同时在左侧还有新闻导航。

<%@page language="java"contentType="text/html;charset=UTF-8"%>

<%@page import="java.sql.*,com.core.*"%>

<%

String newsid = request.getParameter("newsid");

String sql = "select * from news where newsid=" + newsid;

ResultSet rs = db.executeQuery(sql);

if (rs.next()){

%>

<%=StringUtil.toGb(rs.getString("title")) %>

<%=StringUtil.toGb(rs.getString("content")) %>

<%

}else{ %>

数据错误!

<%} %>

通知公告

<%

rs = db.getNews(9, "", 1);

%>

more...

最新新闻

<%

rs = db.getNews(-1, "", 1);

%>

more...

最热新闻

<%

rs = db.getNews(-1, " order by total, ntime desc ", 1);

%>

more...

常见问题

<%

rs = db.getNews(10, "", 1);

%>

<%while (rs.next()) { %>

  • "

    title="<%=StringUtil.toGb(StringUtil.toGb(rs.getString("title")))%>"

    rel="external"><%=StringUtil.strLeft(StringUtil.toGb(rs.getString("title")), 15) %>[<%=StringUtil.strLeft(rs.getString("ntime"), 10) %>]

  • <%

    }

    rs.close();

    db.closeDb();

    %>

    more...

    点击more时,会在数据库中搜索相关栏目的所有新闻并分页显示。

    <%

    String newsid = null;

    String kindid = null;

    String titleTemp = null;

    ResultSet rs = null;

    String sql = "select * from news ";

    String where = " where 1=1";

    titleTemp = request.getParameter("title");

    kindid = request.getParameter("kindid");

    if (!(titleTemp == null || titleTemp.equals(null) ||

    titleTemp.equals(""))) {

    where += " and title like '%" + titleTemp + "%'";

    }

    if(!(kindid == null|| kindid.equals(null) || kindid.equals(""))) {

    where += " and kindid=" + kindid ;

    }

    System.out.println(kindid);

    String temp = request.getParameter("page");

    if (temp == null || temp.equals(null) || temp.equals("")){

    temp = "1";

    }

    int pageno = Integer.parseInt(temp);

    int rows = db.getRow("news " + where);

    int t = rows % StringUtil.STEP;

    int start = (pageno - 1) * StringUtil.STEP;

    int end = start + StringUtil.STEP;

    if (end > rows) {

    end = rows;

    }

    sql += where + " order by ntime desc limit " + start + "," + end;

    rs = db.executeQuery(sql);

    if (titleTemp == null) {

    titleTemp = "";

    }

    %>