SSM框架整合

目录

1. SSM框架概述

2. SSM框架整合

【任务】在Maven Web工程中实现Spring、SpringMVC、MyBatis框架整合。

 1.整合SSM框架依赖

 2.整合SSM框架配置

2.1.数据库连接参数

 

 2.2.SSM框架配置

 2.3.Log4j2日志配置

 2.4.web.xml配置

3.SSM框架完善

封装Api返回值结构

 封装分页参数

 封装分页查询条件

实现用户的分页查询功能

 实体类User

 VO类UserVo

 分页查询类UserQo

 UserMapper数据接口类,定义查询接口

 配置模糊查询的SQL

 业务服务类UserService,实现分页查询,并完成映射

 控制器UserController,实现分页查询的Action

4.测试整合结果

测试Log4j2

 测试阿里连接池Druid

测试业务层UserService

 测试控制器UserController


1. SSM框架概述

MVC设计模式代表 Model-View-Controller(模型-视图-控制器) 模式,这种模式用于应用程序的分层开发,解决了应用程序中业务逻辑、数据和界面显示的耦合问题,SSM框架就是实现了MVC设计模式的具体框架。SSM框架分别是指SpringSpringMVCMyBatis框架的组合。

2. SSM框架整合

任务Maven Web工程中实现SpringSpringMVCMyBatis框架整合

基于Maven Web工程的SSM框架的整合分成三大步骤

整合 SSM 框架 依赖
整合 SSM 框架 配置
测试整合结果

 1.整合SSM框架依赖

Springframework
Servlet & Jsp
Jstl
Mybaits & MySql
Log
Lombok
Json
jUnit

 

<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 https://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.flowerfog</groupId>
  <artifactId>ssm</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>ssm Maven Webapp</name>
  <url>https://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>

    <springframework.version>6.1.8</springframework.version>

    <jakarta.servlet-api.version>6.1.0</jakarta.servlet-api.version>
    <jakarta.servlet.jsp-api.version>3.0.0</jakarta.servlet.jsp-api.version>

    <jakarta.servlet.jsp.jstl-api.version>3.0.1</jakarta.servlet.jsp.jstl-api.version>
    <jakarta.servlet.jsp.jstl.version>3.0.1</jakarta.servlet.jsp.jstl.version>

    <mybatis-spring.version>3.0.3</mybatis-spring.version>
    <mybatis.version>3.5.16</mybatis.version>
    <pagehelper.version>5.3.1</pagehelper.version>
    <mysql.version>9.0.0</mysql.version>
    <druid.version>1.2.23</druid.version>

    <log4j-api.version>2.19.0</log4j-api.version>
    <log4j-core.version>2.19.0</log4j-core.version>

    <org.projectlombok.version>1.18.34</org.projectlombok.version>

    <jackson-databind.version>2.17.1</jackson-databind.version>

    <junit.version>4.12</junit.version>
  </properties>

  <dependencies>
    <!--spring web依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${springframework.version}</version>
    </dependency>
    <!--spring mvc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${springframework.version}</version>
    </dependency>
    <!--spring jdbc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${springframework.version}</version>
    </dependency>
    <!--spring test-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${springframework.version}</version>
    </dependency>
    <!-- junit测试 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
    </dependency>

    <!--servlet-->
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>${jakarta.servlet-api.version}</version>
    </dependency>
    <!--jsp-->
    <dependency>
      <groupId>jakarta.servlet.jsp</groupId>
      <artifactId>jakarta.servlet.jsp-api</artifactId>
      <version>${jakarta.servlet.jsp-api.version}</version>
    </dependency>
    <dependency>
      <groupId>jakarta.servlet.jsp.jstl</groupId>
      <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
      <version>${jakarta.servlet.jsp.jstl-api.version}</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jakarta.servlet.jsp.jstl</artifactId>
      <version>${jakarta.servlet.jsp.jstl.version}</version>
    </dependency>

    <!--mybatis和spring整合-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>${mybatis-spring.version}</version>
    </dependency>
    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <!--MySql驱动-->
    <dependency>
      <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <version>${mysql.version}</version>
    </dependency>
    <!--阿里druid连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>${druid.version}</version>
    </dependency>
    <!--分页插件-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>${pagehelper.version}</version>
    </dependency>
    <!--lombok插件-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${org.projectlombok.version}</version>
    </dependency>
    <!--log4j2日志相关-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>${log4j-api.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4j-core.version}</version>
    </dependency>
    <!--Jackson依赖-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson-databind.version}</version>
    </dependency>

  </dependencies>
  <build>
    <finalName>ssm</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>${maven.compiler.source}</source>
          <target>${maven.compiler.target}</target>
        </configuration>
      </plugin>
    </plugins>

  </build>
</project>


 2.整合SSM框架配置

 

数据库连接参数(含连接池参数)
SSM 框架配置
Log4j2 日志配置
Web.xml 配置

2.1.数据库连接参数

 

# 数据库驱动
jdbc.driver=com.mysql.cj.jdbc.Driver
# 数据库地址
jdbc.url=jdbc:mysql://127.0.0.1:3306/framedb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
# 登录账号
jdbc.username=root
# 登录密码
jdbc.password=root
# 阿里巴巴连接池
initialSize=0
maxActive=20
minIdle=0
maxWait=10000
validationQuery=SELECT 1
testOnBorrow=false
testOnReturn=false
testWhileIdle=true
timeBetweenEvictionRunsMillis=6000
minEvictableIdleTimeMillis=25200000
removeAbandoned=true
removeAbandonedTimeout=1800
logAbandoned=true

 2.2.SSM框架配置

 

配置自动扫描组件
配置 SpringMVC 注解驱动
加载属性文件 ( db.properties )
配置数据源(基于阿里巴巴连接池)
配置 MyBatis 会话工厂
配置 Mapper 接口自动扫描
配置 SpringMVC 实体解析器
配置静态资源访问
配置拦截器、跨域支持等

 

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

<!-- 自动扫描组件 -->
<context:component-scan base-package="org.flowerfog" />
<!-- 开启SpringMVC框架的注解驱动 -->
<mvc:annotation-driven/>

<!-- 加载db.properties文件 -->
<context:property-placeholder ignore-unresolvable="true" location="classpath:db.properties"/>

<!--配置数据源,使用Druid连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      destroy-method="close">
    <!-- 数据库基本信息配置 -->
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    <!-- 最大并发连接数 -->
    <property name = "maxActive" value = "${maxActive}" />
    <!-- 初始化连接数量 -->
    <property name = "initialSize" value = "${initialSize}" />
    <!-- 配置获取连接等待超时的时间 -->
    <property name = "maxWait" value = "${maxWait}" />
    <!-- 最小空闲连接数 -->
    <property name = "minIdle" value = "${minIdle}" />
    <!-- 间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name = "timeBetweenEvictionRunsMillis" value ="${timeBetweenEvictionRunsMillis}" />
    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <property name = "minEvictableIdleTimeMillis" value ="${minEvictableIdleTimeMillis}" />
    <property name = "validationQuery" value = "${validationQuery}" />
    <property name = "testWhileIdle" value = "${testWhileIdle}" />
    <property name = "testOnBorrow" value = "${testOnBorrow}" />
    <property name = "testOnReturn" value = "${testOnReturn}" />
    <property name = "removeAbandoned" value = "${removeAbandoned}" />
    <property name = "removeAbandonedTimeout" value ="${removeAbandonedTimeout}" />
    <property name = "logAbandoned" value = "${logAbandoned}" />
</bean>

<!--配置sqlSessionFactory-->
<!-- SqlSessionFactoryBean负责整合:把该类控制反转,将dao层生成的代理对象,进行控制反转,使Spring操作MyBatis对象-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!--关联数据源-->
    <property name="dataSource" ref="dataSource"/>
    <!--指定mapper映射文件地址-->
    <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    <!--设置实体类包别名,简化Mapper文件的配置-->
    <property name="typeAliasesPackage" value="org.flowerfog.domain"/>
</bean>
<!--mapper接口自动扫描-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="org.flowerfog.mapper" />
</bean>

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

<!--静态资源访问映射路径-->
<mvc:resources location="/static/" mapping="/static/**"/>

<!--跨域支持-->
<mvc:cors>
    <mvc:mapping path="/api/**" allowed-origins="http://127.0.0.1:8848/" />
</mvc:cors>
</beans>

 2.3.Log4j2日志配置

 

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%n</property>
    </Properties>

    <Appenders>
        <!--输出控制台配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 控制台只输出level及以上级别的信息 -->
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${PATTERN}"/>
        </Console>
    </Appenders>

    <!--定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <Loggers>
        <!-- 配置日志的根节点 -->
        <root level="debug">
            <appender-ref ref="Console"/>
        </root>
    </Loggers>
</Configuration>


 2.4.web.xml配置

Web 版本调整到 3.0 以上
配置 DispatcherServlet

加载ssm配置文件

上传文件相关参数

配置编码过滤器

解决中文乱码

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee">
    <display-name>ssm</display-name>
    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 自动加载ssm配置文件 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <!--当值≥0时,启动时就加载;当值<0或不指定时,则表示第一次请求时加载-->
        <load-on-startup>1</load-on-startup>
        <!--配置上传文件解析-->
        <multipart-config>
            <max-file-size>5242880</max-file-size>
            <max-request-size>10485760</max-request-size>
            <file-size-threshold>0</file-size-threshold>
        </multipart-config>
    </servlet>
    <!-- 配置DispatcherServlet接受所有URL请求 -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- 编码过滤器,解决中文乱码问题 -->
    <filter>
        <filter-name>encodingFilter</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>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>


 

3.SSM框架完善

封装Api返回值结构

 

package org.flowerfog.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

//api返回值
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RetJson {
    /** 状态码 */
    private int code;
    /** 消息 */
    private String msg;
    /** 数据 */
    private Object data;
}


 封装分页参数

package org.flowerfog.common;

import lombok.Data;

//分页参数
@Data
public class PageParameter {
    private Integer pageIndex = 1;//页号,起始值1
    private Integer pageSize = 15;//页面记录数
}

 封装分页查询条件

package org.flowerfog.common;
import lombok.Data;
import lombok.ToString;

//分页查询条件
@Data
@ToString(callSuper = true)
public class PageQo<Qo> extends PageParameter {
    private Qo filters;//查询条件
}

 

实现用户的分页查询功能

查询条件:用户名模糊查询
查询结果对用户状态需进行映射

 实体类User

package org.flowerfog.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 描述: 实体类 映射sys_user
 * Date:2024//11/18
 * Author:fxm
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    /**
     * 主键
     */
    private Integer id;
    /**
     * 用户名
     */
    private String name;
    /**
     * 登录账号
     */
    private String account;
    /**
     * 登录密码
     */
    private String password;
    /**
     * 状态
     * 0-正常
     * 1-禁用
     */
    private Integer status;
}


 VOUserVo

package org.flowerfog.vo;

import lombok.Data;
import lombok.ToString;
import org.flowerfog.domain.User;

@Data
@ToString(callSuper = true)
public class UserVo extends User {
    private String statusName;//状态显示值
}


 分页查询类UserQo

package org.flowerfog.domain.qo;

import lombok.Data;

//用户列表的查询条件
@Data
public class UserQo {
    private String name;//用户名-模糊查询
}


 UserMapper数据接口类,定义查询接口

package org.flowerfog.mapper;


import org.flowerfog.domain.User;
import org.flowerfog.domain.qo.UserQo;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserMapper{
    // 查询用户
    List<User> list(UserQo qo);
}


 配置模糊查询的SQL

<?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="org.flowerfog.mapper.UserMapper">
    <!--查询用户-->
    <select id="list" parameterType="org.flowerfog.domain.qo.UserQo" resultType="org.flowerfog.domain.User">
        select * from sys_user
        <where>
            <if test="name!=null and name!=''">
                and name like CONCAT('%', #{name}, '%')
            </if>
        </where>
    </select>

</mapper>


 业务服务类UserService,实现分页查询,并完成映射

package org.flowerfog.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import org.flowerfog.common.PageQo;
import org.flowerfog.domain.User;
import org.flowerfog.domain.qo.UserQo;
import org.flowerfog.mapper.UserMapper;
import org.flowerfog.vo.UserVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    //分页查询用户
    public PageInfo<UserVo> paged(PageQo<UserQo> pageQo) {
        PageHelper.startPage(pageQo.getPageIndex(), pageQo.getPageSize());
        List<User> mos = userMapper.list(pageQo.getFilters());
        //System.out.println(mos);
        if (mos == null) return null;
        PageInfo<User> moPageInfo = new PageInfo<>(mos);
        PageInfo<UserVo> voPageInfo = new PageInfo<>();
        BeanUtils.copyProperties(moPageInfo, voPageInfo);
        List<UserVo> vos = new ArrayList<>();
        for (User mo : mos) {
            UserVo vo = new UserVo();
            BeanUtils.copyProperties(mo, vo);
            //映射-状态
            vo.setStatusName(vo.getStatus().equals(0) ? "正常" : "禁用");
            vos.add(vo);
        }
        voPageInfo.setList(vos);
        return voPageInfo;
    }

}


 控制器UserController,实现分页查询的Action

package org.flowerfog.controller;

import com.github.pagehelper.PageInfo;
;
import org.flowerfog.common.PageQo;
import org.flowerfog.common.RetJson;
import org.flowerfog.domain.qo.UserQo;
import org.flowerfog.service.UserService;
import org.flowerfog.vo.UserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    // 分页查询
    @PostMapping(value = "/paged")
    @ResponseBody
    public Object paged(@RequestBody PageQo<UserQo> qo){
        try {
            PageInfo<UserVo> paged = userService.paged(qo);
            return new RetJson(200,null,paged);
        }catch (Exception e){
            return new RetJson(-1,e.getMessage(),null);
        }
    }
}


 

4.测试整合结果

测试Log4j2

package org.flowerfog;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Log4jTest {
    private static final Logger logger = LogManager.getLogger();
    public static void main(String[] args){
        logger.debug("debug message");
        logger.info("info message");
        logger.warn("warn message");
        logger.error("error message");
    }
}


 测试阿里连接池Druid

package org.flowerfog;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DruidTest {
    private static final Logger logger = LogManager.getLogger();

    @Test
    public void test() {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取druid
        DruidDataSource dataSource = context.getBean(DruidDataSource.class);
        logger.info(dataSource);
        logger.info(dataSource.getUrl());
        logger.info(dataSource.getUsername());
        logger.info(dataSource.getPassword());
        logger.info(dataSource.getDriverClassName());
    }
}


 

测试业务层UserService

package org.flowerfog;

import com.github.pagehelper.PageInfo;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.flowerfog.common.PageQo;
import org.flowerfog.domain.qo.UserQo;
import org.flowerfog.service.UserService;
import org.flowerfog.vo.UserVo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class UserServiceTest {
    private static final Logger logger = LogManager.getLogger();

    @Autowired
    private UserService userService;

    @Test
    public void test5() {
        PageQo<UserQo> pqo = new PageQo<>();
        UserQo qo = new UserQo();
        qo.setName("管理");
        pqo.setFilters(qo);
        pqo.setPageIndex(1);
        pqo.setPageSize(15);
        PageInfo<UserVo> paged = userService.paged(pqo);
        logger.debug(paged);
    }
}


 测试控制器UserController

package org.flowerfog;

import com.fasterxml.jackson.databind.ObjectMapper;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.flowerfog.common.PageQo;
import org.flowerfog.domain.qo.UserQo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration()
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class UserControllerTest {
    private static final Logger logger = LogManager.getLogger();
    @Autowired
    private WebApplicationContext webApplicationContext;

    @Test
    public void paged() {
        try {
            PageQo<UserQo> pageQo = new PageQo<>();
            pageQo.setPageIndex(1);
            pageQo.setPageSize(10);
            UserQo userQo = new UserQo();
            userQo.setName("管理");
            pageQo.setFilters(userQo);
            ObjectMapper objectMapper = new ObjectMapper();
            String jsonStr = objectMapper.writeValueAsString(pageQo);
            logger.info("jsonStr:{}", jsonStr);
            MvcResult mvcResult = MockMvcBuilders.webAppContextSetup(webApplicationContext).build()
                    .perform(MockMvcRequestBuilders.post("/user/paged")
                            .contentType(MediaType.APPLICATION_JSON_UTF8)//设置请求内容的类型
                            .content(jsonStr)//设置请求内容
                            .characterEncoding("UTF-8")
                    ).andReturn();
            mvcResult.getResponse().setCharacterEncoding("UTF-8");
            String contentAsString = mvcResult.getResponse().getContentAsString();
            logger.info(contentAsString);
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像污秽一样

谢谢谢谢谢谢谢谢谢谢谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值