搭建SSM开发环境遇到的问题

1、java.lang.NoClassDefFoundError: org/mybatis/spring/mapper/MapperFactoryBean

原因: 需要依赖spring-jdbc
解决: 加入spring-jdbc依赖
如通过gradle加入依赖:

compile 'org.springframework:spring-jdbc:5.1.3.RELEASE'

2、get请求返回字符串乱码

如果get请求返回rest数据,(通过controller加注解@RestController(等价于@Controller+@ResponseBody)),会出现中文乱码问题,但是html中文是不乱码的。
乱码
原因: web.xml已经配置org.springframework.web.filter.CharacterEncodingFilter为UTF-8;IDEA File encoding均为UTF-8;只是tomcat没有配置URIEncoding。但是仍然乱码。
解决: 请求方法加上produces = “application/json; charset=utf-8”:

@GetMapping(produces = "application/json; charset=utf-8")

这样就不乱码了。当然可以通过设置tomcat server.xml下Connector属性URIEncoding="UTF-8"解决:
tomcat编码

3、请求返回对象,报错:org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class …

原因: springmvc无法将对象直接转换为json对象,需要配置转换器,同时导入json解析库。
解决: spring配置文件加入mvc:annotation-driven/,开启该注解会自动注册相应Json转换器。

<mvc:annotation-driven/>

注意,这样配完还是会报相同错,同时需要导入json解析库依赖,如导入jackson库,

compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.4'

这会自动导入jackson-databind、jackson-core、jackson-annotations三个库。然后就可以正常返回对象了

你可能感兴趣的:(spring,mybatis,java,web)