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版本过高,则认为 [] 为非法字符,有两种解决办法
-
前端预先编译好 [] ,即 [ 为 %5B , ] 为 %5D
-
后端修改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>
两种方法各有利弊,根据实际情况选择解决方案