SpringBoot-demo

定义拦截器

package com.circle.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 登录检测
 * 1. 配置好拦截器要拦截哪些请求
 * 2. 把这些配置放在容器中
 */
public class LoginInterceptor implements HandlerInterceptor {
    /**
     * 目标方法执行之前
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        Object user = session.getAttribute("user");
        if (user != null){
            return true;
        }
        response.sendRedirect("/login");
        return false;
    }

    /**
     * 目标方法执行之后
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    /**
     * 页面渲染以后
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

添加拦截器

package com.circle.config;

import com.circle.interceptor.LoginInterceptor;
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 AdminWebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/**") //所有请求,包括静态资源
                .excludePathPatterns("*.png","/", "/login", "/loginHandle", "/index", "/css/**");
    }
}

文件上传

/**
     * MultipartFile 自动封装上传来的文件
     * @param headImage
     * @param photos
     * @return
     */
    @PostMapping("/uploadHandle")
    public String uploadHandle(@RequestPart("headImage")MultipartFile headImage,
                               @RequestPart("photos") MultipartFile[] photos, HttpSession session) throws IOException {
        session.setAttribute("msg", "");
        if (headImage.isEmpty() || photos == null || photos.length == 0) {
            session.setAttribute("msg", "文件不能为空");
            return "redirect:/upload";
        }
        if (headImage.getSize() > 1024){
            session.setAttribute("msg", "大小超限");
            return "redirect:/upload";
        }
        String originalFilename = headImage.getOriginalFilename();
        File file = new File( "E:\\cache\\" + originalFilename);
        headImage.transferTo(file);

        for (MultipartFile photo : photos) {
            originalFilename = photo.getOriginalFilename();
            file = new File("E:\\cache\\" + originalFilename);
            photo.transferTo(file);
        }
        return "redirect:/upload";
    }
<!DOCTYPE html>
<html lang="zh-cn" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form th:action="@{/uploadHandle}" method="post" enctype="multipart/form-data">
    <input type="file" name="headImage" max="10">
    <input type="file" name="photos" multiple>
    <input type="submit" value="上传">
</form>
<span th:text="${session.msg}"></span>
</body>
</html>
posted @ 2021-03-14 23:34  王^.^令  阅读(86)  评论(0)    收藏  举报