springmvc常见问题收集
1.上传文件后台接收不到,没有在spring-mvc.xml配置multipartResolver
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设定默认编码 --> <property name="defaultEncoding" value="utf-8"></property> <!-- 设定文件上传的最大值20MB,20*1024*1024 --> <property name="maxUploadSize" value="20971520"></property> </bean>
2.后台直接return字符串,前台页面接收到的中文数据乱码,没有在spring-mvc.xml配置响应纯文本时的编码格式
<mvc:annotation-driven> <!-- 设置直接响应纯文本时的编码格式 --> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg index="0" value="utf-8"></constructor-arg> </bean> </mvc:message-converters> </mvc:annotation-driven>
@RequestMapping(value = "/category",produces="application/json;charset=utf-8")
3.静态资源访问不到,没有在spring-mvc.xml配置资源映射
<mvc:resources mapping="/css/**" location="/css/"/> <mvc:resources mapping="/js/**" location="/js/"/> <mvc:resources mapping="/image/**" location="/images/"/> <mvc:default-servlet-handler /> <!--这句要加上,要不然可能会访问不到静态资源,具体作用自行百度-->
4.后台接口成功响应,前台接收不到数据,需要类增加注解@RestController或者接口增加注解@Controller+@ResponseBody
@RestController @RequestMapping(value = "/category",produces="application/json;charset=utf-8") public class CategoryController{ }
@Controller @RequestMapping(value = "/category",produces="application/json;charset=utf-8") public class CategoryController{ @PostMapping("/add") @ResponseBody public Response add(){ } }
5.注解@RestController和注解@Controller的区别
@Controller注解,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面若返回json等内容到页面,则需要加@ResponseBody注解
@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面