SSM框架整合,详细步骤,看完便会

前言

SSM框架整合即Spring、SpringMVC和MyBatis三个市面上常用的开源开发框架之间的整合,也是目前市面上主流的Java开发框架,学习好SSM开发框架能为日后工作学习打下坚实的基础。本篇博客主要介绍了基于SSM框架整合的CRUD案例。

一、工程创建

1.新建Maven项目
在这里插入图片描述
2.配置项目名和项目路径
在这里插入图片描述
3.配置Maven本地仓库
在这里插入图片描述
配置好之后点击Finish,之后项目像这样就表明项目创建成功,如下图所示:
在这里插入图片描述
4.集成Tomcat,搭建Web开发环境
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、导入项目依赖

pom文件内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

 <groupId>com.red.ssm</groupId>
  <artifactId>ssm</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <spring.version>5.3.1</spring.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</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>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- Mybatis核心 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.7</version>
    </dependency>
    <!--mybatis和spring的整合包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.6</version>
    </dependency>
    <!-- 连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.9</version>
    </dependency>
    <!-- junit测试 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!-- MySQL驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.37</version>
    </dependency>
    <!-- log4j日志 -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.2.0</version>
    </dependency>
    <!-- 日志 -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>
    <!-- ServletAPI -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.12.1</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <!-- Spring5和Thymeleaf整合包 -->
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring5</artifactId>
      <version>3.0.12.RELEASE</version>
    </dependency>
  </dependencies>
</project>

三、先创建Spring的几个配置文件

在这里插入图片描述

1.web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

  <!--配置Spring的编码过滤器-->
  <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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--配置处理请求方式的过滤器-->
  <filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--配置SpringMVC的前端控制器DispatcherServlet-->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--设置SpringMVC配置文件自定义的位置和名称-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--将DispatcherServlet的初始化时间提前到服务器启动时-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--配置Spring的监听器,在服务器启动时加载Spring的配置文件-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!--设置Spring配置文件自定义的位置和名称-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
  </context-param>
</web-app>

2.spring.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:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--扫描组件(除控制层)-->
    <context:component-scan base-package="com.red.ssm">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!--引入jdbc.properties-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

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

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

    <!--
        开启事务的注解驱动
        将使用注解@Transactional标识的方法或类中所有的方法进行事务管理
    -->
    <tx:annotation-driven transaction-manager="transactionManager" />

    <!--配置SqlSessionFactoryBean,可以直接在Spring的IOC中获取SqlSessionFactory-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--设置MyBatis的核心配置文件的路径-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!--设置数据源-->
        <property name="dataSource" ref="dataSource"></property>
        <!--设置类型别名所对应的包-->
        <property name="typeAliasesPackage" value="com.red.ssm.pojo"></property>
        <!--设置映射文件的路径,只有映射文件的包和mapper接口的包不一致时需要设置-->
        <!--<property name="mapperLocations" value="classpath:mappers/*.xml"></property>-->
    </bean>

    <!--
        配置mapper接口的扫描,可以将指定包下所有的mapper接口
        通过SqlSession创建代理实现类对象,并将这些对象交给IOC容器管理
    -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.red.ssm.mapper"></property>
    </bean>

</beans>

3.springmvc.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: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/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--扫描控制层组件-->
    <context:component-scan base-package="com.red.ssm.controller"></context:component-scan>

    <!--配置视图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                        <!-- 视图前缀 -->
                        <property name="prefix" value="/WEB-INF/templates/"/>
                        <!-- 视图后缀 -->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8" />
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

    <!--配置默认的servlet处理静态资源-->
    <mvc:default-servlet-handler />
    <!--开启mvc的注解驱动-->
    <mvc:annotation-driven />
    <!--配置访问首页的视图控制器-->
    <mvc:view-controller path="/" view-name="index"></mvc:view-controller>
    <!--配置添加员工信息的视图控制器-->
    <mvc:view-controller path="/to/add" view-name="employee_add"></mvc:view-controller>
    <!--配置文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
</beans>

4.mybati-config.xml配置文件

<?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>

    <settings>
        <!--将下划线映射为驼峰-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <plugins>
        <!--配置分页插件-->
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

</configuration>

5.jdbc.properties配置文件,根据自身情况修改即可

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

6.log4j.xml日志配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>

本次案例是基于数据库的一个员工表(t_emp)来做测试,员工表表结构如下所示:

在这里插入图片描述

为员工表添加测试数据的SQL语句如下所示:

INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (1, 'Jordan', 65, '1', 'Jordan@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (2, 'Lebron', 38, '1', 'Lebron@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (3, 'Kobe', 44, '1', '123213123@qq.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (5, 'Marry', 22, '0', '2345645645@qq.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (6, 'Alice', 18, '1', 'Alice@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (7, 'Sunny', 44, '0', '988787878@qq.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (8, 'Lorry', 34, '0', 'Lorry@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (13, 'Harden', 35, '1', 'Harden@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (14, 'Brant', 44, '0', 'Brant@qq.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (17, 'Druant', 35, '1', 'Druant@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (18, 'KiKi', 28, '0', '123123@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (20, 'Moik', 33, '1', 'Moik@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (21, 'Druant', 35, '1', 'Druant@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (22, 'Irving', 30, '1', 'Irving@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (23, 'Red', 26, '1', 'Red@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (24, '李红', 28, '0', 'lihong@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (25, '黎明', 56, '1', 'liming@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (26, '王芳', 26, '0', 'wf@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (27, '陈国豪', 24, '1', 'chen@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (28, '杨坤', 55, '1', 'yk@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (29, '徐静雨', 35, '1', 'xjy3@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (30, '柯凡', 33, '0', 'kefang@123.com');
INSERT INTO `t_emp`(`emp_id`, `emp_name`, `age`, `gender`, `email`) VALUES (31, '王猛', 38, '1', 'wm@123.com');

添加测试数据的员工表

在这里插入图片描述

四、项目包结构

创建如下对应的项目文件结构

在这里插入图片描述

五、代码实现

1.domain层
实体类Employee.java代码如下所示:

package com.red.ssm.pojo;

public class Employee {
    private Integer empId;
    private String empName;
    private Integer age;
    private String gender;
    private String email;

    public Employee() {
    }

    public Employee(Integer empId, String empName, Integer age, String gender, String email) {
        this.empId = empId;
        this.empName = empName;
        this.age = age;
        this.gender = gender;
        this.email = email;
    }

    public Integer getEmpId() {
        return empId;
    }

    public void setEmpId(Integer empId) {
        this.empId = empId;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public Integer getAge() {
        return age;
    }

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

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "empId=" + empId +
                ", empName='" + empName + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

2.mapper层
EmployeeMapper代理接口类如下所示:

package com.red.ssm.mapper;

import com.red.ssm.pojo.Employee;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface EmployeeMapper {
    /**
     * 查询所有员工信息
     * @return
     */
    List<Employee> getAllEmployee();
    /**
     * 根据员工id查询员工信息
     * @param empId
     * @return
     */
    Employee getEmployeeById(@Param("id") Integer empId);
    /**
     * 添加员工信息
     * @param employee
     */
    void addEmployee(Employee employee);
    /**
     * 根据员工id删除员工信息
     * @param empId
     */
    void deleteEmployeeById(@Param("id") Integer empId);
    /**
     * 更新员工信息
     * @param employee
     */
    void updateEmployee(Employee employee);
}

EmployeeMapper.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">
<mapper namespace="com.red.ssm.mapper.EmployeeMapper">
    <!-- 通用查询结果列-->
    <sql id="base_column_list">
		 emp_id,emp_name,age,gender,email
	</sql>
    <!--查询所有员工信息-->
    <select id="getAllEmployee" resultType="Employee">
        select <include refid="base_column_list"/> from t_emp
    </select>
    <!--根据员工Id查询员工信息-->
    <select id="getEmployeeById" resultType="Employee">
        select <include refid="base_column_list"/> from t_emp where emp_id = #{id}
    </select>
    <!--添加员工信息-->
    <insert id="addEmployee">
        insert into t_emp(emp_name,age,gender,email) values(#{empName}, #{age}, #{gender}, #{email})
    </insert>
    <!--修改员工信息-->
    <update id="updateEmployee">
        update t_emp set emp_name = #{empName}, age = #{age}, gender = #{gender}, email = #{email} where emp_id = #{empId}
    </update>
    <!--根据员工Id删除员工信息-->
    <delete id="deleteEmployeeById">
        delete from t_emp where emp_id = #{id}
    </delete>
</mapper>

此处要十分注意:EmployeeMapper.java要和EmployeeMapper.xml映射文件路径名要保持一致,并且在resources目录下创com.red.ssm.mapper时要这样创建com/red/ssm/mapper,如果这样创建com.red.ssm.mapper的话会导致EmployeeMapper.java和EmployeeMapper.xml映射文件路径名不一致。因为resources目录下创建的是directory而不是package,如果这样创建com.red.ssm.mapper会导致创建的只有一层目录(相当于创建了一个以com.red.ssm.mapper为名的文件夹,只有一层目录),而src下的com.red.ssm.mapper,因为其是package,所以有四层目录,从而导致二者路径不一致。

3.service层
EmployeeService接口类的编写

package com.red.ssm.service;

import com.github.pagehelper.PageInfo;
import com.red.ssm.pojo.Employee;
import org.apache.ibatis.annotations.Param;

public interface EmployeeService {
    /**
     * 查询所有员工信息
     * @return
     */
    PageInfo<Employee> getEmployeeList(Integer pageNum);
    /**
     * 根据员工id查询员工信息
     * @param empId
     * @return
     */
    Employee getEmployeeById(@Param("id") Integer empId);
    /**
     * 添加员工信息
     * @param employee
     */
    void addEmployee(Employee employee);
    /**
     * 根据员工id删除员工信息
     * @param empId
     */
    void deleteEmployeeById(Integer empId);
    /**
     * 更新员工信息
     * @param employee
     */
    void updateEmployee(Employee employee);
}

EmployeeServiceImpl实现类的编写

package com.red.ssm.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.red.ssm.mapper.EmployeeMapper;
import com.red.ssm.pojo.Employee;
import com.red.ssm.service.EmployeeService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class EmployeeServiceImpl implements EmployeeService {
    @Resource
    private EmployeeMapper employeeMapper;

    @Override
    public PageInfo<Employee> getEmployeeList(Integer pageNum) {
        PageHelper.startPage(pageNum,5);
        List<Employee> list = employeeMapper.getAllEmployee();
        PageInfo<Employee> page = new PageInfo<>(list,5);
        return page;
    }

    @Override
    public Employee getEmployeeById(Integer empId) {
        return employeeMapper.getEmployeeById(empId);
    }

    @Override
    public void addEmployee(Employee employee) {
        employeeMapper.addEmployee(employee);
    }

    @Override
    public void deleteEmployeeById(Integer empId) {
        employeeMapper.deleteEmployeeById(empId);
    }

    @Override
    public void updateEmployee(Employee employee) {
        employeeMapper.updateEmployee(employee);
    }
}

4.controller层
EmployeeController类的编写

package com.red.ssm.controller;

import com.github.pagehelper.PageInfo;
import com.red.ssm.pojo.Employee;
import com.red.ssm.service.EmployeeService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.annotation.Resource;

@Controller
public class EmployeeController {
    @Resource
    private EmployeeService employeeService;

    @RequestMapping(value = "/employee/page/{pageNum}",method = RequestMethod.GET)
    public String getEmployeeList(Model model, @PathVariable("pageNum") Integer pageNum){
        PageInfo<Employee> page = employeeService.getEmployeeList(pageNum);
        model.addAttribute("page",page);
        return "employee_list";
    }

    @RequestMapping(value = "/employee",method = RequestMethod.POST)
    public String addEmployee(Employee employee){
        employeeService.addEmployee(employee);
        return "redirect:/employee/page/1";
    }

    @RequestMapping(value = "/employee/{id}",method = RequestMethod.DELETE)
    public String deleteEmployeeById(@PathVariable("id") Integer id){
        employeeService.deleteEmployeeById(id);
        return "redirect:/employee/page/1";
    }

    @RequestMapping(value = "/employee/{id}",method = RequestMethod.GET)
    public String toUpdate(Model model,@PathVariable("id") Integer id){
        Employee employee = employeeService.getEmployeeById(id);
        model.addAttribute("employee",employee);
        return "employee_update";
    }

    @RequestMapping(value = "/employee",method = RequestMethod.PUT)
    public String updateEmployee(Employee employee){
        employeeService.updateEmployee(employee);
        return "redirect:/employee/page/1";
    }
}

六、运行测试

项目启动,跳到浏览器输入请求路径localhost:8080/ssm_war_exploded/
在这里插入图片描述
点击超链接即可跳转到员工列表页面
在这里插入图片描述
静态资源和样式文件
链接:https://pan.baidu.com/s/1cA0C4odTTxAso5VekeYGNQ
提取码:hett

总结
综上步骤SSM项目整合完毕,此整合案例可以加深我们对于SSM知识的灵活运用,更加熟悉SSM项目的构建和开发,为今后的编码工作打下坚实的基础。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM框架整合的步骤一般包括以下几个步骤: 1. 搭建环境:安装并配置好JavaMaven和Tomcat等必要的软件和工具。 2. 创建项目:使用Maven创建一个新的空项目。 3. 导入依赖:在项目的pom.xml文件中添加SpringSpring MVC和MyBatis框架的依赖。 4. 配置web.xml:在项目的web.xml文件中配置DispatcherServlet和ContextLoaderListener等Servlet和监听器。 5. 配置Spring:创建Spring的配置文件(如applicationContext.xml)并进行必要的配置,如数据源、事务管理器、扫描包等。 6. 配置Spring MVC:创建Spring MVC的配置文件(如springmvc-servlet.xml)并进行必要的配置,如视图解析器、静态资源处理器、控制器映射等。 7. 配置MyBatis:创建MyBatis的配置文件(如mybatis-config.xml)并进行必要的配置,如数据源、Mapper扫描等。 8. 编写实体类和Mapper接口:根据业务需求,编写实体类和Mapper接口,并在Mapper接口中定义SQL语句。 9. 编写Service层和Controller层:根据业务需求,编写Service层和Controller层的代码,处理业务逻辑和请求响应。 10. 配置数据库连接信息:在项目的配置文件中配置数据库连接信息,包括数据库URL、用户名、密码等。 11. 部署项目:将项目打包成war包,并将war包部署到Tomcat等Web服务器上。 这些步骤是一个基本的概述,具体的步骤和配置可能根据实际需求和个人习惯有所不同。在实际开发中,还需要根据具体情况进行一些额外的配置和调试工作。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值