zoukankan      html  css  js  c++  java
  • Struts2拦截器

    一. 什么是拦截器?

      Struts 2大多数核心功能是通过拦截器实现的,每个拦截器完成某项功能 
    拦截器方法在Action执行之前或者之后执行
    拦截器栈从结构上看,拦截器栈相当于多个拦截器的组合在功能上看,拦截器栈也是拦截器 
    拦截器与过滤器原理很相似
    .

    调用过程(重点)


    拦截器类:

    实现拦截器的三种方法:

    1. 自定义拦截器第一种方法  接口的方法 implements Interceptor

    2. 拦截器继承AbstractInterceptor 源于接口 

    3.第三种拦截器:还可以进行对某一个Action的方法排除

    public class MyTimerInterceptor extends AbstractInterceptor{	
    	public String intercept(ActionInvocation invocation) 
    						throws Exception {
    		//预处理工作
    		long startTime = System.currentTimeMillis();
                  //执行后续拦截器或Action
    		String result = invocation.invoke();
                  //后续处理工作
    	       long execTime = System.currentTimeMillis() - startTime;
                 System.out.println("The interval time is "+execTime+" ms");
    		//返回结果字符串
                  return result;
    	}
    }
    
    struts.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    	<constant name="struts.devMode" value="false"/>
      	<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
      	<constant name="struts.configuration.xml.reload" value="true"/>
    	<package name="default" namespace="/" extends="struts-default">
    	<!-- 1.注册自定义的拦截器 -->
    	<interceptors>
    	<interceptor name="myIntercepetor1" class="com.icss.action.MyInterceptor3"></interceptor>
    	<!-- 2.注册拦截器栈 21 -->
    	<interceptor-stack name="myStack">
    	<interceptor-ref name="myIntercepetor1"><!-- 自己的拦截器 -->
    	<param name="excludeMethods">add,update</param><!-- inexcludeMethods方法不进行拦截 -->
    	</interceptor-ref>
    	<interceptor-ref name="defaultStack"></interceptor-ref>
    	</interceptor-stack>
    	</interceptors>
    	<!-- 3.引用自定义拦截器栈 -->
    	<default-interceptor-ref name="myStack"/>
    	<action name="Demo1Action_*" class="com.icss.action.Demo1Action" method="{1}">
    	<result>/index.jsp</result>
    	</action>
    	</package>
    <include file="com/icss/action/upload/struts.xml"></include>
    
    
    
    </struts>

    3.Struts2默认的拦截器

    params拦截器 
    负责将请求参数设置为Action属性(属性驱动, 对象驱动)
    servletConfig拦截器 
    将源于Servlet API的各种对象注入到Action
     fileUpload拦截器
    对文件上传提供支持
    exception拦截器
    捕获异常,并且将异常映射到用户自定义的错误页面
    validation拦截器 
    调用验证框架进行数据验证 
    workflow拦截器
    调用ActionSupport类的validate(),执行数据验证

    4.Struts2默认的拦截器栈

    struts-default.xml中定义一个defaultStack拦截器栈,并将其指定为默认拦截器
    只要在定义包的过程中继承struts-default包,那么defaultStack将是默认的拦截器


  • 相关阅读:
    Celery异步框架
    彻底理解cookie,session,token
    消息队列
    pip源、搭建虚拟环境、git
    全文检索
    redis高级
    redis基础
    基本数据结构和算法(python代码实现算法)
    MySQL数据库高级
    MySQL数据库进阶
  • 原文地址:https://www.cnblogs.com/jatpeo/p/11767555.html
Copyright © 2011-2022 走看看