基于Struts和Hibenate的宣布系统研究
副标题#e#
摘 要 本文阐明白传统Web信息系统的缺点,具体叙述了MVC设计模式思想,分解了当前被遍及应用的开源设计框架:Struts和Hibernate的事情道理,基于以上阐明提出将二者团结起来实现优势互补配合开拓遥感信息宣布系统的思路,最后团结了DAO和工场设计模式实现了具有精采可扩展性、实用性和可维护性的遥感信息宣布系统。
要害词 遥感数据分发;MVC设计模式;Struts框架;Hibernate映射东西
引言
跟着Internet技能的飞速成长,Web信息系统被遍及应用。遥感信息宣布系统,就是指基于Web的遥感数据信息宣布系统。跟着时间的推移,传统的Web信息系统袒露了许多问题,如页面逻辑、业务逻辑和数据逻辑杂糅在一起,系统的耦合性高,修改、维护坚苦,扩展性差。为降服以上问题,新的开拓要领也不绝被提出来,如软件分层思想,MVC设计模式等等。
本文就如何构建弱耦合性,可维护和可扩展的遥感信息宣布系统等问题展开探讨。按照当前Web技能的成长,提出了回收Java情况下实现MVC设计模式的Struts框架和实现数据耐久化的Hibernate框架团结起来开拓遥感信息宣布系统,提高系统的实用性、机动性,降服传统Web系统的缺点。
MVC设计模式和开源框架
1、MVC设计模式
MVC设计模式是一种著名的用户界面软件开拓设计模式,它是模子-视图-节制器(Model-View-Controller)缩写。
MVC设计模式最早由Xerox在20世纪八十年月为Smaltalk-80语言成长提出的,可是这种设计思想并没有范围于该语言,而是被遍及地应用到了其他面向工具的编程语言中。
图1 MVC模子组件干系图
在MVC设计模式中,它把应用措施分成了3个焦点部门,道理图如图1所示。
⑴ 模子(Model)
模子封装了用户数据和处理惩罚数据的业务逻辑,浮现了应用措施的当前状态,并且可以将用户数据状态的变革提供应多个显示该数据的视图共用。模子是应用措施的焦点。
⑵ 视图(View)
视图提供了用户界面,是用户和应用措施的交互的窗口,既接管用户输入,也把模子数据状态显示给用户,可是视图不认真任何业务逻辑处理惩罚,仅仅是将用户输入数据通报给节制器或将模子数据显示给用户。
⑶ 节制器(Controller)
节制器毗连了模子和视图,按照用户请求判定将请求交给哪个模子来完成,然后挪用视图来显示模子处理惩罚后的用户请求功效。
MVC设计模式将应用措施举办了分层,视图和模子通过节制器毗连,从而淘汰了用户界面和业务逻辑之间的耦合,使措施设计越发清晰、机动,也提高了软件的可扩展性、可维护性。
#p#副标题#e#
2、Struts框架
Struts框架是Apache开源软件同盟(www.apache.org)的一个开源项目——Jakarta Struts Framework。Struts框架担任了MVC设计模式的特性,遵守了J2EE的Servlet、JSP等技能类型,而且按照J2EE的特点做了相应的变革和扩展,是J2EE体系架构的一种轻量级实现。作为一款优秀的Java Web应用措施的开拓框架,Struts框架凭借其清晰性、机动性,成为当前最为遍及应用的轻量级Java Web 开拓框架。
Struts框架实现了MVC设计模式,其事情道理图如图2所示:
图2 Struts框架道理图
⑴ 节制器的实现
Struts框架中回收了ActionServlet和Action类以及Struts-config.xml设置文件作为节制器的实现。
个中,Struts-config.xml设置文件设置了差异用户请求及对应的详细业务逻辑组件来供ActionServlet类查询。
ActionServlet类是中心Servlet,认真处理惩罚所有的用户请求。当用户提出请求,ActionServlet类最先对请求举办处理惩罚,它将按照Struts-config.xml设置文件将用户请求映射到详细的Action类;而当Action类挪用模子组件处理惩罚好用户请求,并返回了处理惩罚功效后,仍然由ActionServlet类按照Struts-config.xml设置文件将功效转发到视图提供应用户,可能转发别的一个Action做进一步处理惩罚。
Action类实现了详细的业务逻辑,它接管用户的输入,然后挪用详细的模子组件来完成用户请求。
⑵ 视图的实现
Struts构架主要回收了JSP作为视图的实现,它提供了富厚的JSP标签库支持应用措施的开拓,并且引入了ActionForm组件(实质为JavaBean)作为用户表单的封装来完成数据的传输。
⑶ 模子的实现
Struts框架对模子——即巨大的数据耐久化层没有提供太多的支持,可是这也就是说开拓人员有更多自由来选择符合量级的耐久化技能,好比Hibernate、EJB等等。
Struts框架实现了MVC设计模式,可是它是典范的表示层框架,对模子的实现是不敷的,所以有须要引入其他架构增强对模子的实现。
3、Hibenate框架
#p#分页标题#e#
Hibernate框架是开放源代码的工具干系映射东西(Object-Relational Mapping),是一款基于Java情况的优秀的工具耐久化开拓框架。它按照O/R(工具/干系)映射技能思想,对JDBC举办了轻量级封装,使开拓人员可以利用一种面向工具的方法来哄骗和打点干系数据库,所以从技能本质上来说该框架是一种提供面向工具的数据库处事中间件。
Hibernate框架位于应用措施的业务化和耐久化层,在运行时的体系布局如图3所示:
SessionFactory接口,是一个数据库映射干系的内存映像,它是线程安详的,所以可觉得多个线程同时挪用发生Session,是Session的工场,别的它为事务之间可以重用的数据提供了可供选择的二级缓存。
图3 Hibernate运行时体系布局图
Session接口,是Hibernate框架的运行中心,它被用户措施挪用,提供与耐久化相关的诸多操纵,如加载、添加、查询、更新和删除耐久化工具,是实现用户措施耐久化事情的主要接口,所以Session被称为耐久化打点器。
Transaction接口,是用来指定原子操纵的单位范畴,它通过对底层详细的JDBC、JTA等事务举办封装和抽象,形成一个统一的事务操纵界面。
另外,Hibernate尚有两个重要的焦点接口:Configuration接口和Query和Criteria接口。Configuration接口是用来对Hibernate设置和启动。Query和Criteria接口是用来执行对数据库的查询,且支持HQL、SQL多种查询方法,个中HQL是一种面向工具的查询语言。
遥感信息宣布系统的设计
遥感信息宣布系统是基于地面站遥感数据信息的宣布系统,包罗了用户信息模块,数据欣赏模块,数据订购模块等。
1、系统的体系机构设计
按照前面先容可以看到Hibenate架构只具备数据耐久化设计本领,而Struts架构则在模子设计方面本领单薄,所以将二者团结起来利用,配合搭建系统布局实现MVC模子设计,可以到达二者优势互补,从而使系统设计具备低耦合性以及较高的可维护性和可扩展性。本系统的体系布局设计如图4所示:
图4 系统体系布局图
本系统具有多个模块,可是各个模块的设计道理沟通,其顶用户登录设计典范地操作了Struts框架和Hibernate框架的设计,浮现了两种架构团结的特点,下面以此实现为代表举办详细叙述。
2、用户登录模块设计
用户登录模块,即用户从欣赏器输入小我私家书息,由系统在数据库中检索数据,然后验证用户信息,假如验证乐成登岸到系统界面,不然,提示用户信息堕落。
2.1 数据耐久层设计
数据耐久层基于Hibernate架构,回收了DAO设计模式。在耐久层设计中,包罗了以下三个重要设计步调:
首先,把用户信息封装为VO(Value Object)。VO是一组值工具,只包括了一些属性和getter/setter要领的POJO(Plan Old Java Bean)。典范设计如下:
public class OrAdmin implements Serializable{
private String adminname;
public String getAdminname()
{ return adminname; }
Public void setAdminname(String adminname)
{ this.adminname = adminname; }
……
}
其次,回收了DAO设计模式和抽象工场设计模式,完成了 DAO工场和Hibernate 数据库操纵的详细实现,典范设计如下:
public abstract class DAOFactory {
public static DAOFactory getInstance() {}
public abstract AdminDAO createAdminDAO();
}
public class AdminDAOImpl implements AdminDAO {
public OrAdmin getAdmin(String adminName) {
try {
Session s =HibernateUtil.currentSession();
Query query = s.createQuery("from OrAdmin as oa whereoa.adminname='"+adminName+"'");
}……
return null;
}
}
最后,操作了Hibernate的设置文件完成从应用措施到数据库的映射,典范设计如下:
<session-factory >
<property name="connection.driver_class">
org.postgresql.Driver
</property>
<property name="connection.url">
jdbc:postgresql://127.0.0.1:5432/DBInfo
</property>
<property name="dialect">
org.hibernate.dialect.PostgreSQLDialect
</property>
<mapping resource="OrAdmin.hbm.xml" />
……
</session-factory>
#p#分页标题#e#
在该层的设计中,VO的信息封装浮现了面向工具设计编程思想;DAO的设计模式和抽象工场模式削弱了上层挪用和详细实现之间的耦合;Hibernate设置实现了数据库高移植性,只需要改变Hibernate设置文件,不消修改措施设计就可以完成差异数据库之间的改换。
2.2 业务逻辑层设计
业务逻辑层包括了供客户端措施挪用的业务逻辑法则,以辅佐客户端完成业务操纵。该层回收了业务署理、DAO和抽象工场设计模式,典范设计如下:
public class ManagerFactory {
public static AdminManager
createAdminManager(){
return new AdminManagerImpl();
}
}
public interface AdminManager {
OrAdmin getAdmin(String username);
}
public class AdminManagerImpl implements
AdminManager{
private AdminDAO dao =DAOFactory.getInstance().createAdminDAO();
public OrAdmin getAdmin(String username)
{ return this.dao.getAdmin(username); }
}
在该层的设计中,业务署理、DAO和抽象工场设计模式的利用,使业务逻辑越发机动,假如详细业务产生变革,在暗示层和数据耐久化层改变很小就可以完成改变,这种设计加强了系统的可维护性和机动性。
2.3 暗示层设计
暗示层基于Struts框架,回收了JSTL标签库技能。在暗示层的设计中,主要包罗了以下三个重要设计步调:
首先,成立用于用户欣赏的JSP视图页面,个中最重要的是设计出封装用户表单信息的ActionForm。ActionForm是Struts架构的重要组件,是包括了一些属性和getter/setter要领的POJO,典范设计如下:
public class AdminActionForm extends ActionForm {
private String adminname;
public String getAdminname()
{ eturn adminname;}
public void setAdminname(String adminname)
{ his.adminname = adminname; }
……
}
其次,搭建用户请求和业务逻辑之间的桥梁——Action组件,该组件认真把用户信息和详细的业务逻辑处理惩罚接洽在一起,典范设计如下:
public class AdminAction extends Action {
AdminActionForm adminActionForm =(AdminActionForm) actionForm;
adminname=adminActionForm.getAdminname();
adminpasswd=adminActionForm.getAdminpd();
AdminManager adminManager=ManagerFactory.createAdminManager();
OrAdmin orAdmin=adminManager.getAdmin(adminname);
if(orAdmin == null||!orAdmin.getAdminpasswd().equals(adminpasswd)){
servletRequest.getSession().setAttribute("loginfail","Invalid name or password. Login failture");
return actionMapping.findForward("logout");
}else{
servletRequest.getSession().setAttribute("adminname",adminname);
return actionMapping.findForward("success");
}
}
最后,通过Struts设置毗连ActionForm和Action,完成一个业务设计,典范设置如下:
<form-beans>
<form-bean name="adminActionForm" type="com.rice.web.struts.from.AdminActionForm" />
</form-beans>
<action-mappings>
<action name="adminActionForm" path="/adminAction" scope="session" type="com.
rice.web.struts.action.AdminAction"validate="false">
<forward name="success" path="/manager/main.jsp" />
<forward name="logout" path="/manager/index.jsp" />
</action>
</action-mappings>
该层设计中,JSTL标签的利用简化了JSP页面,使页面设计和暗示层业务逻辑疏散,提高了应用措施的可维护性;Struts架构的引入,使应用措施实现了MVC设计模式,布局清晰,提高了系统的可扩展性。
总结
本文先容了MVC设计模式以及Struts和Hibernate框架的事情道理,操作了他们的利益互补,有机地将Struts+Hibernate框架团结起来构建了一个遥感信息宣布系统,降服了传统Web信息系统的缺点,提高了系统的可维护性、可扩展性,低落了系统地耦合性。