SpringBoot 整合SSM(七):拦截器

版权声明:我,low,赚钱 https://blog.csdn.net/wzlhlhhh/article/details/80351710

最后一部分,关于拦截器


这里流程是不太一样,没有注册的地方了,所以就要重写WebMvcConfigurer类的addInterceptors方法。

这里要注意的是,springboot2之后,就重写这个了,之前的话是重写另外一个,但是已经不推荐了。

贴一下拦截器和重写的文件

拦截器

package com.ssm_login.intercept;

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

import org.apache.ibatis.plugin.Intercepts;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.ssm_login.exception.NoLoggingException;

@Controller
// 配置拦截器
public class LoginIntercept implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// TODO 自动生成的方法存根
		System.out.println("进入拦截器");
		if(request.getSession().getAttribute("user") != null)
		{
			return true;
		}
		else
		{
			throw new NoLoggingException("未登录!");
		}
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO 自动生成的方法存根
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO 自动生成的方法存根
	}

	
}
重写的配置文件
package com.ssm_login.mvcConfig;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import com.ssm_login.intercept.LoginIntercept;

// 重写addInterceptors ,自定义拦截器
// springboot2 新方法
@Configuration 
public class MyWebAppConfigurer implements WebMvcConfigurer {

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		// TODO 自动生成的方法存根
		registry.addInterceptor(new LoginIntercept()).excludePathPatterns("/", "/register", "/img/*", "/login");
	}
	
}
这个文件里可以看到,其实能读懂,我这里就配置了排除的链接,其他全过。应该是默认的
这里被坑的就是/img/*,因为我发现我的图片GET请求也要经过。。。然后不是没登录的错误页面吗,图都没得显示了。。。

到这里,这个简单的例子就完成了

常用的功能都带了一下,有问题会继续写。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页