zoukankan      html  css  js  c++  java
  • 第二讲 struts的拦截器

    浅谈downpour

      说起这个downpour,它就是一个拦截器的aop,它本身是一段代码,可以通过定义"切入点",来指定拦截器的代码在"切入点"的前后执行,从而起到拦截器的作用(

    问题集中解决,避免重复代码。这也是我们编程的重要思想),

    public abstract class AroundInterceptor extends AbstractInterceptor {  
          
        /* (non-Javadoc) 
         * @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation) 
         */  
        @Override  
        public String intercept(ActionInvocation invocation) throws Exception {  
            String result = null;  
            before(invocation);  
            // 调用下一个拦截器,如果拦截器不存在,则执行Action  
            result = invocation.invoke();  
            after(invocation, result);  
      
            return result;  
        }  
          
        public abstract void before(ActionInvocation invocation) throws Exception;  
      
        public abstract void after(ActionInvocation invocation, String resultCode) throws Exception;  
      
    }  

    拦截器与过滤器的异同?

    相同点:都可以在用户访问之前,执行一系列操作。

    不同点:

    1. Filter过滤器可以用来过滤(所有的请求(jsp\servlet\action等));拦截器只能用来拦截action;

    2. Filter只能拦截到请求,不能具体到某一个方法。拦截器可以具体到方法名。

     

    如何使用拦截器?

     

    步骤:
    创建一个拦截器的类(必须继承:AbstractInterceptor(没有具体到方法)、MethodFilterInterceptor(可以具体到方法))。
    重写系统中的方法。
    在struts.xml中配置拦截器。
    <interceptors>
         <interceptor name=”拦截器名” class=”类” />
    </interceptors>
    注:必须是package中的第一行
    在需要拦截的action中引用指定的拦截器名。
    <action ………>
          <interceptor-ref name=”拦截器名” />
    </action>

     

    注:如果用户自定义了拦截器,系统将不会默认执行默认拦截操作。

     

    <!-- 配置好一个拦截器 -->
    <interceptors>
        <interceptor name="firstInter" class="com.zuxia.interceptor.FirstInterceptor" />
        <interceptor name="secondInter" class="com.zuxia.interceptor.SecondMethodInterceptor">                
            <param name="includeMethods">execute,add</param>
      </interceptor>
            
        <!-- 配置一个拦截器的链,并且设置为默认 -->
        <interceptor-stack name="myDefaultStack">
            <interceptor-ref name="secondInter" />
            <interceptor-ref name="defaultStack" />
        </interceptor-stack>
    </interceptors>
            
    <!-- 设置系统默认引用的拦截器 -->
    <default-interceptor-ref name="myDefaultStack" />

     

     

     

     

  • 相关阅读:
    剑指offer[30]——连续子数组的最大和
    移动端数据爬取
    Scrapy框架基础应用和持久化存储
    爬虫的验证码处理,图片懒加载,selenium和 PhantomJS,requests模块的session,线程池
    爬虫之数据解析(bs4,Xpath)
    爬虫之jupyter的使用,requests模块,正则表达式
    git的分支,多人协作,标签管理
    git 的基础
    利用python操作excel表
    nginx基于uwsgi部署Django
  • 原文地址:https://www.cnblogs.com/lljj/p/Struts02.html
Copyright © 2011-2022 走看看