spring boot 整合web开发(一)
-
目录
springboot 整合web开发
- 返回json数据
- 静态资源访问
- 文件上传
- 全局异常
1、返回json数据
springboot默认的是jackson-databind做为json处理器、也可以使用自定义转换器:gson、fastjson
gson集成方式为:在pom文件中排除jackson-databind jar包,添加gson包。
springboot默认提供了Gson自动转换类GsonHttpMessageConvertersConfiguration,因此Gson依赖添加成功后,可以像使用json-databind那样使用Gson。但是如果想格式化日期等操作得需要自己自定义。
fastJson集成方式:在pom文件中排除jackson-databind jar包,添加fastjson
配置fastjson的HttpMessageConverter
对于FastJsonHttpMessageConverter的配置,还有另一种方式。实现WevMvcConfigurer接口(spring5.0之前继承WebMvcConfigurerAdapter类来实现)
2、静态资源访问
springboot默认会过滤所有的静态资源,默认静态资源5个位置(classpath:/META-INF/resources/、classpath:/resources/、classpath:/static/、classpath:/public/、/),优先级依次降低。
自定义过滤策略:1)、可以在application.properties直接定义过滤规则
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static
2)、java编码实现
3、文件上传
文件上传一共涉及两个组件,一个是CommonsMultipartResolver基于commons-fileupload来处理,另一个是StandardServletMultipartResolver基于serlver3.0multipart 。springboot默认采用的是StandardServletMultipartResolver做为上传组件。
如果想使用CommonsMultipartResolver做为上传组件代码如下:
pom文件需要加入common jar包
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency><!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
4、全局异常处理
关键字@ControllerAdvice
1)、返回resonse代码如下,上传文件大小超过限制就会输出到页面。
2)、返回ModelAndView
@ControllerAdvice还可以配置全局参数,具体代码如下
@ControllerAdvice
public class GlobalConfig {
@ModelAttribute(value = "info")
public Map<String,String> userInfo() {
Map<String,String> map = new HashMap<>();
map.put("usename","路遥");
map.put("gender","男");
return map;
}
}@RestController
public class GlobalController {
@GetMapping("/global")
public void globalParma(Model model) {
Map<String, Object> map = model.asMap();
Set<String> strings = map.keySet();
Iterator<String> iterator = strings.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
Object o = map.get(next);
System.out.println(next + ">>>>>>" + o);
}
}
}
以上所有代码都在:https://github.com/FadeHub/spring-boot-learn 下面的spring-boot-web工程下