Filtro springboot- y interceptor y motor de plantillas

Un filtro de
inicio de primera clase anotada

@SpringBootApplication
@ServletComponentScan    //用于进行servlet组件扫描
public class Springboot03Application {

    public static void main(String[] args) {
        SpringApplication.run(Springboot03Application.class, args);
    }

}
/**
 * 基于servlet3.x版本的过滤器,所以需要使用注解
 */
@WebFilter(urlPatterns = "/api/*", filterName = "loginFilter")
public class UserFilter implements Filter {


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("初始化操作-----------");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        //获取用户名
        String name = request.getParameter("name");
        
        //如果获取的用户名与给定的用户名相同,则放行
        if("jack".equals(name)){
            filterChain.doFilter(servletRequest,servletResponse);//如果当前名字是Jack,则放行
        }else{
            response.sendRedirect("/login.html");
        }
    }

    @Override
    public void destroy() {
        System.out.println("销毁操作-------");
    }
}

En segundo lugar, el interceptor personalizada

  • 1, clase interceptor personalizado que implementa HandlerInterceptorla interfaz
    preHandle : Controlador antes de llamar a un método
    postHandle : Después de las llamadas del controlador, antes de emitir un juicio, si el controlador Controlador inusual, este método no se realiza
    afterCompletion : Sea o no una excepción, esto será afterCompletion se llama para la limpieza de recursos
@Component
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return true;   //false代表拦截   true代表放行
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion");
    }
}
  • 2, clase personalizada anotada @Configuratione implementar clases de interfaz WebMvcConfigurer, addInterceptors de anulación () {}
/**
 * 自定义拦截器
 */
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

    @Autowired
    private LoginInterceptor loginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        System.out.println("addInterceptors");
        registry.addInterceptor(loginInterceptor).addPathPatterns("/api/*/**");
    }
}
  • 3, un interceptor de encargo añadió a una solución de 2 addInterceptors () {} método.

Datos adjuntos: interceptores razones de fallo:
1) Verificar para hacer comentarios @Configuration
2) si hay un camino a la intercepción ** y *
3) interceptor última ruta debe ser "/ *", si lo es, entonces el directorio es / * /

En tercer lugar, el motor de plantillas y thymeleaf Freemark

  1. Freemarker Plantilla lanaguage (FTL) sufijo de archivo es .ftl
    Características: depende estrictamente el patrón MVC, no depende de contenedor de servlets. Sin perder
    de configuración básica:
#freemarker基础配置
# 是否开启thymeleaf缓存,本地为false,生产建议为true
spring.freemarker.cache=false

spring.freemarker.charset=UTF-8
spring.freemarker.allow-request-override=false
spring.freemarker.check-template-location=true

#类型
spring.freemarker.content-type=text/html

spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true

#文件后缀
spring.freemarker.suffix=.ftl
#路径
spring.freemarker.template-loader-path=classpath:/templates/

La introducción de depender motor de plantillas FreeMarker

<!-- 引入freemarker模板引擎的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
  1. Thymeleaf (empuje principal springboot)
    Características: motor de plantillas de peso ligero, hay página de negocio complejas, no se recomienda. Por ejemplo, hay muchos juicio página (o DOM análisis XML conducirán a consumir demasiada memoria).
    Configuración básica:
#thymeleaf基础配置

#开发时关闭缓存,不然没法看到实时页面
spring.thymeleaf.cache=false
spring.thymeleaf.mode=HTML5
#前缀
spring.thymeleaf.prefix=classpath:/templates/
#编码
spring.thymeleaf.encoding=UTF-8
#类型
spring.thymeleaf.servlet.content-type=text/html
#名称的后缀
spring.thymeleaf.suffix=.html

La introducción de thymeleaf related maven dependientes

<!--thymeleaf相关maven依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
Publicado 36 artículos originales · ganado elogios 7 · vistas 2058

Supongo que te gusta

Origin blog.csdn.net/q_2540638774/article/details/105053273
Recomendado
Clasificación