SpringMVC学习笔记3-SSM三大框架整合

7 篇文章 0 订阅
6 篇文章 0 订阅

目录

Spring+SpringMVC+MyBatis三大框架整合

1.整合说明

2.整合步骤

2.1 准备数据库

2.2 创建Maven工程

2.2.1补全项目目录结构

2.2.2 导入依赖坐标

2.2.3 创建开发所需包目录及各层类、接口

2.3 配置Spring环境

2.3.1 创建applicationContext.xml文件

2.3.2 在对应的类中添加注解,把对象创建交给Spring容器

2.3.3 编写测试类,测试Spring环境是否可用

2.4 配置SpringMVC环境

2.4.1 在web.xml文件中配置前端控制器

2.4.2 配置springmvc.xml文件(注意约束要补全)

2.4.3 编写Controller测试SpringMVC环境是否成功

2.5 Spring框架整合SpringMVC

2.5.1 思路

2.5.2 实现:在web.xml文件中配置加载Spring框架的applicationContext.xml配置文件

2.5.3 测试是否整合成功

2.6 配置MyBatis环境(基于注解开发,不使用xxxMapper.xml文件)

2.6.1 创建SqlMapConfig.xml文件,配置数据库环境

2.6.2 创建mapper接口(上面已经创建好),注解SQL语句

2.6.3 测试Mybatis环境是否搭建好

2.7 Spring框架整合MyBatis框架

2.7.1 思路

2.7.2 在applicationContext文件中配置Mybatis整合

2.7.3 在dao接口中添加@Repository注解

2.7.4 在Service层实现注入dao,测试整合是否成功

2.7.5 配置Spring声明式事务管理



Spring+SpringMVC+MyBatis三大框架整合

1.整合说明

  • 整合说明

SSM三大框架整合可以使用多种方式,这里选择XML + 注解的方式

  • 整合的思路

1. 先搭建整合的环境

2. 先把Spring的配置搭建完成

3. 再使用Spring整合SpringMVC框架

4. 最后使用Spring整合MyBatis框架

2.整合步骤

2.1 准备数据库

//创建数据库
create database dbssm character set utf8;
//使用该数据库
use dbssm;
//创建账户表
create table account(
    id int primary key auto_increment,
    name varchar(100),
    money double(7,2),
);

2.2 创建Maven工程

2.2.1补全项目目录结构

                    

2.2.2 导入依赖坐标

<!--版本锁定-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <spring.version>5.0.2.RELEASE</spring.version>
    <slf4j.version>1.6.6</slf4j.version>
    <log4j.version>1.2.12</log4j.version>
    <mysql.version>5.1.8</mysql.version>
    <mybatis.version>3.4.5</mybatis.version>
  </properties>

  <dependencies>
    <!-- SpringAOP依赖 -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.13</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!--Spring容器依赖包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!--SpringMVC依赖包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!--Spring整合junit单元测试-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!--Spring事务依赖包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!--SpringJDBC模板技术-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- junit单元测试 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>compile</scope>
    </dependency>
    <!-- mysql数据库驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>
    <!-- Servlet技术 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <!-- jsp技术  -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- jsp页面EL表达式支持包  -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
      <exclusions>
        <exclusion>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
    <!-- 打印日志依赖包 -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
      <exclusions>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- mybatis依赖包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <!-- Spring整合mybatis需要的jar包依赖  -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>
    <!-- c3p0数据连接池技术  -->
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>
  </dependencies>

2.2.3 创建开发所需包目录及各层类、接口

service层

/**
 * 账户业务层接口
 * Tool: IntelliJ IDEA.
 * Author: Poison
 * CreateDateTime: 2020/3/7 12:58
 */
public interface AccountService {
    /**
     * 查询所有账户
     * @return
     */
    List<Account> findAll();
    /**
     * 保存账户
     * @param account
     */
    void saveAccount(Account account);
}

dao层

/**
 * 账户持久层接口
 * Tool: IntelliJ IDEA.
 * Author: Poison
 * CreateDateTime: 2020/3/7 12:56
 */
public interface AccountDao {
    /**
     * 查询所有账户
     * @return
     */
    List<Account> findAll();
    /**
     * 保存账户信息
     * @param account
     */
    void saveAccount(Account account);
}

account实体类

@Component
public class Account implements Serializable {
    private Integer id;
    private String name;
    private Double money;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", money=" + money +
                '}';
    }
}

controller

/**
 * Tool: IntelliJ IDEA.
 * Author: Poison
 * CreateDateTime: 2020/3/7 14:36
 */
@Controller
@RequestMapping(path = "/account")
public class AccountController {
    @Autowired
    private AccountService accountService;
    /**
     * 查询所有
     * @return
     */
    @RequestMapping(path = "/testFindAll")
    public String testFindAll(){
        System.out.println("测试成功。。。");
        accountService.findAll();
        return "success";
    }
}

2.3 配置Spring环境

2.3.1 创建applicationContext.xml文件

开启注解扫描,排除Controller注解

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd
         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">
    <!-- 开启Spring注解扫描:希望处理service和dao,忽略Controller注解 -->
    <context:component-scan base-package="cn.poison">
        <!--配置哪些注解不扫描-->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

</beans>

2.3.2 在对应的类中添加注解,把对象创建交给Spring容器

@Service(value = "accountService")
public class AccountServiceImpl implements AccountService {

    @Override
    public List<Account> findAll() {
        System.out.println("业务层:查询所有账户方法....");
        return null;
    }

    @Override
    public void saveAccount(Account account) {
        System.out.println("业务层:保存账户方法....");
    }
}

2.3.3 编写测试类,测试Spring环境是否可用

/**
 * Tool: IntelliJ IDEA.
 * Author: Poison
 * CreateDateTime: 2020/3/7 13:21
 */
@RunWith(SpringJUnit4ClassRunner.class)  //替换junit的main方法,加入Spring容器
@ContextConfiguration(locations = "classpath:applicationContext.xml") //注解配置文件的位置
public class TestSpring {

    //方式一:
    //自动注入
    @Autowired
    private AccountService accountService;

    @Test
    public void testSpring(){
        accountService.findAll();
    }

    //方式二:
    //加载配置文件获取
    @Test
    public void testSpring2(){
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        AccountService accountService1 = ac.getBean("accountService", AccountService.class);

        accountService1.findAll();
    }

}

2.4 配置SpringMVC环境

2.4.1 在web.xml文件中配置前端控制器

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!-- 配置前端控制器  -->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!-- 配置中文乱码过滤器 -->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>

2.4.2 配置springmvc.xml文件(注意约束要补全)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       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.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 开启注解扫描,只扫描Controller -->
    <context:component-scan base-package="cn.poison">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!-- 配置视图解析器对象  -->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- 配置不过滤静态资源 -->
    <mvc:resources mapping="/js/**" location="/js/"></mvc:resources>
    <mvc:resources mapping="/css/**" location="/css/"></mvc:resources>
    <mvc:resources mapping="/images/**" location="/images/"></mvc:resources>

    <!--  开启SpringMVC注解的支持 -->
    <mvc:annotation-driven></mvc:annotation-driven>
</beans>

2.4.3 编写Controller测试SpringMVC环境是否成功

//Controller代码

@Controller
@RequestMapping(path = "/account")
public class AccountController {

    @RequestMapping(path = "/testFindAll")
    public String testFindAll(){
        System.out.println("测试成功。。。");
        return "success";
    }
}

//前端jsp请求代码
 <a href="account/testFindAll">查询所有</a>

2.5 Spring框架整合SpringMVC

2.5.1 思路

思路:

注:在spring-web依赖包下,提供了一个ContextLoaderListener监听器类,可以监听ServletContext域对象的创建与销毁,让ContextLoaderListener监听器去加载Spring的配置文件,实现整合

注意:ContextLoaderListener监听器只能加载WEB-INF目录下的applicationContext.xml的配置文件

2.5.2 实现:在web.xml文件中配置加载Spring框架的applicationContext.xml配置文件

<!-- 配置ServletContext域对象的监听器加载Spring配置文件 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- 配置加载applicationContext.xml文件的路径 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

2.5.3 测试是否整合成功

@Controller
@RequestMapping(path = "/account")
public class AccountController {

    @Autowired
    private AccountService accountService;
    /**
     * 查询所有
     * @return
     */
    @RequestMapping(path = "/testFindAll")
    public String testFindAll(){
        System.out.println("测试成功。。。");
        accountService.findAll();
        return "success";
    }
}

2.6 配置MyBatis环境(基于注解开发,不使用xxxMapper.xml文件)

2.6.1 创建SqlMapConfig.xml文件,配置数据库环境

jdbcConfig.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/你的数据库名
jdbc.username=root
jdbc.password=你的数据库密码

注意:如果数据库驱动用的是8.0以上的,driver需要换成com.mysql.cj.jdbc.Driver

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--引入数据库连接信息文件-->
    <properties resource="jdbcConfig.properties"></properties>

    <!-- 配置数据库环境 -->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <!-- 使用连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--引入mapper映射文件或指定mapper接口-->
    <mappers>
        <!--方式一:mapper.xml文件方式开发,指定映射文件路径-->
        <!--<mapper resource="cn/poison/mapper/***.xml"></mapper>-->
        <!--方式二:在mapper接口中使用注解指定sql语句方式开发,指定mapper接口全限定路径名  --
        <mapper class="cn.poison.dao.AccountDao"></mapper>
        <!--方式三:指定包名,扫描该包下所有的mapper文件或接口,简便 -->
        <!--<package name="cn.poison.mapper"/>-->
    </mappers>
</configuration>

2.6.2 创建mapper接口(上面已经创建好),注解SQL语句

/**
 * 账户持久层接口
 * Tool: IntelliJ IDEA.
 * Author: Poison
 * CreateDateTime: 2020/3/7 12:56
 */
public interface AccountDao {
    /**
     * 查询所有账户
     * @return
     */
    @Select("select * from account")
    List<Account> findAll();
    /**
     * 保存账户信息
     * @param account
     */
    @Insert("insert into account(name,money) values(#{name},#{money})")
    void saveAccount(Account account);
}

2.6.3 测试Mybatis环境是否搭建好

public class TestMybatis {
    @Test
    public void testMybatis() throws Exception {
        //获取配置文件输入流
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //获取SqlSessionFactory工厂类
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //获取SqlSession对象
        SqlSession sqlSession = factory.openSession();
        //获取代理对象
        AccountDao accountDao = sqlSession.getMapper(AccountDao.class);

        //插入数据
        Account account = new Account();
        account.setName("张三");
        account.setMoney(1000.0);
        //执行插入
        accountDao.saveAccount(account);

        //执行查询所有
        List<Account> accountList = accountDao.findAll();
        accountList.forEach(li-> System.out.println(li));
        
         //提交事务
        sqlSession.commit();

         //关闭资源
        sqlSession.close();
        in.close();
    }
}

注意:如果想使用日志打印依赖包的功能,需要在resources文件夹下创建log4j.properties文件

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=D:\\JetBrains\\IdeaProjects\\MyBatisProject\\logs\\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

2.7 Spring框架整合MyBatis框架

2.7.1 思路

  • 目的:

把SqlMapConfig.xml配置文件中的内容配置到applicationContext.xml配置文件中,将dao的代理对象放到Spring容器中

  • 方法:在applicationContext.xml文件中配置以下内容

1.配置连接池

2.配置SqlSessionFactory工厂,由Spring和mybatis整合包提供的类org.mybatis.spring.SqlSessionFactoryBean实现IOC注入

3.配置AccountDao接口所在包,这里使用整合包提供的类org.mybatis.spring.mapper.MapperScannerConfigurer

注意:这里使用到的类由mybatis-spring整合包提供

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.0</version>
</dependency>

配置完之后,SqlMapConfig的文件可以删除

2.7.2 在applicationContext文件中配置Mybatis整合

<!--Spring整合Mybatis框架-->
    <!-- 配置连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dbssm"></property>
        <property name="user" value="root"></property>
        <property name="password" value="065864"></property>
    </bean>

    <!-- 配置SqlSessionFactory工厂, 由Spring和mybatis整合包提供的类-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 配置dao接口所在包,这里使用整合包提供的类 -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--直接扫描dao下的所有包-->
        <property name="basePackage" value="cn.poison.dao"></property>
    </bean>

2.7.3 在dao接口中添加@Repository注解

@Repository
public interface AccountDao {

    /**
     * 查询所有账户
     * @return
     */
    @Select("select * from account")
    List<Account> findAll();

    /**
     * 保存账户信息
     * @param account
     */
    @Insert("insert into account(name,money) values(#{name},#{money})")
    void saveAccount(Account account);
}

2.7.4 在Service层实现注入dao,测试整合是否成功

编写请求jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>测试</title>
</head>
<body>
    <a href="account/testFindAll">查询所有</a>
</body>
</html>

编写响应jsp页面,将查询的数据库输出用jstl标签输出

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>账户列表</title>
</head>
<body>
    <table border="1" width="300" cellpadding="1" cellspacing="2">
        <c:forEach items="${accounts}" var="acoount">
            <tr>
                <td><c:out value="${acoount.id}"></c:out></td>
                <td><c:out value="${acoount.name}"></c:out></td>
                <td><c:out value="${acoount.money}"></c:out></td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>
  • 注意:

由于tomcat的lib目录下,没有jstl的jar包,所以即使你在项目导入了依赖并且在jsp页面引入了jstl标签项目运行依然会报错

  • 解决方法:

请参考小编的另一篇文章https://blog.csdn.net/qq_38763540/article/details/104075109进行修改

在service实现类中注入dao

@Service(value = "accountService")
public class AccountServiceImpl implements AccountService {

    @Autowired
    private AccountDao accountDao;

    @Override
    public List<Account> findAll() {
        System.out.println("业务层:查询所有账户方法....");
        return accountDao.findAll();
    }

    @Override
    public void saveAccount(Account account) {
        System.out.println("业务层:保存账户方法....");
        accountDao.saveAccount(account);
    }
}

Controller代码

@Controller
@RequestMapping(path = "/account")
public class AccountController {

    @Autowired
    private AccountService accountService;
    /**
     * 查询所有
     * @return
     */
    @RequestMapping(path = "/testFindAll")
    public String testFindAll(Model model){
        System.out.println("测试成功。。。");
        List<Account> accountList = accountService.findAll();
        model.addAttribute("accounts",accountList);
        return "list";
    }
}

测试结果:

2.7.5 配置Spring声明式事务管理

在applicationContext.xml中配置AOP增强事务管理

<!-- 配置事务通知 -->
    <tx:advice id="txAdvice">
        <tx:attributes>
            <!--配置查询方法为只读-->
            <tx:method name="find*" read-only="true"/>
            <!--配置其他(增删改)方法事务管理-->
            <tx:method name="*" isolation="DEFAULT"></tx:method>
        </tx:attributes>
    </tx:advice>

    <!-- 配置AOP增强  -->
    <aop:config>
        <!--配置通用切入点表达式-->
        <aop:pointcut id="pt1" expression="execution(* cn.poison.service.impl.*ServiceImpl.*(..))"/>
        <!--关联事务与通知的关系-->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"></aop:advisor>
    </aop:config>

测试:

jsp页面

<form method="post" action="account/testSave">
        姓名:<input type="text" name="name"><br>
        金额:<input type="text" name="money"><br>
        <input type="submit" value="提交">
    </form>

Controller代码

  /**
     * 测试保存
     * @param account
     * @param request
     * @param response
     * @throws IOException
     */
    @RequestMapping(path = "/testSave")
    public void testSave(Account account, HttpServletRequest request, HttpServletResponse response) throws IOException {
        accountService.saveAccount(account);
        response.sendRedirect(request.getContextPath()+"/account/testFindAll");
        return;
    }

运行结果:

综上,SSM框架整合基本完成,在实际开发中涉及到三大框架中各个框架使用的其他的组件,可以根据需要进行配置,有兴趣的同学可以试一下配置注解类的方式进行整合,小编经验尚浅,如果文中有写的不好的地方,还望指教!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值