zoukankan      html  css  js  c++  java
  • spring MVC拦截器01

    spring MVC拦截
    作用:身份校验,权限检查,防止非法訪问.
    场景:一个bbs系统,用户没有登录就无法发帖或者删除评论;
    一个博客系统,没有登录就无法发表博文,无法添加分类,无法删除博文.

    spring MVC 拦截实现分为2步
    (1)编写拦截器类,必须继承org.springframework.web.servlet.HandlerInterceptor
    核心方法:

    public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object arg2) throws Exception {

    在该方法中进行权限校验,说白了,就是检查是否已成功登录,核心代码:

    @Override
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object arg2) throws Exception {
            response.setCharacterEncoding("UTF-8");
            HttpSession session = request.getSession(true);
    
            String loginFlag = (String) session
                    .getAttribute(Constant2.SESSION_KEY_LOGINED_FLAG);
            if (loginFlag == null
                    ||( !loginFlag.equalsIgnoreCase(Constant2.FLAG_LOGIN_SUCCESS))) {
                String path=request.getRequestURI();//"/demo_channel_terminal/news/list"
                System.out.println("您无权訪问:"+path);
                String contextPath=request.getContextPath();
    
                request.setCharacterEncoding("UTF-8");
                response.setStatus(401);
                response.sendRedirect(contextPath);
                return false;
            }
            return true;
        }

    (2)配置spring MVC配置文件
    我的spring MVC配置文件名叫spring2-servlet.xml
    拦截器相关配置:

    <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/bbs/json_add_bbs"></mvc:mapping>
                <mvc:mapping path="/news/json_add_tips"></mvc:mapping>
                <bean class="com.web.controller.intercept.MemberInterceptor">
                </bean>
            </mvc:interceptor>
        </mvc:interceptors>

    拦截器配置
    解释:当訪问/bbs/json_add_bbs和/news/json_add_tips 时就会应用拦截器类com.web.controller.intercept.MemberInterceptor(自己定义的)
    訪问其它路径时不会应用该拦截器!!!

    (3)项目结构
    项目採用maven 构建
    项目结构

    注意:
    preHandle方法中返回false,就会终止request过程,即不会运行action;

  • 相关阅读:
    Java 的this和super关键字
    Java关于访问控制权限
    Java 封装 继承 多态
    Java的集成开发工具
    如何查询小程序中的代码量
    小程序中使用echarts及使用的坑
    微信小程序-新的页面授权机制
    前端处理几十万条数据不卡顿(window.requestAnimationFrame)
    Vs code中Eslint 与 Prettier格式化冲突
    从原型与原型链的角度看es6 class
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5097211.html
Copyright © 2011-2022 走看看