搭建一个简单的Struts2+Spring+Hibernate框架

山阳辉
2023-12-01


由于要做一个java web 的项目,需要搭建一个SSH框架,留下笔记,备查。

一、新建Web Project

二、添加struts支持

添加Struts支持、Spring支持、Hibernate支持,都是右键工程——MyEclipse——Add****。

(1)选择Struts2.1,URL pattern选择/*

然后Next------------------------------------------------------------

(2)选择Struts 2 的核心库

Finish完成Struts支持的添加----------------------------------------------------

三、添加Spring支持

(1)Spring Version(Spring的版本)选择Spring 3.0。

添加6个库,AOP、Core、Persistence Core、Persistence JDBC、J2EE、Web。

JAR  Library Installation 选择Copy........

然后nex---------------------------------------------------------t

(2)勾掉Enable AOP Builder(第一项),finish

四、建立数据库与Hibernate的链接

(1)建立数据库链接(是建立一个链接)

如果没有数据库链接,则新建一个(这里是新建)。

①Driver template选择合适的数据库链接方式,这里选择MySQL Connector/J;

②Driver name是驱动名称,数据库连接名,起一个合适的就行;

③Connection URL要相应改一下,这里要把(dbname是你要连的数据库的名字),改成

④填写连接数据库的用户名和密码

⑤Add Jars添加数据库驱动jar包。

 

Finish就行了----------------------------------------------------------

(2)打开数据库

这里是新建立的数据库链接

可以双击打开,看一下已经有的数据库

五、添加Hibernate支持

回到PackageExplorer界面,添加Hibernate支持

(1)选择Hibernate 3.3,勾选MyEclipse Libraries,下面勾选Hibernate的3个库,Hibernate 3.3 Annotations & Entity Manager、Hibernate 3.3 Core Libraries、Hibernate 3.3 Advanced SupportLibraries,然后JAR  Library Installation  选择Copy checked............

Next------------------------------------------

(2)配置文件选择Spring configuration file

Next----------------------------------------------

(3)选择Existing Spring configuration file

Next-----------------------------------------------------------------------------------

(4)在DB Driver中选择刚建立数据库连接

Next-----------------------------------------------------------

(5)把Create SessinFactory class勾掉,不建立SessionFactory类;

到此环境搭建好了!!!但是还没完!!!

六、为各个层次建包

对框架的理解

(1)总体来说,原理流程如下(当然也是按照当前水平理解,并不一定对):

 

 

 

 

 

 

 

 

 

 


(2)按照当前的学习,对ssh框架各个部分的理解如下(当然不一定对。。。。。。)

1.Entity中就是定义了各个实体,实体中按照数据库中每个实体的属性列定义了成员变量,类中还包括该类的构造方法和变量的set、get方法。

2.Action是与前台(比如JSP)沟通的桥梁,前台表单中的数据通过action传给后台。前台数据与action中定义的成员变量对应起来,在action中添加set、get方法。还要定义service类的对象作为成员变量,这里我理解为action类通过set、get方法来获取service对象以连接service,这也是前后台联系的桥梁。

3.Service(即为上面的impl)包中的各个service类中也与上面action类似,要定义对应dao层类的对象作为自己的成员变量,还需声明对应的dao层接口。通过重写接口中的方法,并在重写方法中用dao的对象点取方法(函数),来调用dao中的具体实现了的方法。

4.Interfaces即为dao层接口,其中的各个类声明了该类中的dao层方法(函数),这些方法主要是对数据库中的操作(增删查改)的方法,service中的类需要声明对应的interface,并重写对应interface中的方法。这些方法的具体实现显然是在dao中。

5.dao中按照数据库中的各个属性列定义自己的成员变量,并进行数据库的操作(增删查改),这些操作可以通过反向工程生成,完成这些操作的方法(函数)都是interfaces中声明的方法的具体实现。(dao类要继承Hibernate支持这个父类,即要extends HibernateDaoSupport)。

七、反向工程

1.切换到数据库页面,找到你要反向工程的表

2.右键该表——Hibernate Reverse Engineering;

在Java srcfolder中选择你要放置的位置,这里选择实体包(即entity包,后面还要改的);

勾选CreatePOJO<>DB Table mapping information;

勾选Java DataObject(POJO<>DBTable),取消选择其下面的Createabstract class;

勾选Java DataAccess Object(DAO);

Next-----------------------------------------------------

3.Id Generator里选择increment,其他不管。(下面四个勾选框应该是如果表存在对应关系时选的,一对一, 多对多,多对一之类的那些,这里我的都是单表,就没有选)

Finish--------------------------------------------------------------

4.完成之后,发现entity下面多了这些东西

5.然后就把UserDAO移动到dao的包下面,变成这样

八、其他包的写法

反向工程生成完毕后,Dao包和Entity包有内容了。再写其他的包,其它的包也有自动生成的方法,如下。

1.接口包

前面介绍,interfaces是dao层的interfaces,所以它里面声明的方法都是dao层的方法。首先右键刚反向工程建立好的Dao类(这里也就是UserDAO)——Refactor——Extract interface....然后,在出来的页面接着往下做。。。。。

Interface neme给接口起个名字,这里我写UserInterfaces。别的先不管,然后下面在Members to declare inthe interface里面选择你要生成的变量或方法的接口。OK!

OK之后,发现DAO包里又多了一个java文件,就是刚生成的接口类,要把它移动到interfaces包里去。

2.Service包(这里是impl)

这个包要自己写,且要声明接口包里的那些对应的接口类

在该包下新建类,类名我写的UserService;

在Interfaces里面点Add,输入你要引入的接口类名字,选择,OK,Finish!

Service包下面多了一个类,就是刚建的那个

下面要编写这个类,就像前面说的,用定义DAO类的对象,点取调用dao中的具体方法。每个方法都要写。注意还要有dao对象的setget方法!

3.action包

写action之前要把jsp页面写出来,这里以登录为例,写了两个jsp页面,一个登陆界面,一个欢迎界面用作跳转。注意要把编码格式改为utf-8

这里的数据交互变量的名字前后台要对应,即jsp中和action中的成员变量名要对应一致

处理方法的返回结果要跟struts.xml文件中resultname一致!

Action中还要有变量的set、get方法,登录功能的方法在最下面,注意要抛出异常

4.配置文件

Action写完就要写配置文件了。

(1)struts.xml文件

注意:struts.xml里的actionname要跟JSP页面中form表单里的action对应一致!

      struts.xml里的actionmethod,可以理解为处理方式,要跟action中的方法(函数)名对应一致!

      struts.xml里的actionresult用来控制跳转,他的名字要与action中方法的返回结果保持一致!

(2)applicationContext.xml文件

在前面的配置过程中,该文件里面有一部分内容已经自动生成,不过还有些内容需要自己写。该文件的内容就体现了该框架的层次关系,即前面总结的这个关系:

蓝色矩形中大的两个bean是自己写的,上面一个bean是之前自动生成的。黑色箭头体现了层层调用的关系。

注意:1.下层beanid要与上层的ref保持一致!(黑色单、双下划线部分的内容)

  2.每层beanproperty name要与该beanclass(即这层对应的类)中定义的上层类的实体保持一致!(如上面,UserService这个bean中的property name为userDao,则在impl包下的UserService类中也定义了一个名为userDao的UserDAO对象。UserAction这个bean也一样,在UserAction这个类中,必定定义了一个SuerService的对象叫userService)特别注意:每层的类中定义上层类的对象必要有set、get方法,不然配置文件会报错!

      

 类似资料: