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;

  • 相关阅读:
    黑苹果崩溃恢复
    黑苹果声音小解决方法
    idea plugin 进度条
    phpstorm 插件
    awesome mac
    webstorm vue eslint 自动修正配置
    Laravel/php 一些调试技巧
    php ZipArchive 压缩整个文件夹
    laravel 模型事件 updated 触发条件
    php 开启 opcache 之后 require、include 还会每次都重新加载文件吗?
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5097211.html
Copyright © 2011-2022 走看看