zoukankan      html  css  js  c++  java
  • springMVC 拦截器

    只能拦截方法,不能拦截页面,因为跳转页面在前端就做了,压根没走后台

    步骤

    1,继承 HandlerInterceptor 接口,实现拦截器

    public class LoginInterceptor implements HandlerInterceptor {
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            // session 有 user 就说明登陆了,反之则未登录
            Object user = request.getSession().getAttribute("user");
            if(user == null) {
                // 放过请求
                return false;
            }
            // 拦截请求
            return true;
        }
    
        @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,springMVC 配置文件配置拦截器,指明需要拦截和不需要拦截的方法,指明拦截器

    <!-- 配置拦截器 -->
    <mvc:interceptors>
      <mvc:interceptor>
        <!-- 拦截部分请求:goods 下的请求 -->
        <!-- <mvc:mapping path="/goods/*" /> -->
        <!-- 拦截所有请求 -->
        <mvc:mapping path="/**" />
        <!-- 特定的方法不拦截 -->
        <mvc:exclude-mapping path="/users" />
        <!-- 拦截器 class -->
        <bean class="com.weipai.interceptor.LoginInterceptor" />
      </mvc:interceptor>
    </mvc:interceptors>

    3,控制层测试方法

    @RestController
    @RequestMapping("users")
    public class UserController {
    
        /**
         * .没有做请求映射,当访问 /users 默认就会组这个方法
         * .虽然配了所有方法被拦截,但是指明了这个方法不被拦截
         */
        @GetMapping
        public String getAll() {
            System.out.println("所有用户");
            return "所有用户";
        }
        
        // 前面配置的所有方法被拦截,这个方法要被拦截
        @GetMapping("/{userId}")
        public String getOne(@PathVariable(value="userId") String userId) {
            System.out.println(userId);
            return "id 为 " + userId + " 的用户";
        }
    }
  • 相关阅读:
    华为云发送邮件
    activiti act_re_model 分析
    tengine upstream
    zuul压力测试与调优
    idea 快捷键
    kubernetes helm
    编写高质量代码–改善python程序的建议(二)
    编写高质量代码--改善python程序的建议(一)
    总结OpenvSwitch的调试经验
    提高SDN控制器拓扑发现性能
  • 原文地址:https://www.cnblogs.com/huanggy/p/9510652.html
Copyright © 2011-2022 走看看