使用注解实现ssh整合

1.搭建项目:

项目名称:ss1
2.添加jar包
    1).struts 2.3.7
         --基础
        asm-3.3.jar
        asm-commons-3.3.jar
        asm-tree-3.3.jar
        commons-fileupload-1.2.2.jar
        commons-io-2.0.1.jar
        commons-lang3-3.1.jar
        freemarker-2.3.19.jar
        javassist-3.11.0.GA.jar
        ognl-3.0.5.jar
        struts2-core-2.3.7.jar
        xwork-core-2.3.7.jar
        --整合spring
        struts2-spring-plugin-2.3.7.jar
        --使用注解
        struts2-convention-plugin-2.3.7.jar
    2).spring 3.2

--AOP
        com.springsource.org.aopalliance-1.0.0.jar
        com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
        spring-aop-3.2.0.RELEASE.jar
        spring-aspects-3.2.0.RELEASE.jar
        --日志
        commons-logging.jar
        log4j.jar
        --核心
        spring-beans-3.2.0.RELEASE.jar
        spring-context-3.2.0.RELEASE.jar
        spring-core-3.2.0.RELEASE.jar
        spring-expression-3.2.0.RELEASE.jar
        --持久层
        spring-jdbc-3.2.0.RELEASE.jar
        spring-orm-3.2.0.RELEASE.jar
        spring-tx-3.2.0.RELEASE.jar
        --整合junit4
        spring-test-3.2.0.RELEASE.jar
        --使用监听
        spring-web-3.2.0.RELEASE.jar
    3).hibernate 3.6.10
        --基础
        \lib\hibernate3.jar

\lib\required\*.jar
        --整合log4j
        slf4j-log4j12-1.6.1.jar
        --数据库驱动
         mysql-connector-java-5.1.10-bin.jar
        --二级缓存
        ehcache-1.5.0.jar
        backport-util-concurrent.jar
3.添加配置文件
            a.struts.xml
                <?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>
                    <!-- 开发模式 -->
                    <constant name="struts.devMode" value="true"/>
                    <!-- 整合spring -->
                    <constant name="struts.objectFactory" value="spring"></constant>
                </struts>
            b.applicationContext.xml
                <?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:context="http://www.springframework.org/schema/context"
                       xmlns:aop="http://www.springframework.org/schema/aop"
                       xmlns:tx="http://www.springframework.org/schema/tx"
                       xsi:schemaLocation="
                       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
                       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
                       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
                </beans>
            c.过滤器配置
                修改web.xml文件添加struts核心过滤器
                <!-- struts核心控制器配置 -->
                <filter>
                    <filter-name>struts</filter-name>
                    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
                </filter>
                <filter-mapping>
                    <filter-name>struts</filter-name>
                    <url-pattern>/*</url-pattern>
                </filter-mapping>
                修改web.xml文件添加Session生命周期开发到web层
                <filter>
                    <filter-name>openSessionFilter</filter-name>
                    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
                </filter>
                <filter-mapping>
                    <filter-name>openSessionFilter</filter-name>
                    <url-pattern>/*</url-pattern>
                </filter-mapping>
            d.修改web.xml文件添加spring监听器
                <!-- spring 监听配置 -->
                <listener>
                    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                </listener>
                <context-param>
                    <param-name>contextConfigLocation</param-name>
                    <param-value>classpath:applicationContext.xml</param-value>
                </context-param>
            e.实体类的创建
                @Entity
                @Table(name ="d_book")
                public class Book implements Serializable {
                    private static final long serialVersionUID = 1L;
                    @Id
                    @GeneratedValue(strategy=GenerationType.AUTO)
                    private Integer id;
                    private String name;
                    private Double price;
                    private String author;
                    //省略getter and setter
                }
            f.在spring核心配置文件applicationContext.xml中添加Hibernate配置信息
                <!-- 1.加载属性文件 -->
                <context:property-placeholder location="classpath:jdbc.properties"/>
                
                <!-- 2.自动描述注解 -->
                <context:annotation-config/>
                <context:component-scan base-package="cn.jbit"></context:component-scan>
                    
                <!-- 3.配置数据库连接池 -->
                <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                    <property name="driverClass" value="${jdbc.driver}"></property>
                    <property name="jdbcUrl" value="${jdbc.url}"></property>
                    <property name="user" value="${jdbc.user}"></property>
                    <property name="password" value="${jdbc.password}"></property>
                </bean>
                
                <!-- 4.配置SessionFactory -->
                <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
                    <!-- 加载连接池 -->
                    <property name="dataSource" ref="dataSource"></property>
                    <!-- hibernate属性 -->
                    <property name="hibernateProperties">
                        <props>
                            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                            <prop key="hibernate.show_sql">true</prop>
                            <prop key="hibernate.format_sql">true</prop>
                            <prop key="hibernate.current_session_context_class">thread</prop>
                        </props>
                    </property>
                    <!-- 扫描注解po类所在的包 -->
                    <property name="packagesToScan">
                        <list>
                            <value>cn.jbit.spring9.domain</value>
                        </list>
                    </property>
                </bean>
                
                <!-- 5.配置Hibernater模板 -->
                <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
                    <property name="sessionFactory" ref="sessionFactory"></property>
                </bean>
                
                <!-- 6.声明事务管理器 -->
                <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                    <property name="sessionFactory" ref="sessionFactory"></property>
                </bean>
                
                <!-- 7.事务驱动 -->
                <tx:annotation-driven transaction-manager="transactionManager"/>
4.持久层
        1).接口
            public interface IBookDao {
                public void insert(Book book);
                public Book select(int id);
            }
        2).实现
            @Repository
            public class BookDaoImpl implements IBookDao {
                @Autowired
                private HibernateTemplate hibernateTemplate;
                public void insert(Book book) {
                    System.out.println("dao save");
                    this.hibernateTemplate.save(book);
                }
            }
            public Book select(int id) {
                return this.hibernateTemplate.load(Book.class, id);
            }
5.业务层
        1).接口
            public interface IBookService {
                public void save(Book book);
                public Book find(int id);
            }
        2).实现
            @Service
            @Transactional
            public class BookServiceImpl implements IBookService {
                @Autowired
                private IBookDao bookDao;
                public void save(Book book) {
                    bookDao.insert(book);
                }
                public Book find(int id) {
                    return bookDao.select(id);
                }
            }
6.控制器
        1).创建BookAction类继承ActionSupport
            @Namespace("/")
            @Controller
            public class BookAction extends ActionSupport implements ModelDriven<Book>{
                private Book book = new Book();
                //业务逻辑层
                private IBookService bookService;
                @Action(value="bookAction_add",results={@Result(name="add",location="/index.jsp")})
                public String add(){
                    System.out.println("添加信息");
                    //bookService.save(book);
                    return "add";
                }
                public Book getModel() {
                    return book;
                }
                public void setBookService(IBookService bookService) {
                    this.bookService = bookService;
                }
                @Action(value="bookAction_load",results={@Result(name="load",location="/index.jsp")})
                public String load(){
                    book = bookService.find(1);
                    System.out.println(book);
                    return "load";
                }
            }
7.表示层
    以表单方式提交数据,此处省略!

使用注解实现ssh整合

时间: 2024-10-13 22:28:59

使用注解实现ssh整合的相关文章

ssh整合学习(1)

Hibernate框架 1 hibernate核心配置文件 (0)orm思想 -对象关系映射 (1)数据库信息 (2)hibernate信息 (3)映射配置 (4)hibernate核心配置文件 -如果单纯使用hibernate框架,核心配置文件名称hibernate.cfg.xml和位置src下面固定的. -hibernate和spring整合的时候,Hibernate核心配置文件名称和位置没有固定要求的. 2 hibernate映射配置文件 (1)实体类和数据库表映射关系-使用orm思想 3

SSH整合之全注解

  SSH整合之全注解 使用注解配置,需要我们额外引入以下jar包 我们下面从实体层开始替换注解 1 package cn.hmy.beans; 2 3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 import javax.persistence.Table; 7 8 @Entity 9 @Table 10 public c

SSH整合总结(xml与注解)

本人自己进行的SSH整合,中间遇到不少问题,特此做些总结,仅供参考. 一.使用XML配置: SSH版本 Struts-2.3.31 Spring-4.3.5 Hibernate-4.2.21 引入jar包 必须在WEB-INF下添加jar包(其他无效) spring以及它的依赖包 com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar hibernate的jar包及struts2的jar和插件包,包含两个重复的javassist.jar,保留高

框架 day37 Spring事务管理,整合web,SSH整合,SSH整合注解

1     事务管理 1.1   回顾事务     事务:一组业务操作,要么全部成功,要么全部不成功.     事务特性:ACID 原子性:整体 一致性:数据(完整) 隔离性:并发(多个事务) 持久性:结果     隔离问题:脏读.不可重复读.幻读(虚读)     隔离级别:4个 readuncommitted 读未提交,存在3个问题. readcommitted 读已提交,解决:脏读:存在2个. repeatableread 可重复读,解决:脏读.不可重复读:存在1个 serializ

ssh整合之七注解结合xml形式

1.在之前的ssh搭建过程中,我们是使用纯xml的方式进行编写的,这样的话,确实也挺麻烦,我们可不可以使用更简单的形式进行配置呢? 答案是肯定的,我们可以使用我们的注解形式进行快速搭建ssh框架 2.我们的配置文件hibernate是用jpa注解,struts是用struts的注解,spring是使用ioc和事务的注解 首先先修改我们的hibernate中内容,即实体类 package com.itheima.entity; import javax.persistence.Column; im

SSH整合基础

1.Spring整合Hibernate 整合步骤 导包 配置appliactionContext.xml 创建实体类和映射关系文件 创建DAO接口及实现类 声明DAO组件,注入SessionFactory 2.Spring整合Struts2 导包 配置web.xml 配置applicationContext.xml,开启注解扫描 创建并声明Action 配置Action 创建JSP 3.整合的基本原理 Struts原本使用StrutsObjectFactory来读取struts.xml,根据ac

SSH整合开发时Scope为默认时现象与原理

1.前提知识 1)scope默认值 进行SSH整合开发时,Struts2的action需要用spring容器进行管理,只要涉及到类以bean的形式入到spring容器中,不管是xml配置还是使用注解方式进行配置,都会涉及到spring管理bean的scope,其一共有五种取值,而其默认值为singleton,也就是单例模型,所有对此bean引用为同一个对象. 2)action应为多例 struts2作为MVC中视图(View)层框架,其最主要任务就是接收用户请求,然后调用业务逻辑层进行处理,这种

基于注解的SSH将配置精简到极致(1)

很早之前就想写一篇关于SSH整合的博客了,但是一直觉得使用SSH的时候那么多的配置文件,严重破坏了我们代码整体性,比如你要看两个实体的关系还得对照*.hbm.xml文件,要屡清一个Action可能需要对照applicationContext*.xml和struts*.xml文件.总之过多的配置文件坏破坏代码的整体性,会打乱代码的连续性,因为很多情况下你需要一边看Java代码,一边看xml的配置,采用注解就能很好的解决这个问题. 当然,即使采用注解的方式,也不能完全的丢掉配置文件,因为配置文件是程

ssh整合例子

今天给大家介绍一下最新版本的SSH(struts2.2.1+ hibernate3.6+spring3.0.5)组合.注意本讲解为手工搭建! 一.为SSH做好准备 struts2-2.2.1-all.zip       hibernate-distribution-3.6.0.Final-dist.zip spring-framework-3.0.5.RELEASE.zip spring-framework-2.5.6-with-dependencies.zip slf4j-1.6.1.zip