JSP新闻网站系统.docx
《JSP新闻网站系统.docx》由会员分享,可在线阅读,更多相关《JSP新闻网站系统.docx(28页珍藏版)》请在冰豆网上搜索。
JSP新闻网站系统
JSP新闻网站系统
1引言
1.1国内外研究现状及发展趋势
传统的网站新闻管理方式有两种:
一种是静态HTML页面,更新信息时需要重新制作页面然后上传页面并修改相应链接,这种方式因为效率太低已不多用;另一种是基于JSP和脚本语言,将动态网页和数据库结合,通过应用程序来处理新闻,这是目前较为流行的做法。
SSH不仅仅是很好的网络架构,而且是建立动态Web应用程序而重新打造的全新技术,其主要特色包括:
(1)语言的独立性;
(2)简单的开发操作,分离程序代码和网页内容;
(3)提高了执行效率;
(4)简化部署与组态的操作;
(5)支持客户端类型;
(6)支持下一代的Web服务;
(7)增进适用性;
(8)增进延展性;
(9)更多的支持工具;
(10)更佳的安全机制;
(11)会话(Session)可以跨进程、跨机器。
由于SSH的众多优点,技术发展和各种客观实际的需要,该系统选用了SSH来开发设计,实现了对社区新闻的动态管理操作,使得对新闻信息的发布与管理更加及时、高效,提高了工作效率。
1.2研究目的、意义和范围
随着Internet的普及,越来越多的企事单位建立了自己的WWW网站,他们通过网站可以展示自身形象,发布最新动态信息,与用户进行交流和沟通,与合作伙伴建立联系,以及开展信息交流等。
其中社区新闻管理系统是构成社区网站的一个重要组成部分,它担负着双层作用。
该系统使用JSP(java语言)和SSH技术开发,实现了网站新闻的动态管理,使得对信息的管理更加及时、高效,提高了工作效率。
该新闻系统具有一般新闻系统的功能,主要包括前台新闻查看区和后台管理区,可为社区各部门发布新闻,为社区网站提供新闻发布与管理的服务。
该系统是基于B/S(Browser/Server,浏览器/客户端)模式实现,基于SSH平台架构开发设计,主要实现对社区新闻的发布与管理功能,对新闻内容信息的浏览阅读等。
随着Internet/Intranet技术的兴起,将原本在单机或本地局域网上运行的数据库系统移植到因特网中,即开发基于B/S模式的新一代管理信息系统,正成为技术发展的趋势。
为了保证系统性能的高效性、可扩展性,以及达到数据共享和网络化管理的目的,本系统采用B/S体系结构进行设计开发。
2系统概述
2.1概述
随着网络技术的不断发展,网络应用已经渗透到人类社会的各个角落。
在科学技术飞速发展的今天,Internet逐渐走入到人们的生活当中,人们可以在闲暇心情时遨游在网络中,而Internet又是以网站的形式体现出来的。
通过网站的访问,人们可以进行电子邮件的传送、文件传输、远程登陆、网上查询、网上交流,足不出户便可以知道外面的世界。
在这样的信息时代中,用户对信息的需求量、广泛程度和时效性的要求日趋提高,传统的报纸杂志已经远远满足不了人们的需求。
是网络改变了我们的生活,人们已经喜欢上上网,在网络上我们便能够了解得到社会上的各种大事小事,这便是新闻发布系统的成效。
新闻发布系统是网站上用于用户查询浏览新闻的一个系统,是用户查看社会信息的园地。
只需要输入自己所要了解的事件的名称,再轻按下Enter键,那么你就可以知道整个事件的来龙去脉。
网站新闻发布系统,又称为信息发布系统,是将网页上的某些需要经常变动的信息,类似新闻、新产品发布和业界动态等更新信息集中管理,并通过信息的某些共性进行分类,最后系统化、标准化发布到网站上的一种网站应用程序。
网站信息通过一个操作简单的界面加入数据库,然后通过已有的网页模板格式与审核流程发布到网站上。
2.2计算机化管理的必要性
当网络刚刚发展起来的时候,由于信息量比较少以及技术上的原因,大部分网站都是采用静态的方式来发布和管理信息的。
但是随着电脑和网络的越来越普及,网站也越来越多,使用网络资源的人也越来越多,网站需要更新的信息量也越来越大,特别是新闻发布的频率很高,如果使用静态的新闻页面,则维护工作将会非常烦琐,管理员每天需要制作大量的网页,从而会浪费很多时间和精力,但自从有了动态网页的网络技术,这个事情将变的非常容易,如果采用动态的新闻发布管理系统,则工作量将大为减少,管理员只要设置标题、内容和图片就可以了,系统将自动生成对应的网页,而且技术上出现问题的机会也会大大减少。
3需求分析
3.1需求分析
该系统在性能功能上应达到如下需求:
操作简单、界面友好、完全框架式的页面布局,使得新闻的录入工作更简便,许多选项包括新闻分类、新闻列表、新闻出处等只需要点击鼠标就可以完成;另外,跟踪出现的提示信息也让用户随时清楚自己的操作情况。
对常见网站的新闻管理的各个方面:
新闻录入、浏览、删除、修改、搜索等方面都大体实现,实现了网站对即时新闻的管理要求。
通过相关调查,要求该系统应具有以下功能:
(1)通过网络浏览各类新闻及相关信息。
(2)新闻能分类显示相关信息。
(3)提供站内新闻的搜索功能。
(4)支持其它网站的友情链接。
(5)为后台管理提供管理入口。
(6)后台编辑个类新闻并且管理新闻信息。
操作简单、界面友好:
完全控件式的页面布局,使得新闻的录入工作更简便,许多选项包括新闻分类、来源部门等只需要点击鼠标就可以完成;另外,跟踪出现的提示信息也让用户随时清楚自己的操作情况。
对常见网站的新闻管理的各个方面:
新闻录入、浏览、删除、修改、搜索等方面都大体实现,实现了网站对即时新闻的管理要求;
即时可见:
对新闻的处理(包括录入、修改、删除)将立即在主页的对应栏目显示出来,达到“即时发布、即时见效”的功能;
系统运行应该快速、稳定、高效和可靠;
在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。
3.2可行性研究
目前,网络应用软件运行的模式主要有二类:
Client/server模式,Browser/Web模式。
前者主要的缺点是维护、升级较麻烦,后者是近几年伴随Internet迅速发展起来的一种技术,它与客户/服务器方式类似,客户端是一个标准的浏览器,服务器端是WebServer,而WebServer与数据库和应用服务器的紧密结合,使得这种模式的应用范围不断扩大,它已不仅仅用于网上查询,企事业单位的业务系统纷纷采用这种模式,它的主要优点是便于扩充应用、升级维护简便。
(1)经济可行性
本系统在开发过程中使用的资源相对较少,不需要太高的硬件支持,只要一般配置的电脑就可,无需昂贵的高端品牌的服务器。
同时在软件上也只需要TOMCAT和SQL2000这两种软件,开发人员不多,周期不长,所使用的费用不高,不会造成在经济上有很大的负担。
因此,从经济方面考虑,开发这样一个系统是完全可行的。
(2)技术可行性
通过设计和实践证明,本系统在功能和性能的实现方面对各种计算机设备的要求不是很高,符合现代计算机设备所能达到的各种技术指标。
本系统的所有方法和过程在符合语法要求的前提下,很小程度的限制了对计算机硬件技术指标的要求。
本系统的开发在技术方面分担很小的风险,而且技术问题也未对成本造成大的影响。
(3)操作可行性
对于用户来说,只需要掌握一些计算机的基本操作就可以实现系统功能,无需去为配置相关的协议而苦恼。
对于管理员操作来说,也只需要掌握几项必要的操作就可以实现对系统的管理。
所以,操作可行性是完全可以达到的。
4系统总体设计
4.1系统概述
新闻发布网络信息共享平台主要从以下几个方面进行设计和开发:
(1)类别管理,包括类别的录入、查询、修改和删除等;
(2)发布管理,包括信息录入、修改和删除等;(3)图片信息处理,包括图片文件上传、存储、修改、删除和浏览等;(4)网友评论,包括评论发表和管理员删除两个子模块;(5)系统用户管理,包括添加用户、删除用户和修改信息3个子模块。
各模块的功能如下图4-1所示:
图4-1新闻发布及管理系统功能模块图
4.2功能模块划分
本系统中功能模块之间的关系如图4-2所示。
在系统系统初始化时,有一个默认的系统管理员用户Admin,系统管理员除了可以修改Admin用户的密码,还可以创建、修改和删除普通用户,普通用户只能修改自己的用户名和密码。
用户管理功能模块的关系,如图4-3所示。
图4-2新闻发布及管理系统功能模块关系图
Admin用户
图4-3用户管理功能模块图
4.3流程分析
多用户系统一般都是从用户登录模块开始。
用户身份验证可以分为两个阶段:
首先对用户身份进行认证,确认用户是否是有效的系统用户;进而确认用户类型,即验证用户是管理员用户还是普通用户。
前一阶段决定用户能否进入系统;后一阶段根据用户类型决定用户的权限,以及用户的工作界面。
本系统的前台部分不需要进行身份验证,任何人都可以游览已发布的新闻并发表评论。
后台部分需要进行身份验证,Admin用户拥有所有权限,普通用户不能管理发布的信息,包括修改新闻、发布新闻和删除新闻。
4.4开发环境与开发工具介绍
4.4.1JSP的优势
(1)作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。
一次写入之后,可以运行在任何具有符合JavaTM语法结构的环境。
取代过去单一平台开发。
ASP主要工作环境是微软的IIS应用程序结构,又因Activex对象具有平台特性,所以ASP技术不能很容易地实现在跨平台的WEB服务器的工作。
(2)从开发人员的角度来看其区别在于:
ASP仅支持组件对象模型COM,而JSP技术提供的组件都是基于JavabeansTM技术或JSP标签库。
(3)JSP标签可扩充性。
JSP技术能够使用开发者扩展JSP标签,JSP开发者能定制标签库,减少对脚本语言的依赖
(4)生成可重用的组件。
JSP基于组件的技术方法加速了总体开发过程。
JSP组件(Javabean,或定制的JSP标签)是跨平台可重用的。
Javabean组件可以访问数据库,并能以分布式系统模式工作于UNIX和WINDOWS平台。
(5)易于维护性。
基于JSP技术的应用程序比基于ASP的应用程序易于维护和管理。
JSP突出的组件技术使修改内容而不影响逻辑或修改逻辑而不影响内容变得很容易实现。
如上的比较不难看出,JSP技术编写的程序运用要更加灵活,可扩展性更强。
Java是未来的主流开发语言,具有很多优势。
JSP则是Java在Internet/IntranetWeb上的重要应用技术,得到了广泛的支持和承认,它可以和各种Java技术完好地结合在一起,从而实现非常复杂的应用。
作为一种基于文本的、以显示为中心的开发技术,JSP提供了JavaServlet的所有好处。
为了做到逻辑功能和显示功能分开,采用了MVC模式。
JSP的开发人员可以通过使用持久化层和控制层来完成大部分与网站逻辑相关的工作,而仅仅把显示的工作交给视图层来完成。
内容和显示逻辑分开的好处在于,更新页面外观的人员不必懂得Java代码,而更新Java类的人员也不必是设计网页的行家。
这就可以用带Java类的JSP页面来定义Web模板,以建立一个具有相似外观的页面组成的网站。
Java类完成数据提供,在模板中就没有Java代码,这意味着这些模板可以由一个HTML编写人员来维护。
4.4.2JAVA开发技术(JDK)
Java开发工具(JDK)是许多Java专家最初使用的开发环境。
尽管许多编程人员已经使用第三方的开发工具,但JDK仍被当作Java开发的重要工具。
JDK由一个标准类库和一组建立测试及建立文档的Java实用程序组成。
其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。
JavaAPI包括一些重要的语言结构以及基本图形,网络和文件I/O。
一般来说,JavaAPI的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。
作为JDK实用程序,工具库中有七种主要程序。
Javac:
Java编译器,将Java源代码转换成字节码。
Java:
Java解释器,直接从类文件执行Java应用程序字节代码。
appletviewer:
小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javadoc:
根据Java源码及说明语句生成HTML文档。
Jdb:
Java调试器,可以逐行执行程序,设置断点和检查变量。
Javah:
产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:
Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
开发JSP程序首先要安装免费的Java程序开发工具JDK。
安装JDK以后,需要配置环境变量,单击“我的电脑——属性——高级——环境变量——系统变量”,进行以下设置。
设置JAVA-HOME环境变量。
设置CLASSPATH环境变量。
更新PATH环境变量的值。
安装和配置完成后,可以测试JAVA程序是否能够在机器上运行。
在命令行窗口键入javac出现相应界面。
这说明已成功配置JDK,否则需要仔细检查配置。
4.4.3Hibernate介绍
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
核心接口简介
Hibernate的核心接口一共有5个,分别为:
Session、SessionFactory、Transaction、Query和Configuration。
这5个核心接口在任何开发中都会用到。
通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
下面对这五个核心接口分别加以介绍。
(1)Session接口
Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。
)。
但需要注意的是Session对象是非线程安全的。
同时,Hibernate的session不同于JSP应用中的HttpSession。
这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
SessionFactory接口
SessionFactory接口负责初始化Hibernate。
它充当数据存储源的代理,并负责创建Session对象。
这里用到了工厂模式。
需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
Configuration接口
Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。
在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
(2)Transaction接口
Transaction接口负责事务相关的操作。
它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
(3)Query和Criteria接口
Query和Criteria接口负责执行各种数据库查询。
它可以使用HQL语言或SQL语句两种表达方式。
(4)Hibernate主键介绍
Assigned方式由用户生成主键值,并且要在save()之前指定否则会抛出异常。
特点:
主键的生成值完全由用户决定,与底层数据库无关。
用户需要维护主键值,在调用session.save()之前要指定主键值。
Hilo使用高低位算法生成主键,高低位算法使用一个高位值和一个低位值,然后把算法得到的两个值拼接起来作为数据库中的唯一主键。
Hilo方式需要额外的数据库表和字段提供高位值来源。
默认请况下使用的表是 hibernate_unique_key,默认字段叫作next_hi。
next_hi必须有一条记录否则会出现错误。
特点:
需要额外的数据库表的支持,能保证同一个数据库中主键的唯一性,但不能保证多个数据库之间主键的唯一性。
Hilo主键生成方式由Hibernate维护,所以Hilo方式与底层数据库无关,但不应该手动修改hi/lo算法使用的表的值,否则会引起主键重复的异常。
Increment方式对主键值采取自动增长的方式生成新的主键值,但要求底层数据库的支持Sequence。
如Oracle,DB2等。
需要在映射文件xxx.hbm.xml中加入Increment标志符的设置。
特点:
由Hibernate本身维护,适用于所有的数据库,不适合多进程并发更新数据库,适合单一进程访问数据库。
不能用于群集环境。
Identity当时根据底层数据库,来支持自动增长,不同的数据库用不同的主键增长方式。
特点:
与底层数据库有关,要求数据库支持Identity,如MySQl中是auto_increment,SQLServer中是Identity,支持的数据库有MySql、SQLServer、DB2、Sybase和HypersonicSQL。
Identity无需Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。
Sequence需要底层数据库支持Sequence方式,例如Oracle数据库等。
特点:
需要底层数据库的支持序列,支持序列的数据库有DB2、PostgreSql、Qracle、SAPDb等在不同数据库之间移植程序,特别从支持序列的数据库移植到不支持序列的数据库需要修改配置文件
Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式。
特点:
根据不同的底层数据库采用不同的主键生成方式。
由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。
UUID使用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。
特点:
能够保证数据库中的主键唯一性,生成的主键占用比较多的存贮空间。
Foreign用于一对一关系中。
GUID主键生成方式使用了一种特殊算法,保证生成主键的唯一性,支持SQLServer和MySQL。
4.4.4Spring介绍
Spring是一个开源框架,它由RodJohnson创建。
它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
目的:
解决企业应用开发的复杂性。
功能:
使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
范围:
任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
轻量——从大小与开销两方面而言Spring都是轻量的。
完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。
并且Spring所需的处理开销也是微不足道的。
此外,Spring是非侵入式的:
典型地,Spring应用中的对象不依赖于Spring的特定类。
控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。
当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。
应用对象只实现它们应该做的——完成业务逻辑——仅此而已。
它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。
然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
框架——Spring可以将简单的组件配置、组合成为复杂的应用。
在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。
Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。
它们也为Spring中的各种模块提供了基础支持。
4.5数据库结构设计与实现
4.5.1创建数据库
本系统使用的是SQLServer2000作为系统数据库。
首先用户创建一个名为news的数据库,保存新闻发布及管理系统的所有数据。
可以在SQLServer的企业管理器中直接创建,也可以在SQLServer的查询分析器中执行以下脚本,创建数据库。
CREATEDATABASEdb_wynews
GO
4.5.2数据库逻辑结构设计
(1)本系统包含类别表Class、信息内容表Article、公告表tb_affiche、用户表Admin四个表。
本节将介绍这些表的结构。
类别表用来保存类别数据,其结构如表4-1所示。
表4-1Class表
Class
栏目分类表
序号
字段名称
数据类型
字段大小
允许为空
备注
1
ID
int
4
不允许
序号
2
SortName
nvarchar
50
允许
栏目名称
3
ChannelID
int
4
允许
级次编号
4
ParentID
smallint
2
允许
栏目编号
5
SortPath
nvarchar
50
允许
路径
6
OrderID
int
4
允许
顺序号
7
IsOpen
int
4
允许
是否打开
(2)信息内容表Article
信息内容表用来保存信息的基本内容,如标题、内容、发布时间等,具体结构如表4-2所示。
表4-2Article表
Article
内容表
序号
字段名称
数据类型
字段大小
允许为空
备注
1
ID
int
4
允许
序号
2
ChannelID
int
4
允许
频道号
3
ClassID
int
4
允许
栏目号
4
SortPath
nvarchar
50
允许
路径
5
Title
nvarchar
255
允许
标题
6
Content
ntext
16
允许
内容
7
Author
nvarchar
50
允许
作者
8
ComeFrom
nvarchar
50
允许
来源
9
AddTime
smalldatetime
4
允许
添加时间
10
Inp