Spring集成Struts与Hibernate入门详解

发布时间 - 2026-01-11 00:09:28    点击率:

前言

最近将Spring,Struts,Hiberbate基础已经学习完成。想自己把这三个框架集成一下,然后再写一个后台管理网站练练手。Spring的作用是依赖注入,而Struts是显示层的东西,这两个框架集成后是什么样子。一边学习,一边记录。上车。

Spring集成所需jar包

首先,Spring集成Struts,那么applicationContext.xml和struts.xml,web.xml肯定是不能少的。前面两个是Spring和Struts的配置文件,后面一个是整个web的全局配置文件。在每个配置文件中应该怎么配置,怎么相互关联呢。其实就是将Struts中指定的Action 类为Spring注入的类。

三大框架集成开发并不难,难的地方在于各个包的依赖要搞清楚,版本之间的差异也是一点。下面列出Spring集成Struts所依赖的包:

依赖包

此处所有依赖为Struts2.0和Spring3.0。版本有点老,我用最新版的始终集成不正确。等搞好了再升级版本。

Number Package Platform Function
1 commons-fileupload-1.2.2.jar common 文件上传功能
2 commons-io-2.0.1.jar common
3 commons-lang-2.5.jar common
4 commons-logging-1.1.1.jar common 日志
5 freemarker-2.3.16.jar Struts 模版引擎
6 javassist-3.11.0.GA.jar common 动态编程
7 ognl-3.0.1.jar common 表达式语言,提供属性,方法调用
8 org.springframework.asm-3.1.1.RELEASE.jar spring Spring独立的asm程序,Spring2.5.6的时候需要asmJar 包3.0.6开始提供他自己独立的asmJar。暂时我自己也不懂这事干嘛的。
9 org.springframework.beans-3.1.1.RELEASE.jar spring Spring IOC实现
10 org.springframework.context-3.1.1.RELEASE.jar spring Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等
org.springframework.context.support-3.1.1.RELEASE.jar spring Spring-context的扩展支持,用于MVC方面
12 org.springframework.core-3.1.1.RELEASE.jar spring Spring 核心工具包
13 org.springframework.expression-3.1.1.RELEASE.jar spring Spring表达式语言
14 org.springframework.web-3.1.1.RELEASE.jar spring Spring Web工具包
15 org.springframework.web.servlet-3.1.1.RELEASE.jar spring 基于servlet的MVC实现
16 struts2-core-2.2.3.1.jar struts Struts核心库
17 xwork-core-2.2.3.1.jar struts xwork核心库
18 struts2-spring-plugin-2.2.3.1.jar struts Spring与Struts相互集成
19 antlr-2.7.2.jar common 语言语法分析器
20 aopalliance-1.0.jar common 面向切面编程接口
21 commons-dbcp.jar common DBCP数据库连接池
22 commons-pool.jar common DBCP数据库连接池
23 dom4j-1.6.1.jar hibernate 灵活的xml框架
24 hibernate-jpa-2.0-api-1.0.1.Final.jar hibernate 注解使用类
25 hibernate3.jar hibernate 数据库核心包
26 jta-1.1.jar hibernate 分布式事务处理
27 mysql-connector-java-5.1.18-bin.jar hibernate jdbc连接器
28 org.springframework.jdbc-3.1.1.RELEASE.jar hibernate spring与jdbc集成
29 org.springframework.orm-3.1.1.RELEASE.jar hibernate 数据库集成
30 org.springframework.transaction-3.1.1.RELEASE.jar hibernate 事务集成
31 slf4j-api-1.6.1.jar common 日志系统

集成

model层

新建Usermodel,如下:

package com.action;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@javax.persistence.Table(name="user")
public class User implements Serializable{
 private static final long serialVersionUID = 1L;
 @Id
 @GeneratedValue
 @Column(name="id")
 public int id;
 @Column(name="name")
 public String name;
 @Column(name="password")
 public String password;
 
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public String getPassword() {
 return password;
 }
 public void setPassword(String password) {
 this.password = password;
 }
 @Override
 public String toString() {
 return "User [name=" + name + ", password=" + password + "]";
 }
}

dao层

新建dao接口:

package com.dao.impl;
import java.util.List;
import com.action.User;
import com.action.UserAction;
public interface UserDao {
 public void save(User action);
 
 public User getUser(int id);
 
 public void update(User action);
 
 public void delete(User userAction);
 
 public List<User> findByName(String name);
}

实现dao接口

package com.dao.impl;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.action.User;
import com.action.UserAction;
public class UserDaoImpl implements UserDao {
 
 private SessionFactory sessionFactory;
 private HibernateTemplate mHibernateTemplate;
 
 public SessionFactory getSessionFactory() {
 return sessionFactory;
 }
 public void setSessionFactory(SessionFactory sessionFactory) {
 this.sessionFactory = sessionFactory;
 }
 public HibernateTemplate getHbernateTemplate() {
 if (mHibernateTemplate==null) {
 mHibernateTemplate = new HibernateTemplate(sessionFactory);
 }
 return mHibernateTemplate;
 }
 
 public void save(User action) {
 // TODO Auto-generated method stub
 getHbernateTemplate().save(action);
 }
 public User getUser(int id) {
 // TODO Auto-generated method stub
 User userAction = getHbernateTemplate().get(User.class, new Integer(id));
 return userAction;
 }
 public void update(User action) {
 // TODO Auto-generated method stub
 getHbernateTemplate().update(action);
 }
 public void delete(User userAction) {
 // TODO Auto-generated method stub
 getHbernateTemplate().delete(userAction);
 }
 @SuppressWarnings("unchecked")
 public List<User> findByName(String name) {
 // TODO Auto-generated method stub
 String queryString = "from User u where u.name like ?";
 return getHbernateTemplate().find(queryString);
 }
 
}

view层

显示以及action

/**
 * 
 */
package com.action;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.dao.impl.UserDaoImpl;
import com.opensymphony.xwork2.ActionSupport;
/**
 * @author kevin
 *
 */
public class UserAction extends ActionSupport {
 public String name;
 public String password;
 private UserDaoImpl userDao;
 
 public String getName() {
 return name;
 }
 
 public void setUserDao(UserDaoImpl userDao) {
 this.userDao = userDao;
 }
 
 public UserDaoImpl getUserDao() {
 return userDao;
 }
 public void setName(String name) {
 this.name = name;
 }
 
 
 public String getPassword() {
 return password;
 }
 public void setPassword(String password) {
 this.password = password;
 }
 @Override
 public String execute() throws Exception {
 // 不能直接new 得从applicationContext中获取
 HttpServletResponse response = ServletActionContext.getResponse();
 response.setContentType("text/xml;charset=UTF-8");
 User user = new User();
 user.name = name;
 user.password = password;
 userDao.save(user);
 response.getWriter().write(user.toString());
 return "success";
 }
}

第一个页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>测试</h1>
<s:form action="user">
<s:textfield name="name" label="username"></s:textfield>
<s:textfield name="password" label="password"></s:textfield>
<s:submit></s:submit>
</s:form>
</body>
</html>

第二个页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>妈的智障</h1>
${name} 
${password} 
</body>
</html>

配置文件

添加全局web配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 <display-name>SpringSS</display-name>
 <welcome-file-list>
 <welcome-file>index.html</welcome-file>
 <welcome-file>index.htm</welcome-file>
 <welcome-file>index.jsp</welcome-file>
 <welcome-file>default.html</welcome-file>
 <welcome-file>default.htm</welcome-file>
 <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
 
 <filter>
 <filter-name>struts2</filter-name>
 <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class>
 </filter>
 <listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern> 
 </filter-mapping>
</web-app>

Spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
 
 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
 <property name="driverClassName">
 <value>com.mysql.jdbc.Driver</value>
 </property>
 <property name="url">
 <value>jdbc:mysql://localhost/spring</value>
 </property>
 <property name="username">
 <value>root</value>
 </property>
 <property name="password">
 <value>123456</value>
 </property>
 </bean>
 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
 <property name="dataSource">
 <ref local="dataSource"/>
 </property>
 <property name="annotatedClasses">
 <list>
 <value>com.action.User</value>
 </list>
 </property>
 <property name="hibernateProperties">
 <props>
 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
 <prop key="show_sql">true</prop>
 </props>
 </property>
 </bean>
 <bean id="userDao" class="com.dao.impl.UserDaoImpl">
 <property name="sessionFactory">
 <ref local="sessionFactory"/>
 </property>
 </bean>
</beans>

Struts配置文件

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.objectFactory" value="spring" />
 <package name="default" extends="struts-default">
 <action name="user" class="userAction">
  <result name="success">/user.jsp</result>
 </action>
 </package>
</struts>

结果显示

输入页面

结果页面

数据库

最后看起来,还是不难的嘛。其实UserDao可以抽象出来,只需要单次注入,等以后再完善。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# spring集成hibernate  # struts  # spring集成  # struts2  # hibernate  # struts+spring+hibernate三个框架的整合  # 详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)  # struts2.3.24+spring4.1.6+hibernate4.3.11+mysql5.5.  # SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2  # Spring  # struts经典面试笔试题(含答案)  # struts2+spring+hibernate分页代码[比较多]  # Hibernate+Spring+Struts扩展Struts  # Spring+Hibernate+Struts(SSH)框架整合实战  # 配置文件  # 工具包  # 连接池  # 好了  # 第一个  # 不懂  # 三大  # 所需  # 这两个  # 我用  # 第二个  # 他自己  # 这事  # 只需要  # 这篇文章  # 该怎么  # 谢谢大家  # 这三个  # 不正确  # 是什么样子 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 历史网站制作软件,华为如何找回被删除的网站?  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  如何在云主机快速搭建网站站点?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Laravel集合Collection怎么用_Laravel集合常用函数详解  Android滚轮选择时间控件使用详解  如何基于云服务器快速搭建网站及云盘系统?  制作电商网页,电商供应链怎么做?  如何有效防御Web建站篡改攻击?  如何构建满足综合性能需求的优质建站方案?  Laravel如何实现多对多模型关联?(Eloquent教程)  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  JS去除重复并统计数量的实现方法  常州企业网站制作公司,全国继续教育网怎么登录?  开心动漫网站制作软件下载,十分开心动画为何停播?  Laravel如何处理和验证JSON类型的数据库字段  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  EditPlus中的正则表达式 实战(1)  Laravel如何与Pusher实现实时通信?(WebSocket示例)  北京网站制作公司哪家好一点,北京租房网站有哪些?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  如何用y主机助手快速搭建网站?  深入理解Android中的xmlns:tools属性  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  javascript中的try catch异常捕获机制用法分析  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  php结合redis实现高并发下的抢购、秒杀功能的实例  如何快速搭建高效WAP手机网站?  详解Huffman编码算法之Java实现  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel如何处理CORS跨域请求?(配置示例)  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel如何优化应用性能?(缓存和优化命令)  Python函数文档自动校验_规范解析【教程】  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  在Oracle关闭情况下如何修改spfile的参数  javascript基本数据类型及类型检测常用方法小结  QQ浏览器网页版登录入口 个人中心在线进入  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel怎么调用外部API_Laravel Http Client客户端使用  如何为不同团队 ID 动态生成多个“认领值班”按钮  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  网站制作报价单模板图片,小松挖机官方网站报价?  创业网站制作流程,创业网站可靠吗?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel如何自定义错误页面(404, 500)?(代码示例)  Laravel怎么上传文件_Laravel图片上传及存储配置  高防服务器如何保障网站安全无虞?