• 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 + " 的用户";
        }
    }
  • 相关阅读:
    loadrunner 字符集与检查点的探讨
    oracle使用游标进行循环数据插入
    QTP之WinMenu对象的测试
    VBS数组深入浅出
    Loadrunner 如何访问数据库
    loadrunner字符串处理函数
    动态SQL现实一个表中求多列的和
    oracle中WMSYS.WM_CONCAT函数的版本差异
    强制卸载LINUX系统自带JDK
    loadrunner调用QTP脚本来实现性能测试(一次现场特殊需求的解决方案)
  • 原文地址:https://www.cnblogs.com/huanggy/p/9510652.html
Copyright © 2020-2023  润新知