SpringBoot拦截器问题

先说说springboot拦截器的创建吧。

  1. 写一个用于拦截的类,让这个类去实现HandlerInterceptor。比如:
    @Component
    public class LoginInterceptor implements HandlerInterceptor{
    
    	@Autowired
    	private UserService userService;
    	
    	@Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            StringBuffer uri = request.getRequestURL();
            System.out.println(uri);
            try {
                HttpSession session = request.getSession();
                System.out.println("session  : " + session.getAttribute("user"));
                if (session.getAttribute("user") == null) {
                	response.sendRedirect(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath() + "/user/login");  //未登录自动跳转界面
                    return false;
                }
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                               ModelAndView modelAndView) throws Exception {
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
        }
    }
  2. 写一个添加拦截的类,继承一个WebMvcConfigurerAdapter的类。比如:

@EnableWebMvc
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter{
	 @Bean
	    LoginInterceptor localInterceptor() {
	        return new LoginInterceptor();
	    }

	    @Override
	    public void addInterceptors(InterceptorRegistry registry) {

	        registry.addInterceptor(localInterceptor())
	        	
	                .excludePathPatterns("/user/Login")//不拦截的url
	                .excludePathPatterns("/user/register")
	                .excludePathPatterns("/user/adduser")
	                .excludePathPatterns("/user/login")
	            	.addPathPatterns("/**/**")//拦截的url
	                ;
	        super.addInterceptors(registry);
	    }
}

由于我用的jsp页面,所有在pom.xml中加jsp的依赖


     <dependency>  

         <groupId>org.apache.tomcat.embed</groupId>  
  
         <artifactId>tomcat-embed-jasper</artifactId>  
  
     </dependency>
     <dependency>
     	<groupId>javax.servlet</groupId>
     	<artifactId>javax.servlet-api</artifactId>
     </dependency>

controller就不用写了,直接返回个String就跳到对应的页面了。

下面来进行测试的时候,出现了错误。如下

 有重定向?打开控制台确实有。百度查了是说没有jsp的依赖,一看我也加了。仔细检查发现在MyWebAppConfigurer类里面有一个注解,@EnableWebMvc,这个注解表示的是MVC Java config,将@EnableWebMvc添加到你的一个@Configuration class。也就是说这个必须要有xml(ps:这块我也不清楚,反正应该要有个xml文件,类似于springmvc吧,反正我没有)。最后将这个注解删除了,完成拦截了。

PS:新手上路,大神勿喷。。。。qwq

猜你喜欢

转载自blog.csdn.net/qq_35639030/article/details/81287125