Struts2+Spring5+hibernate5整合示例之环境搭建
工具 | 版本 |
Eclipse Java EE IDE for Web Developers. | Neon.3 Release (4.6.3) |
JDK | 1.8.0_152 |
Tomcat | Tomcat 8.5 |
Spring | spring-framework-5.0.2.RELEASE-dist |
Struts2 | struts-2.5.14.1 |
Hibernate5 | hibernate-core-5.2.12.Final |
AspectJ | 1.8.13 |
MySQL | mysql-5.7.17 |
第一步:创建新的工程(点击file-->New-->Dynamic Web Project)
最后勾上Gernnerate web.xml deployment describtor,点击finish。
第二步:注意:以下(1)、(2)、(3)、(4)、(5)所有的引入的jar包均复制到工程的WEB-INF/lib文件夹下
(1)引入Struts2的jar包;(从官网下载struts-2.5.14.1-min-lib.zip)其包结构如下:
(2)引入Sring的jar包:官网下载地址
(https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework或者http://http://repo.springsource.org/libs-release-local/org/springframework)
(3)引入hibernate的jar包,选择
hibernate-release-5.2.12.Final.zip\hibernate-release-5.2.12.Final\lib\required文件夹下的jar文件,其结构如下:
(4)引入AspectJ的jar,因为以后会用到注解,下载地址:
(http://www.eclipse.org/aspectj/downloads.php,同时还需要下载aspectjweaver-x.x.xx.jar文件包,下载地址:http://mvnrepository.com/artifact/org.aspectj/aspectjweaver ),具体结构如下:
(5)引入MySQL的驱动jar包(根据自己的MySQL版本不同引入不同的驱动包)
(6)引入struts2-spring-plugin-2.3.34.jar,有时候可能是这个包的问题导致整合失败,原因可能是版本太新,可换为低一点的版本,就可以解决。还需要引入commons-logging-x.x.x.jar.
第三步:
配置web.xml文件,将原来的文件内容只保留如下内容:
(1)删除多余内容
(2)向web.xml文件中加入struts的过滤器器,配置如下(注意:本次用到的struts2版本为2.5):
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping
(3)加入spring的监听器:其配置如下;
<!-- 用来指定spring配置文件的路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
第四步:
(1)在工程中的src目录下创建struts2.xml文件(由于还没有创建action处理类,红色方框内的class以及name属性可先暂时不配):
(2)在工程中的src目录下创建applicationContext.xml文件:
其文件头设置为:
如果使用的是连接池(其他类型的连接配置可网上搜索)则配置可参考如下设置(注意:如果使用的是如下图配置,则bean中的class的属性需要引入c3p0-x.x.x.x.jar包):
第五步:接下来创建具体的实现类:
(1)在工程中的src文件下下分别建立如下几个包;
com.sss.action (用来处理action事件的类)
com.sss.dao (用来处理数据dao层的类)
com.sss.domain (用来封装POJO的类)
com.sss..service (用来处理业务层的类)
(2)在domain包下建立POJO对象product类,并同时建立Product.hbm.xml文件(需要添加hibernate插件,具体操作可上网搜索)
(3)在dao的包下创建dao层的处理类ProductDao:
(4)在service包下创建业务逻辑处理的service类(此处只简单的建立了存储方法,其他方法可自行添加):
(5)在action包下创建页面响应的action类,(实现ModelDriven接口的主要作用是封装Object对象。实现接口时可以指定某个具体的Object对象类,当jsp页面中需要该对象的属性时,直接model.属性名即可得到该属性。而不用再在action中编写该对象的getset方法了,对象.属性名了。相当于默认的对象封装。方便操作。);
第六步:所有类实现之后,需要在applicationContext.xml文件配置对应的bean实例:
(1)使用spring来代替hibernate管理数据连接需要在applicationContext.xml文件中加入如下配置:
(2)配置相关的dao类、action类、业务处理类的bean实例:
(3)由于使用了spring来管理hibernate。所以还要开启事务,否则后续中的获取Session实例中的getSeesionFactory().getCurrentSession()方法将无法获取到Session实例。
第七步:配置struts.xml文件,指定action的实现类:
第八步:在WebComten文件夹下建立前端jsp业务界面(前端的业务页面中的action名称一定要与struts.xml中配置的名称要一致!!):
Finally:测试环节(注意:确保所有包已经引入,同时数据库已经启动)
将工程发布到Tomcat8.5上去。
若果后台输出了sql插入语句,则测试成功。