基于Struts2框架的信息发布系统的设计与初步实现.docx

上传人:b****8 文档编号:29402657 上传时间:2023-07-23 格式:DOCX 页数:19 大小:230.33KB
下载 相关 举报
基于Struts2框架的信息发布系统的设计与初步实现.docx_第1页
第1页 / 共19页
基于Struts2框架的信息发布系统的设计与初步实现.docx_第2页
第2页 / 共19页
基于Struts2框架的信息发布系统的设计与初步实现.docx_第3页
第3页 / 共19页
基于Struts2框架的信息发布系统的设计与初步实现.docx_第4页
第4页 / 共19页
基于Struts2框架的信息发布系统的设计与初步实现.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于Struts2框架的信息发布系统的设计与初步实现.docx

《基于Struts2框架的信息发布系统的设计与初步实现.docx》由会员分享,可在线阅读,更多相关《基于Struts2框架的信息发布系统的设计与初步实现.docx(19页珍藏版)》请在冰豆网上搜索。

基于Struts2框架的信息发布系统的设计与初步实现.docx

基于Struts2框架的信息发布系统的设计与初步实现

第一章Struts2的起源和发展

说到网络应用很难让人不联想到网络信息的浏览,自从Internet进入民用领域之后,上网成为了越来越多的人闲暇时光的消磨手法。

于是网络系统的开发也变得越来越总要。

1.1Web技术的发展

随着Internet技术的大面积应用和发展,传统的静态HTML页面由于缺乏足够的用户交互能力已经无法满足日益膨胀的网络需求。

人们希望Web应用中能够包含更多的动态交互功能,于是为了应对拥有更广泛用户群的动态Web开发,软件开发商分别推出的ASP和JSP两款动态网站开发解决方案。

但是当时的JSP开发并没有很科学的层次设计,最初的JSP开发中逻辑代码和前端代码杂合在一起。

虽然在最初开发时这样的做法使得开发非常的容易,然而随着Web系统的使用越来越广泛,应用规模的日益增长,如果继续使用传统的简单的JSP+Servlet结构进行Web系统的开发,则会由于系统层次混乱而导致系统的开发难度和维护成本越来越大,最终使开发过程陷入困境。

1.2MVC思想进入Web系统开发

面对开发过程中所出现的困难,开发者们试图寻找一种能够使得开发结构更加具有条理性的开发模式。

根据以往面向对象系统设计的经验,开发者开始将MVC开发模式引入Web系统的开发。

MVC模式将一个应用分为三个基本部分:

Model(模型)、View(视图)、Controller(控制器)。

在此模式中触发事件由控制器捕获,并根据事件的类型来改变模型和视图。

这样既可将系统模型与视图分离,从而使各部分能够工作在最小的耦合状态下协同工作,从来提高系统的扩展性和可维护性。

将其引入Web系统开发后,系统模式由传统的JSP完成用户请求和响应改变为由控制器捕获用户请求,JavaBean完成模型操作,而JSP专门负责响应用户需求。

老一代的开发框架Struts1便是这时的产物。

1.3Struts2开发框架的成型

随着Struts1框架在Web系统开发中的大量应用,越来越多的使用者发现Struts1有着许多不可避免的缺陷。

首先,Struts1只支持JSP作为表现层,然而并不是所有的Web系统都必须使用JSP进行信息反馈。

其次,Struts1编写业务逻辑控制器时,必须调用大量ServletAPI,而这些接口都是依赖于Web服务器的。

这样就造成了业务逻辑测试无法脱离Web容器,造成了测试的困难。

最后,由于大量的ServletAPI使用,使得系统结构混乱,使得这些业务逻辑在使用其他框架是需要大量重写,降低了代码使用效率。

为了应对这些问题,Struts2去除了业务逻辑中对于ServletAPI的耦合,使得业务逻辑类不需要继承任何Struts2基类,降低了测试难度,也加强了Action类的可移植性。

1.4本章小结

本章从Web系统开发的发展历程入手,讲述了Web系统开发模式的变化,从而引出了Struts框架的起源,描述了Struts1的出现,以及所带来的问题。

并由此解释了Struts2出现的目的,和解决的问题。

第二章Struts2框架的基本原理

学习一个框架,我们首先要了解他的工作原理和基本工作方式,由此才能够进行后续的学习和使用,本章从基本的流程开始讲解Struts2的基本原理和相关配置。

2.1Struts2的事务处理流程

相对于Struts1框架,Struts2为了使业务逻辑控制与Servlet容器的API分离而大量使用了拦截器来处理用户的请求。

首先由Struts2的核心控制器拦截到用户在浏览器中发送的请求,然后核心控制器根据请求调用适当的Action进行处理。

然后根据Action返回的参数选择对应处理方式将处理的结果返回给浏览器。

2.2Struts2的基本配置

Struts2的基本配置主要包括三个部分:

站点设置、核心设置控制器、业务控制器设置。

2.2.1为站点添加Struts2框架支持

要使用Struts2框架开发就必须要将Struts2框架嵌入到当前的Web系统中,为Web系统提供相关支持。

那么我们需要被指配置WEB-INF路径下的web.xml文件,将Struts2的核心控制器键入系统。

该Web.xml文件在开发过程中该文件会存在与源代码目录中。

具体设置比较简单,只需要将web.xml中的filter标签配置为:

Struts2org.apache.struts2.dispatcher.FilterDispatcher

Struts2

/*

这样设置之后系统将会调用struts2框架的FilterDispatcher组件处理由客户端发送的请求,就完成了系统Struts2框架的添加。

2.2.2Struts2的控制器组件

完成了Struts2框架的添加,我们可以尝试写一个业务的控制器组件。

一个控制器组件主要用来处理用户提交的请求,这些请求大多数情况下会有参数传递,于是一个控制器(Action)类就需要包括用于读取这些参数的函数,在Struts2框架中这些操作需要靠编写响应的设置(setter)和获取(getter)函数来完成。

同样的,Struts2框架要求改控制类完成的操作需要通过相应的执行(execute)函数来完成。

下面是一个样例:

publicclassLoginAction{

//需要传递的参数

protectedStringusername;

//参数的Setter和Getter函数

publicvoidsetUsername(Stringuser);

publicvoidsetUsername(Stringuser);

//执行函数

publicStringexecute()throwsException{

//返回结果值

returnnull;

}

}

2.2.3Struts2框架文件的设定

有了控制器类我们要做的就是将控制器置入系统,所以我们需要设计一个调用打的方式,并设定一个处理控制器返回结果的方式。

这就是这一步需要配置的工作。

比如上面的LoginAction类,我们可以这样设置:

/welcome.jsp

/login.jsp

这里action标签就是我们需要配置的部分,上面的内容表示当调用Login动作的时候,系统会使用我们编写的类包javaAction中的LoginAction类来处理这条请求。

并且当其执行函数返回success时会跳转至welcome.jsp页面继续下一步工作,而返回input是则会跳回登陆界面提示登陆。

这样Struts2框架基本就可以工作了。

2.3本章小结

本章主要讲述了Struts2框架的工作流程和配置要点,并说明了各个组件的作用,基本说明了一个Struts2系统开发框架的搭建步骤。

第三章Struts2框架开发简单的信息发布系统

前面已经简要说明了Struts2框架的基本原理和基本配置方式,那么接下来我们将会通过一个小心信息发布系统的开发来详细描述Struts2框架的应用方式。

3.1信息发布系统的分析与建模

类似所有的系统开发,没个系统都需要进行完善的分析与设计,只有这样才能够对后续的开发进行把握。

3.1.1系统的可行性分析

可行性研究用来判断系统目标和规模是否显示,以及系统完成后能否达到预计的目的。

所以经过了初步的设计和调查后得出以下三点可行性分析:

1.技术可行性

本次系统主要为学习和了解Struts2开发模式,因此只需要实现信息发布系统的基本功能,所以程序结构上比较简单。

整个应用核心部分使用Struts2框架作为核心解决方案,使用基本的JavaBean进行后台数据库操作,并使用JSP页面进行信息响应。

2.经济可行性

本次开发使用的所有软件都是网上发布的开源版本或者相关软件的免费版本,使用的相关参考都源自有经验的开发者的无私分享,所以开发成本基本为零。

且本次开发的目的仅限于学习和了解新兴的开发架构,亦不需要达成任何经济效应。

因此,可以认为开发本系统在经济上是可行的。

3.操作可行性

本系统的开发参照了目前主流信息服务站点的设计结构,采取了相似的设计思路,基本满足了用户的需求。

因此,本系统在操作上也是基本可行的。

3.1.2系统的需求分析

本系统是一个信息发布系统,所以需要有信息发布与显示功能。

对于信息显示部分,我们需要设置专门的发布员进行信息的发布和管理。

而对于浏览部分,我们需要设置分类浏览和总体浏览。

对于浏览的信息,它必须要拥有标题,并标示出他的作者和发布的日期。

同时为了配合分类浏览功能,一跳信息还必须同时具有分类属性,便于分类浏览时作为参照。

这样就满足了一个基本的信息发布平台的需求。

3.1.3系统的总体功能分析

通过参考各种信息发布系统,从自身的理解进行分析,对各种需求进行整理后认为,本系统需要具备的功能主要有:

信息登录、信息修改、信息浏览三个主要功能,并且配合这三大基本功能选择实现其他配套功能。

由此,本系统最终的规划功能有:

信息发布系统的首页,包括发布员的注册与登录,浏览各种分类新闻。

信息发布系统的浏览页面,显示信息的详细信息。

信息发布系统的登陆页,为新闻发布员提供登录服务。

信息发布系统的注册页,为发布员提供注册服务。

信息发布系统的发布员页面,显示发布员发布的信息。

本系统的系统结构图如下图3.1所示

图3.1系统功能模块

对应的系统应该分为以下几个模块,如图3.2所示

图3.2系统功能模块

3.1.4系统用例图设计

由于信息发布系统需要面对游客和发布员两类人群,所以需要设计两种模式。

一种是只能浏览信息的游客模式,另一种是需要登陆的发布员模式。

因此系统要有一个不需要登陆的浏览界面,和需要登陆的信息发布界面。

因此系统需要一个自由浏览页面和登陆注册相关页面。

此部分用例图如下图3.3所示。

图3.3用户浏览和登陆

如果你是一个发布人员,当你登陆到信息系统后可以管理你自己发布的信息。

因此需要发布管理用例。

在发布员进行管理操作时,他可以查看已发信息、发布新信息、修改信息和删除信息。

用来管理自己信息的用例如下图3.4所示。

图3.4发布信息管理

综上所述,我们大致归纳出系统的三个实例:

1.发布员实体:

对应发布和管理信息的用户。

2.信息实体:

对应需要发布的信息。

3.信息分类:

对应信息的分类。

本系统中这三个实体的对应关系如图3.5所示:

图3.5实体及其关联关系

图3.5中的实体关系如下:

1.发布员和信息的关系:

1对N,因为一个发布员可以不止发布一条信息,而一条信息只会被一个人发布。

2.信息分类与信息的关系:

1对N,因为一个信息只能由一个分类,而一个分类中可以有多条信息。

3.2信息发布系统的实现

完成了分析与设计,接下来就是搭建环境并正式开始系统的设计实现工作了。

本节就将详细介绍系统开发实现的各个步骤。

3.2.1Struts2框架开发环境的搭建

由于本次开发的主要目的是学习与研究Struts2框架的使用,所以对于开发工具和开发架构的选择我们应当本着简单、易学和免费的基本方针。

因此本次采用的开发平台及工具选择如下:

1.Web服务器

目前开发商比较使用于小系统的免费环境基本是采用Apache的Tomcat,因为这款软件免费开源、功能强大、说明详细且有许多很成熟的参考项目,十分利于学生进行了解学习。

因此本次系统开发选择的服务器是Tomcat,版本号7.0.12。

详情参见http:

//tomcat.apache.org/。

2.集成开发环境

目前比较常用的Java开发环境主要有NetBeans和Eclipse两种,由于个人的使用习惯和插件支持的完善程度,本次开发选用了Eclipse进行开发。

其版本为EclipseHelios(3.6.2)forJavaEEDevelopers64位Windows版本。

详细参见http:

//www.eclipse.org/。

3.数据库服务器

目前比较主流的开发数据库一般为Oracle、SQLServer、MySQL等等。

由于本次开发目的主要为学习用途,考虑到价格因素本次开发选用功能可靠、兼容性好的MySQL作为数据库服务器。

此次使用的版本为MySQL5.5.1164位Windows版本,详细参见

4.Web开发框架

本次学习的目的就是学习使用Struts2框架开发,因此开发框架选用最新版本的Struts2开发框架。

此次使用的版本号为Struts2.2.1.1,详细参见http:

//struts.apache.org/。

5.其他插件

除了以上这些基本开发环境外,本次为了更加方便的进行Struts2开发使用了对应的Eclipse开发插件AlveoleStudioStruts2EditorFeature0.7.4与MVCWebProjectHelpFeatureFeature0.5.0用于辅助设置Struts2功能。

详细参见

3.2.2数据库的设计与实现

在系统分析中,由图3.5很容易观察出我们需要设计3个数据库表:

发布员(user)表、信息分类(sort)表、信息(info)表。

其具体表设计如图3.6所示:

图3.6数据库表设计

以上便是本次系统的数据库设计。

接下来我们就需要将数据库设计转换为SQL语句并进行实现。

由于篇幅限制,这里仅列出信息表(info)的创建语句,其它与之类似。

CREATEDATABASEINFOPUBDBDEFAULTCHARACTERSETUTF8;

USEINFOPUBDB;

CREATETABLEUSER(

#略

);

CREATETABLESORT(

#略

);

CREATETABLEINFO(

IIDINTUNSIGNEDNOTNULLAUTO_INCREMENT,

ITITLEVARCHAR(200)NOTNULL,

IUSERINTUNSIGNEDNOTNULLREFERENCESUSER(UID),

ISORTINTUNSIGNEDNOTNULLREFERENCESSORT(SID),

IDATEDATE,

ITEXTTEXT,

PRIMARYKEY(IID)

);

这里就基本完成了数据库的部署工作,为下面的系统开发做好了数据铺垫。

3.2.3数据操作接口的设计与实现

在前面我们完成了初始的数据库创建,然而在实际使用中我们并不能总是手动使用SQL语言去完成数据库操作。

所以为了使程序能够自动完成数据库的操作我们需要为程序设计和编写一套数据库操作方法。

这些设计数据访问的方法我们称为DAO组件,一般的DAO组件需要包括四部分:

DAO工厂类、DAO接口、DAO接口的实现和需要传递的对象。

通常的情况下,一个标准的DAO接口需要能够完成一个表的增删改查的基本操作。

本次系统的DAO接口设计如图3.7所示:

图3.7DAO接口设计图

图3.7中各DAO组件和对应的数据表以及业务逻辑组件有着如下图3.8所示的依赖关系:

图3.8DAO组件依赖关系图

从以上两个图中我们可以得出,本系统通过三个DAO组件操作对应的三个实体数据表。

每个DAO接口都拥有基本的增删改查功能,并对应不同的数据表包含一些额外的操作接口。

这里以UserDAO为例,由于对于用户表,登录时需要通过用户名查找用户,所以UserDAO拥有额外的通过用户名进行查找的方法函数:

findUserByName()。

UserDAO接口代码应当如下:

packagejavaDAO;

importjava.util.List;

importjavaBean.User;

publicinterfaceUserDAO{

Userget(intuid);

voidsave(Useruser);

voidupdate(Useruser);

voiddelete(Useruser);

voiddelete(intuid);

ListfindAll();

UserfindUserByName(Stringuname);

}

最后使用UserDAOImpl类实现这些接口,就完成了对用户(user)表的DAO组件。

其他数据表对应的DAO组件同理即可完成。

3.2.4业务逻辑组件的设计与实现

业务逻辑组件的主要工作是操作DAO组件完成各种业务的响应。

这些响应应当包括:

登陆时检查用户信息,登陆后获得用户发布消息列表,按分类取得信息,添加修改信息等等。

本次系统开发通过对用例图3.3和图3.4的分析归纳出业务逻辑接口如下图3.9所示。

图3.9业务逻辑组件接口设计

接口代码如下:

packagejavaService;

importjava.util.List;

importjavaBean.Info;

importjavaBean.Sort;

importjavaBean.User;

publicinterfaceInfoPubService{

//用户检查

publicbooleancheckUser(Stringusername,Stringpassword);

//通过用户名查找用户

publicUsergetUserByName(Stringuname);

//列出用户发布的信息

publicListgetInfoByUser(intuid);

//分类列出信息

publicListgetInfoBySort(intsid);

//获取全部信息

publicListgetAllInfo();

//添加用户

publicvoidaddUser(Useruser);

//添加信息

publicvoidaddInfo(Infoinfo);

//新增分类

publicvoidaddSort(Sortsort);

//修改用户信息

publicvoidupdateUser(Useruser);

//修改信息

publicvoidupdateInfo(Infoinfo);

//修改分类

publicvoidupdateSort(Sortsort);

}

上面设计中,各个接口的功用自上而下分别包含了用户验证、通过用户和分类查询信息、取得所有信息和分类、添加用户信息分类以及修改用户或者信息资料的功能,这些功能实现了用例图3.3和图3.4的各种功能,为下一步完成整个站点的Web表达提供了底层基础。

3.2.5Web系统的设计与实现

Web系统的设计主要包括业务处理和页面跳转两个部分,由前面的分析我们可以将本次系统的页面和业务大致分为以下几个部分:

1.浏览信息:

这部分主要包含信息总览和信息分类浏览。

主要应对的功能是游客的信息获取。

他需要完成分类浏览和总览两个功能。

2.信息发布:

这部分主要作用是为发布员提供一个信息发布工具,主要功能是应对发布员的信息发布。

这部分需要包含登陆、查询、修改、添加四个功能。

根据以上两点归纳得出Web系统的页面和业务跳转关系如图3.10所示。

图3.10页面跳转图

登陆站点的首页,首先得到信息总览用于生成首页总览信息。

这时游客可以通过首页进入分类浏览页,获得相关分类的详细信息。

而信息发布员则可以通过登陆连接进入登陆界面,在输入指定信息之后登录进入发布者个人信息页面。

在此前我们需要收集用户发表的消息生成消息列表用于生成发布者个人信息页。

发布者在个人信息页面可以选择发布新信息和修改已经发布的信息。

完成这些操作后页面将返回发布者个人信息页。

参照章节2.2.2的内容设置struts.xml以完成这些跳转过程,并按照2.2.3的内容完成相关控制器类的编写。

这里以LoginAction为例给出相关代码。

首先是LoginAction类的编写

/*

*前面略去settergetter方法

*/

publicStringexecute()throwsException{

//TODOAuto-generatedmethodstub

Stringname=this.getUsername();

user=ser.getUserByName(name);

if(user.getUID()==0){

//未找到用户名,返回用户不存在

addFieldError("username",getText("NoSuchUser"));

returnINPUT;

}elseif(!

ser.checkUser(getUsername(),getPassword())){

//密码错误,返回密码错误提示;

addFieldError("password",getText("PasswordError"));

returnINPUT;

}

//记录登陆状态;

ActionContext.getContext().getSession().put("use",getUsername());

returnSUCCESS;

}

其对应的跳转配置如下:

/infopub.jsp

/login.jsp

类似的完成其他各组件和对应的设置后就可以开始最后JSP页面的编写了。

3.2.6JSP页面的设计与修饰

JSP页面的编写和修饰是一件十分繁琐的事情,由于篇幅有限本次仅以login.jsp为例,讲解JSP页面的设计与修饰方法。

<%@pagelanguage="java"contentType="text/html;charset=GBK"

pageEncoding="GBK"%>

<%@taglibprefix="s"uri="/struts-tags"%>

以上是页面的编译设置部分,里面设置了页面

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1