struts框架--自定义拦截器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangsongll/article/details/79966355

一、创建方式一,实现Interceptor接口

package com.lanou3g.intercept;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

/*
 * 方式一
 * 拦截器
 * 实现Interceptor接口
 */
public class MyIntercept1 implements Interceptor {
       //声明周期方法
    //拦截器声明周期(不能是每个访问都创建一遍拦截器)
    //随着程序大的开始而创建
    //随着程序的结束而销毁
 //初始化
    @Override
    public void init() {
        // TODO Auto-generated method stub

    }

//拦截方法
    @Override
    public String intercept(ActionInvocation arg0) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }

    //销毁方法
    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }
}

二、创建方式二,继承AbstractInterceptorL类

package com.lanou3g.intercept;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

/*
 * 方式一
 * 拦截器
 * 实现Interceptor接口
 */
public class MyIntercept1 implements Interceptor {
       //声明周期方法
    //拦截器声明周期(不能是每个访问都创建一遍拦截器)
    //随着程序大的开始而创建
    //随着程序的结束而销毁
 //初始化
    @Override
    public void init() {
        // TODO Auto-generated method stub

    }

//拦截方法
    @Override
    public String intercept(ActionInvocation arg0) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }

    //销毁方法
    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }
}

三、自定义拦截器方式三–继承方法过滤拦截器MethodFilterInterceptor

//定义的拦截器package com.lanou3g.intercept;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class MyIntercept3  extends MethodFilterInterceptor{

    @Override
    protected String doIntercept(ActionInvocation invocation) throws Exception {
        //前处理
      System.out.println("前处理");
        //放行方法
        //所有拦截器都执行完毕后,
        //会拿到一个字符串这个字符串就是Action类
        //执行完毕后,返回的字符串
    String result = invocation.invoke();
        //后处理

        sout("后处理");
    }
}
测试类
package com.lanou3g.intercept;

import com.opensymphony.xwork2.ActionSupport;
/*
 * 自定义拦截器
 * 可以指定拦截或不拦截那些方法
 * 
 */
public class Demo01 extends ActionSupport {

        public String add() {
            System.out.println("add");
            return  "success";
       }

        public String delete() {
            System.out.println("delete");
            return  "success";
       }

        public String update() {
            System.out.println("update");
            return  "success";
       }

        public String find() {
            System.out.println("find");
            return  "success";
       }

}

//配置strues中的拦截器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.enable.DynamicMethodInvocation" value="true"></constant>
    <package name="inter" namespace="/" extends="struts-default">
    <!-- 注册拦截器 -->
    <interceptors>
      <!--1.注册你自己定义的拦截器  -->
      <interceptor name="MyIntercept3" class="com.lanou3g.intercept.MyIntercept3">  </interceptor>
        <!--2.注册拦截器栈  -->
        <interceptor-stack name="myStack">
            <!--引入拦截器  -->
             <interceptor-ref name="MyIntercept3">

                <!--设置不想拦截的方法 逗号隔开多个不想拦截的方法 
                inexcludeMethods设置要拦截的方法
                excludeMethods设置不拦截的方法
                -->
                  <param name="excludeMethods">add,update</param>

             </interceptor-ref>

            <!--除了应用自己的拦截器,还要使用系统的默认拦截器  -->
               <!--建议:先放自己的拦截器,再放系统的拦截器 
                  自己写的拦截器,可能会用到系统的拦截器封装好的功能
                -->
            <!--引入系统,默认的拦截器栈  -->   
               <interceptor-ref name="defaultStack"></interceptor-ref>
        </interceptor-stack>

    </interceptors>
    <!--设置默认走的拦截器栈是哪个  -->
    <default-interceptor-ref name="myStack"></default-interceptor-ref>

    <!--配置登录Action  -->
        <action name="Demo01_*" class="com.lanou3g.intercept.Demo01" method="{1}">
           <result name="success" >/hello.jsp</result>
      </action>

    </package>
  </struts>

jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello word!!
</body>
</html>
阅读更多

没有更多推荐了,返回首页