java的拦截器要比php的简单,以下代码放在启动类里面。
一定实现接口,否则导包会失败
**启动类要实现接口** **implements WebMvcConfigurer**
@Override
public void addInterceptors(InterceptorRegistry registry){
//Interceptor需要新建一个class 拦截器文件
InterceptorRegistration ir=registry.addInterceptor(new Interceptor());
ir.addPathPatterns("/**");
//是放开权限,可以直接访问
ir.excludePathPatterns("/ht/yzmtp","/ht/yanzheng","/html/**","/js/**","/ht/dd","/css/**","/images/**","/kindeditor/**","/laydate/**","/upload/**","/vue/**");
}
创建一个拦截器,Interceptor
package com.example.demo;
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 Interceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception{
HttpSession session=request.getSession();
//获得sessio 有值就进入,没有就拦截
Object ob=session.getAttribute("name");
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();
//可以改变 拦截后跳转页面
String ss="http://127.0.0.1:8080/ht/dd";
response.sendRedirect(ss);
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{
}
}