首页 » Java » Hibernate » 正文

最新版使用SSH框架(Struts2.x + Spring4.x + Hibernate5.x)搭建JavaWeb开发环境实例

前言:此次项目仅仅只是我学习SSH框架时的一个入门实例,本身没有太复杂的东西。同时这篇文章也算是对所学知识的一个总结和梳理,当然能够帮到一些初学Java的ssh框架的童鞋就更好了。大神轻喷,文中有误的话可以在下方留言。(PS:文末有整个项目的源代码和相关sql文件的下载链接


这个项目很简单,只是做一个简单的用户登录即可。由于我没有使用Myeclipse开发,而是使用了eclipse for Java EE来开发,因此所做的步骤相对要多一点O(∩_∩)O~

一 Spring整合Hibernate并测试

1 在MySQL5中创建数据库bookshop,并运行bookshop.sql,导入相关的表和数据

2 创建一个Dynamic Web Project –> “ssh2test1”,导入jar包(所有jar包均存放在WebContent/WEB-INF/lib),接下来创建一个包“com.ssh2test1.entity”,用于存放相关实体类以及配置文件。有关实体类的介绍可自行参考Hibernate相关内容。由于是用户登录,因为我们需要用到数据库中的 users这个表。所以接下来就是在com.ssh2test1.entity里创建一个Users.java和它的配置文件Users.hbm.xml

Users.java:

Users.hbm.xml:

3 配置proxool数据库连接池

(1) 在src根目录下创建一个proxool.xml,用于配置数据库连接情况,下面附上代码,里面有详细注释

proxool.xml:

(2) 配置web.xml,注意:在Spring中配置proxool连接池和在Hibernate中配置有很大的不同,一般情况下proxool再web.xml中是这样配置的:

但是又因为Spring通过Listener方式启动,这就导致了Spring比proxool先加载,然后程序运行时将会报错:

(7073 ms) [ERROR] [11:40:40] org.logicalcobwebs.proxool.ProxoolDriver – Problem
org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias ‘ProxoolPool’
at org.logicalcobwebs.proxool.ConnectionPoolDefinition.doChange(ConnectionPoolDefinition.java:246)
at org.logicalcobwebs.proxool.ConnectionPoolDefinition.<init>(ConnectionPoolDefinition.java:143)
at org.logicalcobwebs.proxool.ProxoolFacade.registerConnectionPool(ProxoolFacade.java:96)
at org.logicalcobwebs.proxool.ProxoolDriver.connect(ProxoolDriver.java:77)
at java.sql.DriverManager.getConnection(DriverManager.java:664)


因此在这里我们需要proxool也以listener启动,并且还比Spring先启动即可。有大神写了个补丁,我把它命名为ProxoolListener.jar放在lib下了,下面附上现在的web.xml配置情况

web.xml:

(3) 在src根目录下新建applicationContext.xml,用于配置相关数据源和实例对象,以实现依赖关系的注入。在这里先配置proxool数据源和sessionFactory

applicationContext.xml:

4 创建一个包“com.ssh2test1.dao”,封装的是数据库操作。里面有一个接口UserDAO.java和它的实现类UserDAOImpl.java

UserDAO.java:

UserDAOImpl.java:

5 创建一个包“com.ssh2test1.biz”,这是业务逻辑层,里面有一个接口“UserBiz.java”和它的实现类“UserBizImpl.java”,封装了登录操作

UserBiz.java:

UserBizImpl.java

6 在applicationContext.xml里面添加UserDAO和UserBiz的实例,在上面的配置后面添加节点:

7 Spring和Hibernate的整合到这里差不多就可以了,接下来在WebContent里新建testHibernateSpring.jsp,对前面的配置进行测试:

如果启动项目后运行testHibernateSpring.jsp文件显示上图这样的提示,则说明我们上面的Spring+Hibernate整合配置已经成功了


二 Spring整合Struts2并测试

1 编写视图页面login.jsplogin_success.jsp

login.jsp:

login_success.jsp:

2 web.xml里添加Struts2过滤器

3 在applicationContext.xml中添加Struts2的Action的实例


4 在src根目录下新建struts.xml,并配置。注意的是,在这里class属性不再使用类的全名,而是使用applicationContext.xml中定义的Action的Bean实例名称

struts.xml:

5 新建包“com.ssh2test1.action”,并创建一个Action类“UserManagerAction.java”,调用userBiz里的login()方法进行登录判断

UserManagerAction.java:

6 整个项目的配置步骤到此结束,现在启动项目后运行login.jsp进行测试,用户名:admin,密码:admin。如果登录成功后显示下图这样的页面,则表示全部配置已经成功了


附:源代码和SQL文件下载链接:链接: http://pan.baidu.com/s/1dD0np6p 密码: xged



本文共 10 个回复

  • 撒都发生 2017/01/06 19:27

    UserDAOImpl 文件存在一个错误,应该在这个类里面再声明一个private Users user; 然后 public List search(Users us) { this.user = us; 然后才可以。

    • admin 博主 2017/01/06 21:10

      @ 撒都发生 这里的search方法使用的Users对象是直接从外部传进来的,没必要再定义一个私有属性。你这种写法虽然没错但是太过于死板了 :eek:

      • 撒都发生 2017/01/06 21:18

        @ admin 但是用你的方法提示有错呐!

        • admin 博主 2017/01/06 22:05

          @ 撒都发生 我感觉我这种写法没问题啊,而且代码我当初也是测试过的。你再仔细看看是不是你哪里写错了

  • java656 2016/12/16 16:55

    谢谢楼主的技术分享,不知楼主能否建个qq群,方便技术爱好者交流学习

    • admin 博主 2016/12/16 18:41

      @ java656 有一个小型Java交流群,只是现在暂时没有对外开放。你加吧,群号是:590424939

  • 好奇怪 2016/11/04 23:13

    感谢博主,我初学SSH,可是博主的源码我下来在tomcat中打开index.jsp是404不知道什么问题0 0

    • admin 博主 2016/11/05 00:22

      @ 好奇怪 首页肯定是存在的,我估计是你那个地方配置还是有问题,所以项目启动时报错,因此表现出来的形式就是404

  • 啦啦啦 2016/06/26 22:40

    tomcat 是什么版本的?9? :?:

发表评论

*