SSM整合(详细步骤,适合初学者)

SSM整合(详细步骤)


整合ssm框架,首先第一步就是创建maven环境,导入相关依赖,搭建整体包结构。

实体类

package com.dyh.pojo;

/**
 * 用户实体类
 */
public class User {
    private Integer id;         //用户编号
    private String name;        //姓名
    private Integer age;        //年龄

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

    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 Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

UserDao接口

package com.dyh.dao;

import com.dyh.pojo.User;

import java.util.List;

/**
 * 用户dao层接口
 */
public interface UserDao {

    /**
     * 查询所有用户信息
     *
     * @return 用户信息集合
     */
    List<User> findAllUsers();

    /**
     * 保存用户信息
     *
     * @param user 用户信息
     */
    void saveUser(User user);
}

UserService接口和实现类

//------------------------------------接口------------------------------------
package com.dyh.service;

import com.dyh.pojo.User;

import java.util.List;

/**
 * 用户service层接口
 */
public interface UserService {
    /**
     * 查询所有用户信息
     *
     * @return 用户信息集合
     */
    List<User> findAllUsers();

    /**
     * 保存用户信息
     *
     * @param user 用户信息
     */
    void saveUser(User user);
}
//-----------------------------------实现类-----------------------------------

package com.dyh.service.impl;

import com.dyh.pojo.User;
import com.dyh.service.UserService;

import java.util.List;
/**
 * 用户service层接口实现
 */
public class UserServiceImpl implements UserService {
    
    /**
     * 查询所有用户信息
     *
     * @return 用户信息集合
     */
    @Override
    public List<User> findAllUsers() {
        return null;
    }

    /**
     * 保存用户信息
     *
     * @param user 用户信息
     */
    @Override
    public void saveUser(User user) {

    }
}

UserController

package com.dyh.controller;

import com.dyh.pojo.User;

/**
 * 用户Controller层功能实现
 */
public class UserController {

    /**
     * 获取所用用户信息
     *
     * @return 用户信息集合
     */
    public String findAllUsers() {
        return null;
    }


    /**
     * 保存用户信息
     *
     * @param user 用户信息
     * @return 返回保存成功字符串
     */
    public String save(User user) {
        return null;
    }
}

搭建spring环境

首先配置spring环境,毕竟spring是轻量级一站式框架,可以整合几乎所有的框架。
首先创建applicationContext.xml用于配置spring环境。
随后实现ioc依赖注入和事务配置

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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启注解扫描-->
    <context:component-scan base-package="com.dyh"/>
    
</beans>

在service实现类和controller类上加上@Service和@Controller注解,交给spring管理。随后在UserService里打印一句话,在测试类中加载spring环境调用UserController下的service层方法,可以正确输出

//-----------------------service层的findAllUsers方法-----------------------
	@Override
    public List<User> findAllUsers() {
        System.out.println("整合测试");
        return null;
    }
    
//-----------------------ontroller层方法-----------------------

	@Autowired
    private UserService userService;
    /**
     * 获取所用用户信息
     *
     * @return 用户信息集合
     */
    public String findAllUsers() {
        userService.findAllUsers();
        return null;
    }

测试类

import com.dyh.controller.UserController;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDemo {

    @Test
    public void test01(){
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserController userController = app.getBean(UserController.class);
        userController.findAllUsers();
    }
}

运行结果
能过正常输出,说明service层已经交个spring管理了。
在这里插入图片描述

整合spring-mvc

接下来就可以整合spring-mvc了。首先先从web.xml开始配置。总共需要配置前端控制器,字符集过滤器。

<?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_2_5.xsd"
         version="2.5">

    <!--前端控制器-->
    <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:applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </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>

web.xml配置好以后就可以配置spring-mvc相关的配置了,虽然spring-mvc可以和spring无缝配置,但是从功能来说,我们尽量还是将spring配置和spring-mvc的配置分开成两个文件进行配置。

创建spring-mvc.xml配置文件,配置视图解析器,开启mvc相关注解驱动,开始释放静态资源,

spring-mvc.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:mvc="http://www.springframework.org/schema/mvc"
       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">
    <!--开启mvc相关注解-->
    <mvc:annotation-driven/>

    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--开启释放静态资源-->
    <mvc:default-servlet-handler/>
    
</beans>

随后在applicationContext.xml中加上这句话用来关联spring-mvc配置文件

	<!--关联spring-mvc配置文件-->
    <import resource="classpath:spring-mvc.xml"/>

在controller的findAllUsers()方法上加上@RequestMapping("/findAll")指定访问路径,配置好tomcat,启动测试
可以正常启动tomcat,访问http://localhost:8080/findAll 后控制台也打印出测试数据
在这里插入图片描述
到这里springmvc也整合完毕

整合mybatis

最后整合mybatis也是因为mybatis操作是最复杂的,涉及的依赖也是最多的。
我们先在applicationContext.xml中增加以下配置

	<!--导入数据库配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--配置数据源连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--配置mybatis整合-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.dyh.pojo"/>
    </bean>

    <!--配置接口映射-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dyh.dao"/>
    </bean>

    <!--配置事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--配置事务具体配置-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>
    
    <!--配置事务aop增强-->
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.dyh.service.impl.*.*(..))"/>
    </aop:config>
    

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.username=root
jdbc.password=root

配置UserDao的xml映射sql配置

UserDao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--用户dao接口映射文件-->
<mapper namespace="com.dyh.dao.UserDao">

    <!--查询所有用户信息-->
    <select id="findAllUsers" resultType="user">
        select * from user
    </select>

    <!--插入用户信息-->
    <update id="saveUser" parameterType="user">
        insert into user values (null ,#{name},#{age})
    </update>

</mapper>

在service注入dao层依赖,controller层注入service层依赖,并调用对应方法。

UserService实现类

package com.dyh.service.impl;

import com.dyh.dao.UserDao;
import com.dyh.pojo.User;
import com.dyh.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 用户service层接口实现
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    /**
     * 查询所有用户信息
     *
     * @return 用户信息集合
     */
    @Override
    public List<User> findAllUsers() {
        return userDao.findAllUsers();
    }

    /**
     * 保存用户信息
     *
     * @param user 用户信息
     */
    @Override
    public void saveUser(User user) {
        userDao.saveUser(user);
    }
}

UserController

package com.dyh.controller;

import com.dyh.pojo.User;
import com.dyh.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * 用户Controller层功能实现
 */
@Controller("userController")
public class UserController {

    @Autowired
    private UserService userService;
    /**
     * 获取所用用户信息
     *
     * @return 用户信息集合
     */
    @RequestMapping("/findAll")
    public String findAllUsers(Model model) {
        List<User> userList = userService.findAllUsers();
        model.addAttribute("userList",userList);
        return "list";
    }


    /**
     * 保存用户信息
     *
     * @param user 用户信息
     * @return 返回保存成功字符串
     */
    @ResponseBody
    @RequestMapping(value = "/save",produces = "text/plain;charset=utf-8")
    public String save(User user) {
        userService.saveUser(user);
        return "保存成功!";
    }
}

list.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table>

    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
    </tr>
    <c:forEach items="${userList}" var="user">
        <tr>
            <td>${user.id}</td>
            <td>${user.name}</td>
            <td>${user.age}</td>
        </tr>
    </c:forEach>

</table>
</body>
</html>

随后启动服务器,打开postman
在这里插入图片描述
在来试试保存用户的接口
在这里插入图片描述
查看数据库中数据,也成功插入。
在这里插入图片描述
至此ssm整合完成。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值