1. 把 拦截器 文件 Interceptor1.java 放到 与控制器 同级目录
package com.example.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class Interceptor1 implements HandlerInterceptor
{
@Override
public boolean preHandle(HttpServletRequest request
, HttpServletResponse response
,Object handler) throws Exception
{
HttpSession session=request.getSession();
Object ob=session.getAttribute("name"); //登录时建立的session名字
if (ob
!=null) {
return true;
}
session.setAttribute("preurl"
,request.getRequestURI());
StringBuffer url = request.getRequestURL();
String tempContextUrl = url.delete(url.length()
- request.getRequestURI().length()
, url.length()).append(request.getServletContext().getContextPath()).append("/").toString();
response.sendRedirect("/login/login"); //如果访问其他页面跳转到该页面
return false;
}
@Override
public void postHandle(HttpServletRequest request
, HttpServletResponse response
,
Object handler
,ModelAndView model) throws Exception
{
}
@Override
public void afterCompletion(HttpServletRequest request
, HttpServletResponse response
,
Object handler
,Exception ex) throws Exception
{
}
}
2. 需要拦截器 放到 启动类中 , 把登陆 放到拦截器之外
@SpringBootApplication
public class DemoApplication implements WebMvcConfigurer
{
@Override
public void addInterceptors(InterceptorRegistry registry)
{
InterceptorRegistration ir=registry.addInterceptor(new Interceptor1());
ir.addPathPatterns("/**");
// ir.excludePathPatterns("/stu/save"
,"/stu/getClassGid","/stu/pageList","/stu/getClassAll","/index/index","/index/right","/stu/news","/stu/pageList","/stu/indexData","/stu/getEditData","/stu/getClass","/stu/del","/stu/edit","/stu/login","/stu/index","/stu/add","/js/**","/html/**","/images/**","/css/**");
ir.excludePathPatterns("/login/login"
,"/login/dologin","/login/yzm","/js/**","/html/**","/images/**","/css/**"); //允许访问的文件路径
}
public static void main(String
[] args)
{
SpringApplication.run(DemoApplication.class
, args);
}
}
导入文件 :
import com.example.controller.Interceptor1;
3. 登陆时候 建立 session 名称为 name 的 个给其赋值 。