springboot静态资源访问、文件上传、拦截器

静态资源访问

在static中

application.properties
spring.mvc.static-path=/static/**
spring.web.resources.static-location=classpath:/static/

过滤规则/static/**
静态资源位置classpath:/static/

文件放在static下,就可以直接访问了
在这里插入图片描述
在这里插入图片描述

http://localhost:8080/images/test.jpeg

spring.mvc.static-path-pattern=/images/**

在这里插入图片描述
在这里插入图片描述

spring.web.resources.static-locations=classpath:/css
将类放在target下的classes中

在这里插入图片描述

文件上传

表单的enctype属性规定在发送到服务器之前应该如何编码
springboot 限制文件大小为1m
可以通过MULTI[PARTFILE 获取文件信息

package com.example.helloworld2.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

@RestController
public class FileUploadController {
    @PostMapping("/upload")//传输用户名称和头像nickname,photo
    public  String up(String nickname, MultipartFile photo, HttpServletRequest request) throws IOException{
        System.out.println(nickname);
        //获取图片的原始名称
        System.out.println(photo.getOriginalFilename());
        //文件类型
        System.out.println(photo.getContentType());

       // System.out.println(System.getProperty("user.dir"));
        String path=request.getServletContext().getRealPath("/upload");
        System.out.println(path);
        saveFile(photo,path);
        return "上传成功";
    }
    public void saveFile(MultipartFile photo,String path) throws  IOException{
        //首先判断存储的路径是否存在,不存在就创建
        File dir= new File(path);
        if(!dir.exists()){dir.mkdir();}
        File file=new File(path+photo.getOriginalFilename());
        photo.transferTo(file);
    }
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可以看见输出的动态文件地址C:\Users\hyq\AppData\Local\Temp\tomcat-docbase.8080.4125486089777013888\upload

如果出现500,则表示后端出错,首先看看报错原因,如果是文件大小问题,就在propertie中改变max-file-size,可以改成10mb,然后重新上传,如果传输成功则问题解决

拦截器

拦截器应用场景:权限检查、性能监控、通用行为

package com.example.helloworld2.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//继承父类HandlerInterceptor ,可以通过ctrl+左键查看父类
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    //request前端请求,response给反馈
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws IOException
    {
        System.out.println("LoginInterceptor");
        return true;
    }
}

但是该类不会实现,除非配置config文件

package com.example.helloworld2.config;

import com.example.helloworld2.interceptor.LoginInterceptor;
import org.aopalliance.intercept.Interceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public  void addInterceptors(InterceptorRegistry registry){
        registry.addInterceptor(new LoginInterceptor())
        //registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/**");
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值