spring-boot 实现文件上传

错误信息: Corrupt form data: premature ending 最近要实现文件上传功能,需要使用O’Reilly公司的cos上传组件,但是这个组件太过久远,最近更新是08年,早期的spring版本支持,现在已经不支持了,好在它是开源的,我根据spring早期版本里的源码自己实现了。但是出现了错误:Corrupt form data: premature ending,网上找到很多都是struts上的错误,原因是request被过滤了,cos只能接受HttpServletRequest,但在spring-boot中也有这个问题,spring-boot虽然节省了我们很多的配置工作,但也无形中为我们做了很多可能我们不需要的配置。 ...

2016年5月21日 · 2 分钟 · 903 字

spring-boot 集中处理异常

spring-boot配置方式集中处理异常,统一规范接口对外的异常输出。业务代码只需往外抛异常,不需过多关注异常的输出形式。 非系统抛出异常 对于400,404等非系统抛出的异常,使用以下方式: ...

2016年5月18日 · 1 分钟 · 383 字

spring-boot 集成Mysql和Druid连接池

概述 spring-boot默认提供了数据库和数据库连接池,按照官方文档简单配置即可。若要自定义,需要修改一些配置,本文着重描述一下spring-boot如何集成mysql和阿里的druid数据库连接池。 开始 本文环境 jdk:1.7 tomcat:7.0.55 spring-boot:1.2.3.RELEASE 修改application.properties文件 修改spring-boot默认配置文件application.properties,加入一下内容(根据实际情况修改): ...

2016年5月16日 · 2 分钟 · 856 字

spring-mvc 解决跨域问题

解决跨域访问问题,只需在被访问的应用中加入一个请求过滤器: 1public class CorsFilter implements Filter { 2 @Override 3 public void doFilter(ServletRequest request, ServletResponse response, 4 FilterChain chain) throws IOException, ServletException { 5 6 HttpServletRequest req = (HttpServletRequest) request; 7 HttpServletResponse res = (HttpServletResponse) response; 8 9 if (req.getHeader("Origin") != null) { 10 res.addHeader("Access-Control-Allow-Origin", "*"); 11 } 12 13 if ("OPTIONS".equals(req.getMethod())) { 14 res.addHeader("Access-Control-Allow-Methods", "OPTIONS, GET, POST"); 15 res.addHeader("Access-Control-Allow-Headers","Origin, Content-Type"); 16 res.addHeader("Access-Control-Max-Age", "-1"); 17 } 18 chain.doFilter(req, res); 19 } 20 21 @Override 22 public void destroy() { 23 } 24 25 @Override 26 public void init(FilterConfig filterConfig) throws ServletException { 27 } 28}

2016年1月19日 · 1 分钟 · 123 字

sonar质量分析 Tabulation characters should not be used 原因与解决

缘由 项目中使用sonar质量分析,很多代码提示:Replace all tab characters in this file by sequences of white-spaces. Tabulation characters should not be used Developers should not need to configure the tab width of their text editors in order to be able to read source code. So the use of tabulation character must be banned. ...

2015年12月22日 · 2 分钟 · 523 字

Mybatis整合redis实现缓存

概述 Mybatis默认缓存是PerpetualCache,它实现了Cache接口。Mybatis为了方便我们扩展缓存定义了一个Cache接口,因此,我们只需要参考源码自己使用redis实现Cache接口,即可达到Mybatis整合redis管理缓存的目的。 ...

2015年9月26日 · 4 分钟 · 1969 字

Mybatis分页方案

概述 项目开发中经常需要分页,但为了提高开发效率,开发过程中往往不考虑分页。那么如何在功能开发完后使用一种对代码侵略度最低的方式实现分页,本文将提供一种方案。 ...

2015年9月10日 · 6 分钟 · 2637 字

Logstash + Elasticsearch + Kibana 搭建日志平台

概述 日志系统中的收集、查询、显示,分别对应于Logstash、Elasticsearch、Kibana。 Logstash:是一个应用程序日志、事件的传输、处理、管理和搜索的平台 Elasticsearch:是基于lucene的开源搜索引擎 Kibana:是一个功能强大的elasticsearch数据显示客户端 日志收集采用分布式方式,使用redis作为中间缓冲队列。LEK平台结构如下: ...

2015年8月25日 · 3 分钟 · 1081 字

JavaSimon

JavaSimon,是Java Simple Monitoring的意思,是Java性能监控的一个开源方案(官方说明)。本文介绍它在项目中的用法: pom.xml,加入core与dashboard的依赖 1 <dependency> 2 <groupId>org.javasimon</groupId> 3 <artifactId>javasimon-spring</artifactId> 4 <version>3.3.0</version> 5 </dependency> 6 <dependency> 7 <groupId>org.javasimon</groupId> 8 <artifactId>javasimon-console-embed</artifactId> 9 <version>3.3.0</version> 10 </dependency> web.xml,加入dashboard: 1 <servlet> 2 <servlet-name>SimonConsoleServlet</servlet-name> 3 <servlet-class>org.javasimon.console.SimonConsoleServlet</servlet-class> 4 <init-param> 5 <param-name>url-prefix</param-name> 6 <param-value>/javasimon</param-value> 7 </init-param> 8 </servlet> 9 <servlet-mapping> 10 <servlet-name>SimonConsoleServlet</servlet-name> 11 <url-pattern>/javasimon/*</url-pattern> 12 </servlet-mapping> applicationContext.xml 加入AOP设置 1 <!-- 调用StopWatch计时的Interceptor --> 2 <bean id="monitoringInterceptor" class="org.javasimon.spring.MonitoringInterceptor" /> 3 4 <!-- 监控定义了@Monitored的方法 --> 5 <bean id="monitoringAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor"> 6 <property name="advice" ref="monitoringInterceptor" /> 7 <property name="pointcut"> 8 <bean class="org.javasimon.spring.MonitoredMeasuringPointcut" /> 9 </property> 10 </bean> 在已知一定要监控的类或方法上加@Monitored 不修改代码监控新的方法 如下AOP定义片段监控了cn包或子包下的所有方法 ...

2015年6月8日 · 1 分钟 · 481 字

《淘宝技术这十年》:武侠和倒立文化的起源

公司给这几个人租了房子,他们合住在湖畔花园旁边的小区里(男女分开),每天睁开眼就去公司,半夜两三点收工睡觉,响应用户的需求非常快。 这让我想起我第一份面试的工作,也是在一个封闭的小区里,租了一个套房当做公司。当时让我感觉就是吃睡都在那里,没日没夜的工作,但初出茅庐的我感觉这也是一个锻炼的机会,可是我最后没有选择它。现在想想,对于当时初入职场的我,在这种小公司也许能锻炼很多技术,但对于整个软件开发的规范模式、流程的认识不会有很好的帮助,也就不能从大体上去了解软件开发这个行业,我想这应该比较适合有一定经验的人去工作,也不知道他们招初级程序员的初衷是便宜劳动力,还是真的为了培养人才。 ...

2015年2月14日 · 1 分钟 · 291 字
👋欢迎来到我的技术博客🌟
这是一片专注于前沿技术探索的园地,涵盖:
  • Web3与区块链(BTC、ETH、区块链基础设施)
  • 后端技术栈(Java、Go、Python)
  • 人工智能与数据科学(ML、DL、数据挖掘)
  • 系统安全与运维(服务器、网络、容器化)
📫 联系方式