Struts2从发布稳定的版本到现在已经快一个年头了,有关struts2的讨论也多了起来,下面将用一个实例来解决Struts2+Spring2+Hibernate3三者之间的整合问题。这里还是非常俗气地使用了用户登录程序,没办法,因为它很简单,很容易理解,在其他应用中整合,都一样。整合就是要让彼此之间能够知道对方,在这三者之间,其实我们要整合的是struts2+spring2以及Spring2+Hibernate3,Struts与Hibernate不存在整合问题,他们一个是web层框架,一个是持久层框架。
按照如下的步骤进行:
1、建立好web工程及相应的package,即建立三层结构:web层,service层,dao层。
2、导入所需要的jar包,特别地要加入Struts2-Spring-plugin-2.0.9.jar,其他的jar包大家应该知道,不清楚的可以网上查阅相关资料。由于不能上传超过10M的文件,在下面的源代码附件中没有包括所需要的jar。
3、配置web.xml文件,在这个文件中,需要加入一个Spring的监听器类,其完整配置如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
4、编写一个User类和User.hbm.xml映射文件(代码略,参考下面的源代码附件):
5、编写dao层代码,使用接口和实现类的方式,其完整源代码如下:
IUserDao.java和UserDaoImpl.java:
package org.hnylj.dao; import org.hnylj.model.User; public interface IUserDao { public User login (String username,String password) ; }
package org.hnylj.dao.impl; import java.util.List; import org.hnylj.dao.IUserDao; import org.hnylj.model.User; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class UserDaoImpl extends HibernateDaoSupport implements IUserDao { public User login(String username, String password) { User user = null; final String HQL = "FROM User u where u.username=? and u.password=?"; String[] parameterHql = new String[2]; parameterHql[0] = username; parameterHql[1] = password; List<?> list = this.getHibernateTemplate().find(HQL,parameterHql); if(list.size()!=0){ user = (User)list.get(0); } return user; } }
6、编写service层代码,与上面一样也使用接口和实现类的方式,其完整源代码如下:
IUserService.java和UserServiceImpl.java:
package org.hnylj.service; import org.hnylj.model.User; public interface IUserService { public User login(String username, String password) ; }
package org.hnylj.service.impl; import org.hnylj.dao.IUserDao; import org.hnylj.dao.impl.UserDaoImpl; import org.hnylj.model.User; import org.hnylj.service.IUserService; public class UserServiceImpl implements IUserService { private IUserDao userDao ; public IUserDao getUserDao() { return userDao; } public void setUserDao(IUserDao userDao) { this.userDao = userDao; } public User login(String username, String password) { User user = userDao.login(username, password); return user ; } }
7、编写web层代码,即Struts的action代码:
package org.hnylj.web; import org.hnylj.model.User; import org.hnylj.service.IUserService; import org.hnylj.service.impl.UserServiceImpl; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private String username ; private String password ; private IUserService userService ; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public IUserService getUserService() { return userService; } public void setUserService(IUserService userService) { this.userService = userService; } public String execute() throws Exception { username = getUsername() ; password = getPassword() ; User user = userService.login(username, password) ; if (user != null) { return SUCCESS ; } return ERROR ; } }
8、所有的代码已经写好了,现在就是进行一下配置, 这里需要applicationContext.xml文件和Struts.xml文件,其中applicationContext.xml文件管理所有的bean,我们将hibernate所需要的数据源及Struts中action都注入其中,统一管理。配置情况如下
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssh2" /> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="user" value="root" /> <property name="password" value="123" /> <property name="maxPoolSize" value="40" /> <property name="minPoolSize" value="1" /> <property name="initialPoolSize" value="1" /> <property name="maxIdleTime" value="20" /> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect </prop> </props> </property> <property name="mappingResources"> <list> <value>org/hnylj/model/User.hbm.xml</value> </list> </property> </bean> <bean id="userDao" class="org.hnylj.dao.impl.UserDaoImpl"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <bean id="userService" class="org.hnylj.service.impl.UserServiceImpl"> <property name="userDao"> <ref bean="userDao" /> </property> </bean> <bean id="loginAction" class="org.hnylj.web.LoginAction"> <property name="userService"> <ref bean="userService" /> </property> </bean> </beans>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="struts2" namespace="/" extends="struts-default"> <action name="login" class="org.hnylj.web.LoginAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package> <constant name="struts.custom.i18n.resources" value="globalMessages" /> </struts>
还有一些用于Struts国际化的属性文件代码请参考下面的源代码附件。
至此一个Strut2+Spring2+Hibernate3整合的用户登陆程序所有工作完成,将整个应用部署到tomcat下,启动tomcat服务器即可运行。
一个Java技术交流群,一起交流,共同进步,扣扣群号:513086638
相关推荐
Struts2+Spring2+Hibernate3 整合方案是一种常见的Java Web开发技术栈,用于构建高效、可维护的Web应用程序。这三个框架各自负责不同的职责:Struts2作为MVC(模型-视图-控制器)框架处理请求和响应,Spring作为应用...
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
轻量级JavaEE企业应用实战_Struts2+Spring3+Hibernate整合开发_第3版.part2
总的来说,"最新项目系统:Struts2+Spring4+Hibernate4三大框架整合"为学习和实践Java Web开发提供了一个实用的平台,对于提升开发者的技术水平和项目经验具有极大的帮助。通过深入研究和实践,开发者可以掌握Java ...
Struts 2+Spring 3+Hibernate框架技术精讲与整合案例Struts 2+Spring 3+Hibernate框架技术精讲与整合案例Struts 2+Spring 3+Hibernate框架技术精讲与整合案例Struts 2+Spring 3+Hibernate框架技术精讲与整合案例...
Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...
轻量级JavaEE企业应用实战_Struts2+Spring3+Hibernate整合开发_第3版.part1
Struts 2+Spring 3+Hibernate框架技术精讲与整合案例3Struts 2+Spring 3+Hibernate框架技术精讲与整合案例3Struts 2+Spring 3+Hibernate框架技术精讲与整合案例3
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。其中Struts 2升级到2.2.1,Spring升级到3.0.5,Hibernate升级到了...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...
Java Web技术整合应用与项目实战 JSP+Servlet+Struts2+Hibernate+Spring3_13336769.zip.003 Java Web技术整合应用与项目实战 JSP+Servlet+Struts2+Hibernate+Spring3_13336769.zip.003
1. 配置环境:确保项目中引入了Struts2、Spring和Hibernate的相应库,这通常通过Maven或Gradle等构建工具完成。 2. 配置Spring:创建Spring的配置文件(如`applicationContext.xml`),定义Bean并设置其依赖。例如...