第三章(三自学) 静态首页 拦截器

3)静态首页的支持

demo-web3工程

默认把静态index.html文件放置在如下目录

classpath:/META-INF/resources/index.html
classpath:/resources/index.html
classpath:/static/index.html
classpath:/public/index.html

当我们访问应用根目录http://localhost:8080/时,会直接映射

注意:如果配置了自己的静态文件访问路径,则必须放到自己的目录下,即我们做了1.1配置则把文件放到src/main/webapp/static目录下

使用总结:

  1. 不在application.properties里做静态资源配置(*.html的可以放到默认目录下)。
  2. js,css,images等在*.java里配置访问权限。

4)配置拦截器(了解)

demo-web4工程
自定义一个配置类,实现WebMvcConfigurer接口
重写addInterceptors方法
addInterceptor方法,添加自定义的拦截器
addPathPatterns方法,拦截的uri
excludePathPatterns方法,排除拦截的uri

step1 定义拦截器,同springmvc写法implements HandlerInterceptor

package com.neuedu.demo.interceptor;

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

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

public class HandlerInterceptor1 implements HandlerInterceptor{

//进入 Handler方法之前执行
//用于身份认证、身份授权
//比如身份认证,如果认证不通过表示当前用户没有登陆,需要此方法拦截不再向下执行
@Override
public boolean preHandle(HttpServletRequest request,
        HttpServletResponse response, Object handler) throws Exception {
    
    System.out.println("HandlerInterceptor1...preHandle");
    
    //return false表示拦截,不向下执行
    //return true表示放行
    return true;
}

//进入Handler方法之后,返回modelAndView之前执行
//应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
@Override
public void postHandle(HttpServletRequest request,
        HttpServletResponse response, Object handler,
        ModelAndView modelAndView) throws Exception {
    
    System.out.println("HandlerInterceptor1...postHandle");
    
}

//执行Handler完成执行此方法
//应用场景:统一异常处理,统一日志处理
@Override
public void afterCompletion(HttpServletRequest request,
        HttpServletResponse response, Object handler, Exception ex)
        throws Exception {
    
    System.out.println("HandlerInterceptor1...afterCompletion");
}

}

HandlerInterceptor2(略)

step2 配置使用拦截器,addPathPatterns为拦截哪些地址,excludePathPatterns为排除哪些地址

   @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //将静态资源排除在拦截之外
         registry.addInterceptor(new HandlerInterceptor1()).addPathPatterns("/**");
         registry.addInterceptor(new HandlerInterceptor2()).addPathPatterns("/**")
         .excludePathPatterns("/index.html","/","/static/**");
    }

测试:
http://localhost:8080/static/index.html 不会被拦截
http://localhost:8080/hello2 会被拦截

你可能感兴趣的:(第三章(三自学) 静态首页 拦截器)