Spring集成Struts与Hibernate入门详解

前言

最近将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可以抽象出来,只需要单次注入,等以后再完善。

总结

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

(0)

相关推荐

  • 详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    一.整合原理 二.导包(41个) 1.hibernate (1)hibernate/lib/required (2)hibernate/lib/jpa | java persist api java的持久化规范(接口) (3)数据库驱动 2.struts2 (1)struts-blank.war/WEB-INF/lib/* 注意:javassist-3.18.1-GA.jar包与hibernate中的重复(只保留高版本即可) (2)struts整合spring插件包 注意:这个包一旦导入,那么s

  • SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2

    本文开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总结一下如何整合Struts2.Hibernate4.3和Spring4.2. 整合三大框架得先从搭建各部分环境开始,也就是说首先得把Spring,Hibernate和Struts2的环境搭建好,确保它们没有问题了,再做整合.这篇博文遵从的顺序是:先搭建Spring环境-->然后搭建Hibernate环境--> 整合Spring和Hibernate --> 搭建Struts2环境 --> 整合Spri

  • struts2+spring+hibernate分页代码[比较多]第1/7页

    dao层接口: Java代码 复制代码 代码如下: package com.last999.im.news.dao; import java.util.*; import com.last999.im.news.entity.KindEntity; import com.last999.im.news.web.PageTool; public interface KindEntityDao{ public KindEntity get(String uuid); public void save

  • struts+spring+hibernate三个框架的整合

    准备三个框架结合的lib包 Spring3结合Struts2的步骤如下: 1:开启Struts2结合Spring3,在struts.xml中添加如下语句: java代码: <constant name="struts.objectFactory" value="spring"/> 2:在web.xml中添加listener,如下: java代码: <listener> <listener-class> org.springfram

  • Hibernate+Spring+Struts扩展Struts

    简介: 我看到很多项目中,开发者实现了自己的MVC框架,并不是因为他们想做同Struts根本不同的东西,而是因为他们并没有意识到如何扩展Struts.开发自己的MVC框架可以获得全部的控制权,但是这也意味着需要很多资源来实现它(人力物力),在紧张的日程安排下,有时候这是不可能的. Struts不仅仅是一个强大的框架,同时它也是可扩展的.你可以以三种方式来扩展Struts. 1.PlugIn:如果你想在application startup或shutdown的时候做一些业务逻辑的话,那就创建你自己

  • Spring,hibernate,struts经典面试笔试题(含答案)

    本文讲述了Spring,hibernate,struts经典面试笔试题及其参考答案.分享给大家供大家参考,具体如下: 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用: ① . 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代

  • struts2.3.24+spring4.1.6+hibernate4.3.11+mysql5.5.25开发环境搭建图文教程

    struts2.3.24 + spring4.1.6 + hibernate4.3.11+ mysql5.5.25开发环境搭建及相关说明. 一.目标 1.搭建传统的ssh开发环境,并成功运行(插入.查询) 2.了解c3p0连接池相关配置 3.了解验证hibernate的二级缓存,并验证 4.了解spring事物配置,并验证 5.了解spring的IOC(依赖注入),将struts2的action对象(bean)交给spring管理,自定义bean等...并验证 6.了解spring aop(面向

  • Spring集成Struts与Hibernate入门详解

    前言 最近将Spring,Struts,Hiberbate基础已经学习完成.想自己把这三个框架集成一下,然后再写一个后台管理网站练练手.Spring的作用是依赖注入,而Struts是显示层的东西,这两个框架集成后是什么样子.一边学习,一边记录.上车. Spring集成所需jar包 首先,Spring集成Struts,那么applicationContext.xml和struts.xml,web.xml肯定是不能少的.前面两个是Spring和Struts的配置文件,后面一个是整个web的全局配置文

  • Spring集成Web环境的实例详解

    Spring整合Web开发需要导入的坐标 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </propert

  • 基于spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(详解)

    1.pom添加依赖 <!-- spring data jpa,会注入tomcat jdbc pool/hibernate等 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <

  • spring结合hibernate示例详解

    单纯Hibernate程序 1.首先是导入hibernate的jar包. 2. 建立用户和用户操作记录实体,Log.Java和User.java.代码如下所示. Log.java import java.util.Date; public class Log { private int id; //日志的类别.日志一般起到一个不可否认性. //操作日志 安全日志 事件日志. private String type; private String detail; private Date time

  • Spring Boot整合EhCache的步骤详解

    本文讲解Spring Boot与EhCache的整合. 1 EhCache简介 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认CacheProvider.Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点. 2 Spring Boot整合EhCache步骤 2.

  • SpringCloud Eureka服务注册中心应用入门详解

    目录 1.多节点无缝切换问题 2.服务注册与发现 Eureka 3.Springboot集成Eureka 3.1 父包pom依赖 3.2 eureka服务端 3.3 客户端 pom依赖 yml配置 3.4 控制台 1.多节点无缝切换问题 分布式节点中的服务宕机或者重启不影响客户端使用 分布式节点中的服务宕机重启不影响业务服务内部通信 如果在某个分布式系统中想要解决上述问题,那么这篇文章就是精华之处. 回顾一下以前的常用手段: 单节点运行,其他节点备用,无法无缝连接,内网通信无法保证 多节点运行,

  • 分布式Hibernate search详解

    分布式Hibernate Search与Apache Tomcat6,ActiveMQ 和Spring.今天我将跟大家分享我的经验,以master/slave(s)方式配置分布式Hibernate Search并整合Apache ActiveMQ,Spring,应用程序额容器是Apache Tomcat 6. 怎么工作: -Hibernate Search 支持使用JMS back-end 和 master/slave(s) 索引进行分布式配置 - mater通过网络共享暴露索引 (例如通过NF

  • Spring学习笔记1之IOC详解尽量使用注解以及java代码

    在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IOC,mybatis,SpringMVC的基础知识,表单数据验证,文件上传等) 2.服务器异步发送邮件给注册用户.(学习消息队列) 3.用户登录.(学习缓存.Spring Security) 4.其他. 边学习边总结,不定时更新.项目环境为Intellij + Spring4. 一.准备工作. 1.m

  • spring boot(四)之thymeleaf使用详解

    在上篇文章springboot(二):web综合开发中简单介绍了一下thymeleaf,这篇文章将更加全面详细的介绍thymeleaf的使用.thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎. thymeleaf介绍 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下三个极吸引人的特点: 1.Thymeleaf 在有网络和无网络的环境下皆可

  • Spring boot跨域设置实例详解

    定义:跨域是指从一个域名的网页去请求另一个域名的资源 1.原由 公司内部有多个不同的子域,比如一个是location.company.com ,而应用是放在app.company.com , 这时想从 app.company.com去访问 location.company.com 的资源就属于跨域 本人是springboot菜鸟,但是做测试框架后端需要使用Springboot和前端对接,出现跨域问题,需要设置后端Response的Header.走了不少坑,在这总结一下以备以后使用 2.使用场景

随机推荐