使用IDEA创建Spring Boot项目时,会默认创建classpath://static/目录,静态资源一般放在这个目录下即可。
如果默认的静态资源过滤策略不能满足开发需求,也可以进行自定义的静态资源过滤的策略。
在application.properties中直接定义过滤规则和静态资源位置: spring.mvc.static-path-pattern=/static/** spring.web.resources.static-locations=classpath:/static/
过滤规则为/static/**,静态资源位置为 classpath:/static/
也就是说,如果采用默认的静态资源访问时,只需要在域名后直接加上资源的后缀即可,如localhost:8080/test.jpg。
使用spring.mvc.static-path-pattern=/images/** 时就需要如下路径了:localhost:8080/images/test.jpg。
使用spring.web.resources.static-locations=classpath:/xxx 时 就代表是自己创建了一个目录,classpath的意思是编译后在 类路径 target下。(了解即可。)
前端中的表单enctype属性 规定在发送到服务器之前应该如何对表单的数据进行相关的编码。
表单的enctype=“application/x-www-from-urlencoded(默认)”时,form表单中的数据格式为:key=vlaue。
表单的enctype="multipart/form-data"时,其传输的数据形式如下。
Spring Boot嵌入的Tomcat限制了请求的文件大小,每个文件的配置最大为1Mb,单次请求的文件的总数不能大于10Mb。
如果要更改这个默认值需要在配置文件(如application.properties)中加入 如下两个配置即可:
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
当表单的enctype=“multipart/form-data”时,可以使用MultipartFile获取上传的文件数据,再通过transferTo方法将其写入磁盘中去。
HttpServletRequest是JavaEE的一个自带类,通过这个类的getServletContext()方法,可以获得前端发来的请求的上下文,就是web服务器,然后就能得到服务器的路径。(需要动态获取)
进行如下的前端模拟请求:
然后利用transferTo这个方法就可以进行文件存储。
拦截器在Web系统中非常的常见,对于某些全局统一的操作,我们可以把它提取到拦截器中实现。
总结有如下大致几个使用的场景: 1、权限检查:如登录检测,进入处理程序检测是否登录,如果没有,则直接返回登录页面。 2、性能监控:有时候系统在某段时间莫名其妙很慢,可以通过拦截器在进入处理程序之前记录开始时间,在处理完之后记录结束时间,从而得到该请求的处理时间。 3、通用行为:读取cookie得到用户信息并且将用户对象放入请求,从而方便后续流程使用。
Spring Boot定义了HandlerInterceptor接口来实现自定义拦截器的功能。
其中该接口定义了preHandle、postHandle、afterCompletion三种方法,通过重写这三种方法实现请求前、请求后等操作。
addPathPatterns方法定义拦截的地址。 excludePathPatterns定义排除某些地址不被拦截。 添加的一个拦截器没有addPathPattern任何一个url则默认拦截所有请求。 如果没有excludePathPatterns任何一个请求,则默认不放过任何一个请求。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有