zoukankan      html  css  js  c++  java
  • ssm框架拦截器

    1.ssm框架的拦截器是在springmvc-servlet.xml配置文件中进行配置

    <!-- 拦截器 -->
        <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/**" />
                <bean class="cn.com.***.controller.common.SecurityInterceptor">
                    <!-- 不需要session验证的地址 -->
                    <property name="excludeUrls">
                        <list>
                            <value>/web/index</value>
                            <value>/web/aboutsPage</value>                                              
                        </list>
                    </property>
                </bean>
            </mvc:interceptor>
        </mvc:interceptors>

    2.创建一个拦截器实体类,继承HandlerInterceptor,重写它的方法,preHandle是调用Controller具体方法之前拦截,postHandle是调用Controller具体方法之后拦截,afterCompletion是完成页面后调用,所以在preHandle里面写逻辑代码,如登入之后怎么做,没登录这么做,或者根据不同的登录平台进行跳转之类的逻辑

    package cn.com.***.controller.common;
    
    import java.util.List;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    import cn.com.***.common.pojo.WSessionInfo;
    import cn.com.***.common.result.Constant;
    
    
    /**
     * 权限拦截器
     */
    public class SecurityInterceptor implements HandlerInterceptor {
    
        private List<String> excludeUrls;// 不需要拦截的资源
        private List<String> wapUrls;//wapurl
        
        public List<String> getWapUrls() {
            return wapUrls;
        }
    
        public void setWapUrls(List<String> wapUrls) {
            this.wapUrls = wapUrls;
        }
    
        public List<String> getExcludeUrls() {
            return excludeUrls;
        }
    
        public void setExcludeUrls(List<String> excludeUrls) {
            this.excludeUrls = excludeUrls;
        }
    
        /**
         * 完成页面的render后调用
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,
                Exception exception) throws Exception {
        }
    
        /**
         * 在调用controller具体方法后拦截
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object,
                ModelAndView modelAndView) throws Exception {
        }
    
        /**
         * 在调用controller具体方法前拦截
         */
        @SuppressWarnings("unchecked")
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
             //请求的路径
            String contextPath=request.getContextPath();
            String  url=request.getServletPath().toString();
            StringBuffer realUrl = request.getRequestURL();
            WSessionInfo sessionInfo = (WSessionInfo) request.getSession().getAttribute(Constant.SESSION_INFO);

              if(excludeUrls.contains(url)){
                  return true ;
              }

    if (sessionInfo == null) {
                String isqian = url.substring(0, 4);
                if (isqian.equals("/wap")) {
                  response.sendRedirect(contextPath + "/wap/adminLogin");
                  return true;
                }if (isqian.equals("/web")) {
                  response.sendRedirect(contextPath + "/web/index");
                } else if (realUrl.toString().equals(contextPath +"/web/index")) {
                  response.sendRedirect(contextPath + "/wap/adminLogin");
                  return true;
                }
              }
            return true ;
            
        }
    }
  • 相关阅读:
    怎样运用Oracle的BFILE
    第一个博客
    返回引用的函数
    c++之SQLite的增删改查
    sqlite命令行程序说明
    CreateProcess函数详解
    注册窗口类
    radio button的用法
    跨线程使用CSocket
    关于socket的connect超时的问题
  • 原文地址:https://www.cnblogs.com/-scl/p/7381761.html
Copyright © 2011-2022 走看看