欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 前端技术 > javascript >内容正文

javascript

spring boot 整合web开发之文件上传、静态资源访问、异常处理、返回json数据 -凯发ag旗舰厅登录网址下载

发布时间:2025/1/21 javascript 20 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 spring boot 整合web开发之文件上传、静态资源访问、异常处理、返回json数据 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
  • 目录

    springboot 整合web开发
  • 返回json数据
  • 静态资源访问
  • 文件上传
  • 全局异常

 1、返回json数据

springboot默认的是jackson-databind做为json处理器、也可以使用自定义转换器:gson、fastjson

gson集成方式为:在pom文件中排除jackson-databind jar包,添加gson包。

org.springframework.bootspring-boot-starter-webcom.fasterxml.jackson.corejackson-databind dependency>com.google.code.gsongson

springboot默认提供了gson自动转换类gsonhttpmessageconvertersconfiguration,因此gson依赖添加成功后,可以像使用json-databind那样使用gson。但是如果想格式化日期等操作得需要自己自定义。

@configuration public class gsonconfig {@beangsonhttpmessageconverter gsonhttpmessageconverter() {gsonhttpmessageconverter gsonhttpmessageconverter = new gsonhttpmessageconverter();gsonbuilder builder = new gsonbuilder();builder.setdateformat("yyyy-mm-dd");builder.excludefieldswithmodifiers(modifier.protected);gson gson = builder.create();gsonhttpmessageconverter.setgson(gson);return gsonhttpmessageconverter;}}

fastjson集成方式:在pom文件中排除jackson-databind jar包,添加fastjson

org.springframework.bootspring-boot-starter-webcom.fasterxml.jackson.corejackson-databind com.alibabafastjson1.2.56 配置fastjson的httpmessageconverter @configuration public class myfastjsonconfig {@beanfastjsonhttpmessageconverter fastjsonhttpmessageconverter() {fastjsonhttpmessageconverter converter = new fastjsonhttpmessageconverter();fastjsonconfig config = new fastjsonconfig();config.setdateformat("yyyy-mm-dd");config.setcharset(charset.forname("utf-8"));config.setserializerfeatures(serializerfeature.writeclassname,serializerfeature.writemapnullvalue,serializerfeature.prettyformat,serializerfeature.writenulllistasempty,serializerfeature.writenullstringasempty);converter.setfastjsonconfig(config);return converter;} }

 对于fastjsonhttpmessageconverter的配置,还有另一种方式。实现wevmvcconfigurer接口(spring5.0之前继承webmvcconfigureradapter类来实现)

@configuration public class mywebmvcconfig implements webmvcconfigurer {//处理json@overridepublic void configuremessageconverters(list> converters) {fastjsonhttpmessageconverter converter = new fastjsonhttpmessageconverter();fastjsonconfig config = new fastjsonconfig();config.setdateformat("yyyy-mm-dd");config.setcharset(charset.forname("utf-8"));config.setserializerfeatures(serializerfeature.writeclassname,serializerfeature.writemapnullvalue,serializerfeature.prettyformat,serializerfeature.writenulllistasempty,serializerfeature.writenullstringasempty);converter.setfastjsonconfig(config);converters.add(converter);}//自定义静态资源位置@overridepublic void addresourcehandlers(resourcehandlerregistry registry) {registry.addresourcehandler("/static/**").addresourcelocations("classpath:/static/");} }

 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编码实现

@configuration public class mywebmvcconfig implements webmvcconfigurer {//处理json@overridepublic void configuremessageconverters(list> converters) {fastjsonhttpmessageconverter converter = new fastjsonhttpmessageconverter();fastjsonconfig config = new fastjsonconfig();config.setdateformat("yyyy-mm-dd");config.setcharset(charset.forname("utf-8"));config.setserializerfeatures(serializerfeature.writeclassname,serializerfeature.writemapnullvalue,serializerfeature.prettyformat,serializerfeature.writenulllistasempty,serializerfeature.writenullstringasempty);converter.setfastjsonconfig(config);converters.add(converter);}//自定义静态资源位置@overridepublic void addresourcehandlers(resourcehandlerregistry registry) {registry.addresourcehandler("/static/**").addresourcelocations("classpath:/static/");} }

3、文件上传

文件上传一共涉及两个组件,一个是commonsmultipartresolver基于commons-fileupload来处理,另一个是standardservletmultipartresolver基于serlver3.0multipart 。springboot默认采用的是standardservletmultipartresolver做为上传组件。

如果想使用commonsmultipartresolver做为上传组件代码如下:

pom文件需要加入common jar包

 
            commons-io
            commons-io
            1.4
       

       
       
            commons-fileupload
            commons-fileupload
            1.3.1
       

@configuration public class mycommonsmultipartresolver {@beanpublic commonsmultipartresolver commonsmultipartresolver() {commonsmultipartresolver commonsmultipartresolver = new commonsmultipartresolver();commonsmultipartresolver.setresolvelazily(true);//resolvelazily属性启用是为了推迟文件解析,以在在uploadaction中捕获文件大小异常commonsmultipartresolver.setmaxuploadsize(1024);commonsmultipartresolver.setdefaultencoding("utf-8");return commonsmultipartresolver;} }

 4、全局异常处理

关键字@controlleradvice

1)、返回resonse代码如下,上传文件大小超过限制就会输出到页面。

@controlleradvice public class customerexceptionhandler {@exceptionhandler(maxuploadsizeexceededexception.class)public void uploadexception(maxuploadsizeexceededexception e, httpservletresponse resp) throws ioexception {resp.setcontenttype("text/html;charset=utf-8");printwriter out = resp.getwriter();out.write("上传文件大小超限");out.flush();out.close();} }

2)、返回modelandview

@controlleradvice public class customerexceptionhtmlhandler {@exceptionhandler(maxuploadsizeexceededexception.class)public modelandview uploadexception(maxuploadsizeexceededexception e) throws ioexception {modelandview view = new modelandview();view.addobject("msg","上传文件超限");view.setviewname("/error");return view;} }

@controlleradvice还可以配置全局参数,具体代码如下

@controlleradvice public class globalconfig {@modelattribute(value = "info")public map userinfo() {map map = new hashmap<>();map.put("usename","路遥");map.put("gender","男");return map;} } @restcontroller public class globalcontroller {@getmapping("/global")public void globalparma(model model) {map map = model.asmap();set strings = map.keyset();iterator 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工程下 

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的spring boot 整合web开发之文件上传、静态资源访问、异常处理、返回json数据的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图