• springmvc-3-拦截器


    
    package interceptor;
    import java.util.Date;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
     
    public class IndexInterceptor extends HandlerInterceptorAdapter { 
     
         /** 
         * 在业务处理器处理请求之前被调用 
         * 如果返回false 
         *     从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链
         * 如果返回true 
         *    执行下一个拦截器,直到所有的拦截器都执行完毕 
         *    再执行被拦截的Controller 
         *    然后进入拦截器链, 
         *    从最后一个拦截器往回执行所有的postHandle() 
         *    接着再从最后一个拦截器往回执行所有的afterCompletion() 
         */   
        public boolean preHandle(HttpServletRequest request,   
                HttpServletResponse response, Object handler) throws Exception {
             
            System.out.println("preHandle(), 在访问Controller之前被调用"); 
            return true;
             
        } 
     
        /**
         * 在业务处理器处理请求执行完成后,生成视图之前执行的动作   
         * 可在modelAndView中加入数据,比如当前时间
         */ 
         
        public void postHandle(HttpServletRequest request,   
                HttpServletResponse response, Object handler,   
                ModelAndView modelAndView) throws Exception { 
            System.out.println("postHandle(), 在访问Controller之后,访问视图之前被调用,这里可以注入一个时间到modelAndView中,用于后续视图显示");
            modelAndView.addObject("date","由拦截器生成的时间:" + new Date());
        } 
     
        /** 
         * 在DispatcherServlet完全处理完请求后被调用,可用于清理资源等  
         *  
         * 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion() 
         */
         
        public void afterCompletion(HttpServletRequest request,   
                HttpServletResponse response, Object handler, Exception ex) 
        throws Exception { 
               
            System.out.println("afterCompletion(), 在访问视图之后被调用"); 
        } 
           
    }
    

    配置拦截器

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context        
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
         
        <context:component-scan base-package="controller" />
        <bean id="irViewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/page/" />
            <property name="suffix" value=".jsp" />
        </bean>
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
        
    
    <mvc:interceptors>   
            <mvc:interceptor>   
                <mvc:mapping path="/index"/> 
                <!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 --> 
                <bean class="interceptor.IndexInterceptor"/>     
            </mvc:interceptor> 
            <!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 --> 
        </mvc:interceptors>
    
    </beans>
    
    

    spring mvc中设置登录拦截器,报错:元素 "mvc:interceptors" 的前缀 "mvc" 未绑定。

    原因:忘了加 xmlns:mvc="http://www.springframework.org/schema/mvc"

    通配符的匹配很全面, 但无法找到元素 'mvc:interceptors' 的声明

    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    完整版springmvc配置

    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:mvc="http://www.springframework.org/schema/mvc" 
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context        
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
         http://www.springframework.org/schema/mvc 
         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    
    	<context:component-scan base-package="controller" />
    	<bean id="irViewResolver"
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/page/" />
    		<property name="suffix" value=".jsp" />
    	</bean>
    	<bean id="multipartResolver"
    		class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
    
    
    	<!-- <bean id="simpleUrlHandlerMapping" -->
    	<!-- class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> -->
    	<!-- <property name="mappings"> -->
    	<!-- <props> -->
    	<!-- <prop key="/index">indexController</prop> -->
    	<!-- </props> -->
    	<!-- </property> -->
    	<!-- </bean> -->
    	<!-- <bean id="indexController" class="controller.IndexController"></bean> -->
    	<mvc:interceptors>
    		<mvc:interceptor>
    			<mvc:mapping path="/index" />
    			<!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 -->
    			<bean class="interceptor.IndexInterceptor" />
    		</mvc:interceptor>
    		<!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 -->
    	</mvc:interceptors>
    </beans>
    
    
  • 相关阅读:
    lucene DocValues——没有看懂
    lucene 索引文件大小分布_tim
    lucene segment会包含所有的索引文件,如tim tip等,可以认为是mini的独立索引
    sphinx源码分析总结
    sphinx索引部分源码续——过程:连接到CSphSource对应的sql数据源,通过fetch row取其中一行,然后解析出field,分词,获得wordhit,最后再加入到CSphSource的Hits里
    shinx索引部分源码分析——过程:连接到CSphSource对应的sql数据源,通过fetch row取其中一行,然后解析出field,分词,获得wordhit,最后再加入到CSphSource的Hits里
    php unset 数组陷阱
    php 引用
    网站开启gzip的方法
    php启用gzip压缩
  • 原文地址:https://www.cnblogs.com/czy16/p/9124797.html
Copyright © 2020-2023  润新知