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 + " 的用户";
        }
    }
  • 相关阅读:
    Android weight属性详解
    设计模式(一)__单例设计模式
    Java中线程的生命周期
    抽象类和接口
    SQL sever 怎样将DBF文件导入到数据库
    JS去除字符串中空格,及常用正则表达式
    Oracle 11g问题1:关于error:ORA12541: TNS: 没有监听器
    access、excel取随机n条记录
    tsql字符串操作
    测试SQL Server执行时间和CPU时间
  • 原文地址:https://www.cnblogs.com/huanggy/p/9510652.html
Copyright © 2011-2022 走看看