spring boot mybatis开发

防止后端返回数据乱码

在controller中加入注解

	import org.springframework.stereotype.Controller;
	import org.springframework.web.bind.annotation.RequestMapping;
	
	@Controller
	@RequestMapping(produces = {"application/json;charset=UTF-8"})
	public class TestController {
	
	}

项目两组配置文件

有时候项目需要在测试和生产来回切换,而每次修改很多如数据库连接,redis连接等配置又很繁琐。
那么就可以在resource目录下新建两个配置文件,如application-env.properties,application-test.properties。

并在application.properties文件中添加如下属性

	# 应用的就是application-env.properties中的配置
	spring.profiles.active=env

前端修改异步请求为同步请求

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

	//修改请求为同步的
	$.ajaxSettings.async = false;
	$.post(
		url,
		$('#' + formId).serializeArray(),
		function(retData) {
			console.log(retData);
		},
		'json'
	);
	//再将请求修改为异步的
	$.ajaxSettings.async = true;

获取application.properties文件中的配置参数

配置文件如下:

	spring.redis.user.database=15

获取参数的java代码如下

    @Value("${spring.redis.user.database}")
    private int userDB;

配置测试类

一定一定要在test文件夹下,否则会报错
代码如下:

	import com.bicon.base.PlatformApplication;
	import com.bicon.base.service.*;
	import org.junit.Test;
	import org.junit.runner.RunWith;
	import org.springframework.boot.test.context.SpringBootTest;
	import org.springframework.test.context.junit4.SpringRunner;
	import org.springframework.test.context.web.WebAppConfiguration;
	
	import javax.annotation.Resource;
	import java.util.HashMap;
	
	@RunWith(SpringRunner.class)
	//PlatformApplication即为程序的入口
	@SpringBootTest(classes = PlatformApplication.class)
	@WebAppConfiguration
	public class test {
	
	    @Resource
	    private BaseService baseService;
	
	    @Test
	    public void logisticsTest() {
	        String sql = "transport.cost.query";
	        HashMap<String, Object> map = new HashMap<String, Object>();
	        map.put("currentPage", 1);
	        map.put("pageSize", 10);
	        map.put("settlementStatus", 0);
	        Object result = baseService.findByPage(sql, map);
	        System.out.println(result);
	    }
	}

pom依赖

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.12</version>
	</dependency>

解决 [] 符号为非法字符

尝试了网上的解决方法,在application.properties文件中添加两行配置

tomcat.util.http.parser.HttpParser.requestTargetAllow=|
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

并没有解决问题。后来发现是因为tomcat版本过高,则认为 [] 为非法字符,有两种解决办法

  1. 前端预先编译好 [] ,即 [%5B]%5D

  2. 后端修改Tomcat版本
    因为springboot已经集成好了tomcat,所以只需要在pom文件中添加一行配置即可
    经过查询发现tomcat的8.5.12是支持url中含有 [] ,所有修改代码如下

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
		<!-- 修改Tomcat版本为8.5.12 -->
		<tomcat.version>8.5.12</tomcat.version>
	</properties>

两种方法各有利弊,根据实际情况选择解决方案

展开阅读全文

没有更多推荐了,返回首页