栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC学习的第6天(2021-11-21)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC学习的第6天(2021-11-21)

SpringMVC学习的第6天(2021-11-21) 学习SpringMVC的拦截器:

1、拦截器是用来拦截控制器方法执行的。
2、拦截器里面的三个抽象方法分别再什么时候执行?
一个在 控制器方法执行之前
一个在控制器方法执行之后
一个在视图渲染完毕之后。

如何创建SpringMVC的拦截器?

实现接口:HandlerInterceptor

重写三个方法:
preHandle
postHandle
afterCompletion

package com.rtl.mvc.interceptor;

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

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

public class FirstInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

补充:
处理响应中文的乱码:
在SpringMVC的配置文件里面加上这个:

//之前只是一个简单的注解驱动,现在配置了很多东西。
 
        
            
                
                
                    
                        text/html
                        application/json
                    
                
            
        
    

2、配置SpringMVC.xml的配置文件,来配置拦截器

 
        
    

拦截器:

preHandle方法就是拦截方法。
这个方法如果返回false就是拦截
我们设置拦截器里面的方法preHandle
设置他的返回值为false。也就是会拦截。


这个时候,我们启动项目,
浏览器输入http://localhost:8080/springMVC/
默认不会访问首页,但是这个时候控制器方法不会执行,因为被拦截器拦截了。

只会执行preHandle。
所以只会打印:

如果把preHandle方法的返回值改为true。就是放行。


preHandle的方法返回值是boolean,是否调用后面的控制器方法。true是:调用控制器方法,即不拦截。放行。

方法返回值设置为true的时候,就是放行。
那么三个方法都会执行。而且控制器方法也会执行,所以,就访问到了首页。

现在都是默认对所有的请求进行拦截。

我们要选择性的拦截一些请求路径。

 
        
            
            
            
        
    

如果配置了多个拦截器且全都返回true,那么拦截器方法的执行顺序:
假如在SpringMVC配置文件里面
FirstInterceptor先设置
SecondInterceptor后设置
那么执行顺序是:
First -> pre
Second -> pre

Second -> post
First -> post

Second -> after
First -> after

如果两个拦截器,配置是first在前面且返回true
second在后面,返回false

对于pre方法,都会执行,顺序是first second
对于post方法,都不会执行
对于after方法,只有first会执行

学到这里简单的把SpringMVC的知识点进行了学习。
结束。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/582380.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号