零散知识点整理

http三种拦截器

  1. HandlerInterceptor是Controller拦截器
  2. ClientHttpRequestInterceptor是RestTemplate的拦截器
  3. RequestInterceptor是Feign拦截器

防止session固定攻击

  1. 编写登录方法
    @PostMapping("/login")
     public void login(String username, String password, HttpServletRequest request){
          // 防止session固定攻击
          HttpSession session = request.getSession(false);
          if (session !=null){
              session.invalidate();
          }
          session = request.getSession(true);
          User user = service.login(username, password);
          session.setAttribute("user", user);
    }
    

跨域配置

  1. 注解驱动:@CrossOrigin
    @RestController
    public class HelloController {
        @CrossOrigin
        @GetMapping("/hello")
        public Map<String,String> hello(String message){
            Map<String,String> map = new HashMap<>() ;
            map.put("code","200") ;
            map.put("msg","success") ;
            map.put("data", message) ;
            return map ;
        }
    }
    
  2. 代码驱动: WebMvcConfigurer#addCorsMappings
    @Configuration
    public class RestWebMvcConfigurer implements WebMvcConfigurer {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**").allowedOrigins("*") ;
        }
    }
    
  3. Filter组件:CorsFilter

异步Controller

  1. 异步代码片段
    @GetMapping("/asyncHello")
    public DeferredResult<String> asyncHello(){
        DeferredResult<String> result = new DeferredResult<>() ;
        result.setResult("hello world " + LocalDateTime.now()) ;
        result.onCompletion(()->{
            log.info("异步业务执行结束..");
        });
        return result ;
    }
    

杂记

  1. HttpServletRequestWrapper的使用
    private static class HttpMethodRequestWrapper extends HttpServletRequestWrapper {
        private final String method;
        public HttpMethodRequestWrapper(HttpServletRequest request, String method) {
            super(request);
            this.method = method;
        }
        @Override
        public String getMethod() {
            return this.method;
        }
    }
    
  2. 将FirstServlet文件夹打包成FirstServlet.war文件
    2.1 cd 到FirstServlet文件夹内
    2.2 命令执行:jar cvf ../FirstServlet.war *
    

Mybatis打印sql在Springboot中配置

  1. 在application.properties中添加配置
    logging.level.com.yicj.content.mapper: debug
    

版权声明:本文为yichengjie_c原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。