




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Eclipse下MVC框架的搭建使用Spring2、Struts2、Hibernate3、HSQLDB搭建一个实际WEB应用环境1 背景介绍随着Internet技术的广泛使用,Web技术已经广泛应用于Internet上,但早期的Web应用全部是静态的HTML页面,用于将一些文本信息呈现给浏览者,但这些信息是固定写在HTML页面里的,该页面不具备与用户交互的能力,没有动态显示的功能。因此出现了CGI、asp、php、jsp、servlet等一系列的动态网页语言,经历Model1和Model2的时代,到近年来MVC开发模式的不断发展壮大。在此过程中由于Java语言和java平台在架构应用与建立应用方面,提供着丰富的功能。从非常基础的基本数据类型和Class(即定义新类)组成的程序块,到建立具有丰富的特性的应用服务器和web框架都有着很多的方法。其中以开源社区中的JAVA WEB应用框架的发展最为迅速,出现了大量的框架,比如String、WebWork、Struts、JSF、Hibernate等MVC中各个层次的框架,为J2EE的WEB应用开发提供了有力的支持,大大简化了J2EE WEB应用的开发。本文利用String的IOC(控制反转)方法对WEB应用资源进行管理,有效的将具体实现与接口分离,实现解耦合,搭配控制器Struts和持久化工具Hibernate、结合纯JAVA的数据库搭建一个强大的WEB应用。本文主要是针对对J2EE应用开发具有一定了解的读者,可作为SSH初学者作为配置的例子来学习。2 准备材料本例假设系统以安装了JDK并设置了JAVA环境,所需主要组件如下表:名称版本用途Eclipse For J2EE3.5应用开发IDEString 2.5中间层Struts2.1.8显示控制层Hiebernate3.2数据层HSQLDB2.0数据库Jquery1.4JAVASCRIPT框架Tomcat5.5J2EE WEB应用容器 以上组件均为开源免费软件,可通过各官网进行下载。3 安装配置3.1 Tomcat的安装通过APACHE我们可以下载到Tomcat的exe版本和zip版本,两种版本均可,这里我们以zip版本为例。将Tomcat解压到硬盘的某个目录,如D:toolstomcat,然后设置Tomcat的环境变量:CATALINA_HOME=D:toolstomcat并将CATALINA_HOMEcommonlib目录添加到系统的CLASSPATH中。启动Tomcat,在浏览器中输入http:/localhost:8080/3.2 Eclipse的安装Eclipse为IBM的开源免费IDE,其无需安装仅需解压即可。本例中将Eclipse解压到D:toolseclipse目录。启动Eclipse。其启动界面如下: 启动后界面如下图:3.3 HSQLDB的安装 HSQLDB是一种纯JAVA语言编写的数据库软件。在数据量较小的应用环境下,其访问速度特别快,另外由于该数据库完全由JAVA编写,近年来其广受JAVA爱好者的推崇。关于HSQLDB的描述这里就不累赘了,大家可以通过官网去了解。本例中我们仅需要引用HSQLDB中的核心包hsqldb.jar。hsqldb.jar包包含了一下几个组件: HSQLDB RDBMS HSQLDB JDBC Driver Database Manager (Swing and AWT versions) Transfer Tool (AWT version) Query Tool (AWT) Sql Tool (command line) 其中、HSQLDB RDBMS 和 JDBCDriver 提供了 HSQLDB 的核心功能。其余的组件都是通用的数据库工具。这些通用工具可以使用在任何带有 DEC驱动的数据库上。我们将下载下来的HSQLDB解压,然后将其lib目录下的hsqldb.jar文件拷贝出来,由于这个jar包在后面的配置中才会使用,所以暂时将它保存到磁盘即可。3.4 应用配置A 配置Struts2为了给WEB应用增加Struts2功能,只需要将Struts2安装到Web应用中即可。在web应用安装Struts2框架核心只需要经过如下三个步骤。 修改web.xml文件,在web.xml文件中配置Struts2的核心Filter。 将Struts2框架的类库复制到WEB应用的WEB-INF/lib路径下。 WEB-INF/class下增加struts.xml配置文件。首先开打Eclipse,设置好Eclipse的工程目录,然后新建一个动态WEB工程。这里以SSH为工程名。以下将在SSH中整合Spring,Struts和Hibernate框架,实现MVC架构。在新建的SSH工程中,找到WEB-INF下的配置文件web.xml。打开web.xml,添加以下代码:encodingFilter/* struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*此处新增了一个过滤器,其目的是为了将应用中的*.action请求过滤出来,交给对应的Struts2 Action处理。(注:*.action是Struts2 Action的默认请求后缀,我们可以通过修改上面的配置语句来转换成其他后缀,本例中使用默认后缀)。然后将下载下来的struts2包解压。将struts2-core-2.1.8.jar、xwork-core-2.1.6.jar、commons-logging.jar-1.0.4.jar、freemarker-2.3.15.jar、antlr-2.7.2.jar等jar包复制到应用的lib目录下。当完成上述配置后,在工程的SRC目录下新建一个名为struts.xml的xml文件。Struts.xml是Struts2的配置文件,在这里可以将我们所写的Struts2 Action添加到其中,或者通过include参数扩展到到其他命名的XML文件中。Sturts.xml文件的基本配置如下:/MemberList.jsp在Eclipse中src目录下的文件在编译的时候会拷贝到WEB-INF/classes目录下,因此将struts2的配置建立在src目录下。该文件主要放置了Struts2的Action定义。在定义Struts2 Action是除了需要指定该Action的实现类外,还需要定义Action处理结果和资源之间的映射关系。上面定义了name为memberdealaction的Action,该Action将负责处理memberdealwith.action 这个URL的客户端请求。由于未在action中定义method参数,所以该类通过调用自身execute()方法处理用户的请求,如果返回success字符串,请求将被转发到/MemberList.jsp页面。在此需要说明,struts2应用默认需要java5以上的运行环境,需要至少Servlet API 2.4和JSP API 2.0的web容器。因此如果运行环境为JDK1.4的话,只需要添加1.4的支持;Tomcat的版本不能低于5.5。B 配置Spring2在web应用中添加Spring框架,只需要通过以下三步即可: 在web.xml中增加spring的listener 将下载的Spring包解压,并添加到工程WEB-INFlib的目录下 在WEB-INF中添加applicationContext.xml这个spring的配置文件首先,打开web.xml,在web.xml中添加以下代码:org.springframework.web.context.ContextLoaderListener上述代码,在web.xml中新增了一个监听器(linstener),其作用就是启动Web容器时,自动装配ApplicationContext的配置信息。它实现了 ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。可以通过配置applicationContext.xml这个文件来整合Struts2和Hibernate3框架。拷贝Srping包下的Spring.jar和Spring-orm.jar到SSH工程下的库目录。在本例中我们仅需要用到Spring包中的这两个包,Spring.jar这个核心包和用于整合Hibernate的spring-orm.jar这个orm包,其他包可以在以后应用需要扩展的时候再添加。打开Eclipse,在SSH工程目录下的WEB-INF目录中新建一个applicationContext.xml文件。具体代码形式如下:在这个xml文件中,我们通过在中建立对象,将应用所需要用到的对象注册到Spring中,由Spring进行管理。C 配置Hibernate3本例考虑配置文件的易读性和简单化,将Hibernate整合到Spring中去由Spring管理数据库连接池的数据源和分配sessionFactory对象。Spring为我们提供有高效的O/R方案,使我们可以更方便快捷的使用持久化工具,比如我们现在用的Hibernate。Spring对hibernate的配置是通过建立一个LocalSessionFactoryBean对象来完成的,这是一个工厂bean的实现。在Spring中整合Hibernate我们除了需要对应的Hibernate包外,还需要额外的jar包,比如commons-dbcp-1.4.jar和commons-pool-1.4.jar这两个包,用来建立数据库连接池。打开上面所建的applicationContext.xml,在其之间添加以下代码:org.hibernate.dialect.HSQLDialecttrue通过上面的代码我们建立了一个连接到HSQLDB的数据源,并利用该数据源建立了一个sessionFactory的bean工厂,然后我们就可以通过继承Spring为我们提供HibernateDaoSupport来对数据库的DAO模式管理。D 配置HSQLDBHsqldb是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的。本例中为了使应用的部署更为简单化,我们将HSQLDB数据库服务作为应用内在的一部分运行,随应用的启动而启动,随应用的关闭而关闭,实现一键化部署,减少数据库服务器部署的工作。为了使HSQLDB作为SSH这个J2EE WEB应用的一部分而运行在容器里,我们只需要在SSH工程下的WEB-INF目录中新建一个目录,命名为db;然后将上面所解压出来的hsqldb.jar包拷贝到SSH工程的库目录下,即WEB-INFlib目录中;在db目录下新建一个.bat文件,其代码如下:java -cp ./lib/hsqldb.jar org.hsqldb.server.Server -database.0 netdata -dbname.0 netdata这句代码执行的是调用刚才我们所添加的hsqldb.jar文件中的org.hsqldb.server.Server类,其作用是将db目录下一个名为netdata的HSQLDB数据库运行在Server模式。(注:HSQLDB支持数据库的自创建,如果我们未在db目录下建立一个名为netdata的HSQLDB数据库,数据库服务器会在此建立一个新的netdata数据库;如果有,则引用原有的数据库,因此在之前我们不需要建立这个数据库,只需要运行一次这个.bat文件即可)这个文件是为了在调试的时候将数据库独立运行,避免每次重新发布应用都启动和关闭HSQLDB数据库服务器一次,减少应用发布的时间。Eclipse有强大的插件支持,这里我们使用SQLExplorer这个插件来操作HSQLDB数据库,由于hsqldb.jar自带有HSQLDB数据库的JDBC驱动,因此我们可以轻松使用这个SQLExplorer这个插件来连接HSQLDB。由于篇幅的关系这里就不讲解如何使用SQLExplorer去连接和操作HSQLDB了。到此我们已经基本完成应用的配置了,接下来就可以在此配置上进行J2EE的WEB应用开发了。4 应用开发本例的应用开发,我们在数据库中新建一张表,然后通过整合Spring、Struts、Hibernate对用该表进行CRUD操作,最后将数据库配置到应用中一起发布出去。4.1 模型层构建A 建立member表首先,我们将使用SQLExplorer在上述的netdata数据库中建立一张member表,具体语言如下:Create table member(m_id integer identity primary key,m_username varchar(30) not null,m_password varchar(30) not null)B 持久化类在应用程序中,用来实现业务问题尸体的类就是持久化类。只要我们的持久化类遵循了一些简单的规则,就能很好的被Hibernate所支持,这些规则也被称作简单传统的Java对象(POJO:Plain Old Java Object)编程模型。虽然Hibernate3已经可以支持其他方法来表达领域模型,如使用Map实力的树形结构,但在本例中为了让读者更容易理解,我们还是使用POJO方式。根据上面的所建立的member表,其POJO对象的代码如下:package com.gloryview.db;public class Member private int m_id;private String m_username;private String m_password;public Member()public void setM_id(int m_id)this.m_id=m_id;public int getM_id()return this.m_id;public void setM_username(String m_username)this.m_username=m_username;public String getM_username()return this.m_username;public void setM_password(String m_password)this.m_password=m_password;public String getM_password()return this.m_password;我们在com.gloryview.db包下建立了这个Member类。关于java的包结构在此就不进行解释,这里着重介绍该类与Hibernate关系。该类中有一个无参数的构造方法。所有持久化类都必须有一个默认的构造方法(可以不是Public的),这样的话Hibernate就可以使用Constructor.newInstance()类实例化它们。C 映射定义在Hibernate中,对象和关系数据库之间的映射通常用一个XML文档(XML Document)来定义的。这个文档是一个易读的,并且可以手工修改的映射文档。其映射语言是以Java为中心,因此这个映射文档是按照持久化类的定义来创建的。下面我们将为Member类建立一个映射文档,其命名为Member.hbm.xml。其代码如下:上面的代码按照Member类的属性定义为其建立了一个Hibernate的映射文档。所有的XML映射都需要定义如上所示的DOCTYPE。接着我们将这个映射文档添加Hibernate的配置中,让它知道有这样的一个映射对象存在。打开Spring的配置文件,在其中关于Hibernate配置部分有一个list节点,我们在这个节点之下建立一个节点,并将其指向我们刚建的/gloryview/db/Member.hbm.xmlD DAO支持前三部分已经完成了Hibernate与netdata中Member表的配置工作,接下来我们开始为该对象添加DAO模式(数据访问对象)的支持。首先,我们在com.gloryview.dao包下建立一个接口类,命名为:memberDaoInterface。其代码如下:package com.gloryview.db.dao;import com.gloryview.db.Member;import java.util.List;public interface MemberDaoInterface public List GetMemberList();public void AddMember(Member member);public void updateMember(Member member);public void delMember(int m_id);public Member getMember(int m_id);该接口定义了对Member对象的添加、修改、删除和获得对象列表的几个方法。接着我们为这个接口编写一个实现类,该类作为Member对象的服务类,来实现其上几个方法。将命名为:memberDaoService。为了使用Spring为了简化Hibernate的DAO开发而提供的HibernateTemplate对象,我们通过继承Spring的HibernateDaoSupport类。继承了该类,可以通过调用getHibernateTemplate()方法来获得一个HibernateTemplate实例。memberDaoService类代码如下:package com.tenstars.db.dao;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.tenstars.db.tables.Member;public class MemberDaoService extends HibernateDaoSupport implementsMemberDaoInterface public void AddMember(Member member) this.getHibernateTemplate().save(member);public Member getMember(int m_id)return (Member)this.getHibernateTemplate().get(Member.class, m_id);public List GetMemberList() 、return this.getHibernateTemplate().find(from Member);public void updateMember(Member member)this.getHibernateTemplate().update(member);public void delMember(int m_id)this.getHibernateTemplate().delete(getMember(m_id);上面的代码就是利用了Spring提供的HibernateTemplate对象了对Member进行添加、删除、修改和获得对象等操作。E 配置服务完成了上面的操作,接下来我们将把MemberDaoService这个服务服务层类注册到Spring中,又Spring对其进行管理。打开Spring的配置文件applicationContext.xml这个配置文件,在其中添加下面的语句: MemberDaoService继承了Spring的HibernateDaoSupport类,由于该类需要注入一个sessionFactory对象,因此我们将上面建立的sessionFactory对象作为属性注入到这个服务类中去。4.2 控制层构建A 建立Action类通过上面的配置,基本完成了后台数据的配置,下面我们将为该WEB应用编写其控制层了。本例中控制层是由Struts2来实现的,关于Struts2的配置,我们在第三部分完成了,现在我们对控制器进行介绍。打开Eclipse,在com.gloryview.actions包下新建一个普通的Java类,这个Java类继承Struts2的ActionSupport对象,其代码如下:package com.gloryview.actions;import com.opensymphony.xwork2.ActionSupport;import com.gloryview.db.Member;import com.gloryview.db.dao.MemberDaoService;import java.util.List;public class MemberDealWith extends ActionSupport private static final long serialVersionUID = 1L;private MemberDaoService memberDaoService;private List memberList;private Member member;public void setMember(Member member)this.member=member;public Member getMember()return this.member;public void setMemberDaoService(MemberDaoService memberDaoService)this.memberDaoService=memberDaoService;public MemberDaoService getMemberDaoService()return this.memberDaoService;public void setMemberList(List memberList)this.memberList=memberList;public List getMemberList()return this.memberList;public String execute()setMemberList(getMemberDaoService().GetMemberList();return SUCCESS;public String toUpdateMember()if(member=memberDaoService.getMember(member.getM_id()=null)return INPUT;return SUCCESS;public String AddMember()if(member.getM_password()=null|member.getM_password().trim().equals()|member.getM_username()=null|member.getM_username().trim().equals()return INPUT;memberDaoService.AddMember(member);return SUCCESS;public String DelMember()if(member.getM_id()=0)memberDaoService.delMember(member.getM_id();return SUCCESS;elsereturn INPUT;public String UpdateMember()if(member.getM_password()=null|member.getM_password().trim().equals()|member.getM_username()=null|member.getM_username().trim().equals()return INPUT;memberDaoService.updateMember(member);return SUCCESS; 该类就是一个Struts2的action类,它除了继承Action类的execue()方法,才新建了AddMember()、DelMember()、UpdateMember()、toUpdateMember()这个四个方法,这几个方法在后面将会用到,主要是实现对Member对象的控制。B 注册Action类根据新建的action类,我们需要把它交给Spring,让Spring对其进行管理。因此我们需要将它注册到Spring中,让Spring对其进行管理。配置如下: 这里将该类在Spring中id设为Member_Deal_With,由于本例中使用Spring对Java对象进行管理且MemberDealWith类中把MemberDaoService作为一个属性来获取这个对象,所以在上面的配置中,我们需要将这个MemberDaoService对象注入MemberDealWith中。C 配置Action类上面完成了Action类在Spring中配置,接下来,我们需要将这个Action类配置到Struts中去,使其正式作为一个Struts2的控制类。打开src下Struts2的配置文件struts.xml。在其actions节点下添加以下配置语句:/MemberList.jsp/updatemember.jsp/memberdealwith.action/memberdealwith.action/index.jsp/memberdealwith.action/memberdealwith.action/memberdealwith.action/memberdealwith.action上面我们通过MemberDealWith中不同的5个执行方法,将这个Action类配置为5个Action对象,方便在显示层的访问。这里需要注意的是class属性中,需要填入的是在spring的配置中bean的id,而不是类的位置。4.3 显示层构建完成了对控制器的配置,下面我们将对该应用的显示层进行设计。Sruts2的标签库是Sturts2的重要组成部分,其提供了非常丰富的功能,不仅提供了表现层的数据处理,而且提供了基本的流程控制功能,还提供了国际化、Ajax支持等功能。通过使用Struts2的标签,我们可以最大限度减少页面代码的书写。因此在本例中,所有的jsp页面都使用Struts2的标签进行书写。要在JSP中使用Struts2的标签,只需要在页面指明标签的引入。通过在JSP的代码的顶部加入以下代码就可以了。本例中显示层的基本流程是通过访问应用,可以通过index.jsp跳转到MemberList.jsp上查看已添加Member列表或者在index.jsp中添加新的Member对象,然后在MemberList.jsp中可以对Member对象进行修改和删除。A Index.jspInsert title hereSSHH Testa href=Go Member List 在index.jsp中有一个链接用于连接到Member列表,还有一个表单,用于添加Member对象。B MemberList.jspInsert title hereALL Member List delBack To Index在MemberList.jsp中显示了Member的列表。另外还有两个链接,一个链接到修改Member对象,一个用于删除Member对象。C Updatemember.jspInsert title hereSSHH TestMember List在UpdateMember.jsp中是一个表单,用于修改Member对象。5 应用部署5.1 整合HSQLDB为了实现HSQLDB随应用的启动而启动并随着其关闭而关闭,使HSQLDB作为应用的内置服务而运行,我们需要在应用的配置文件中(即web.xml)修改其配置,未该应用增加多一个监听器,用于监听应用的启动和关闭。通过实现ServletContextListener这个接口就可以做到将HSQLDB整合到应用中去,具体实现代码如下:pac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 试析创业板公司激励性股票期权制度研究
- 公司流程制度管理制度
- 安徽省鼎尖联考2024-2025学年高二下学期5月月考语文试卷(含答案)
- 江苏开放大学2025年春大学英语(A)复习题2参考答案
- 贵州省毕节市2024-2025学年高三下册第二次模拟(3月)数学试卷
- 多模态命令解析技术-洞察阐释
- 沈阳精益管理发言材料
- 南昌大学招聘笔试真题2024
- 社区社区服务设施使用效率管理基础知识点归纳
- 跨行业合作在推动中国式养老金融中的作用
- 相位对焦技术原理
- 珊瑚化石科普知识讲座
- 中小学德育工作指南实施手册
- 学术规范与学术道德课件
- (新湘科版)六年级下册科学知识点
- 短视频的拍摄与剪辑
- 合格供应商的声明函和承诺书范文
- 小学数学《年龄问题》ppt
- 部编版初中语文课后习题答案
- 数据链系统与技术(第2版) 课件 第5、6章 无人机数据链、数据链的消息格式
- SPSS大数据案例分析报告-
评论
0/150
提交评论