struts2学习-简单的拦截器

struts2学习-简单的拦截器

接口

package com.struts2.interceptorDemo;

/**
 * @author Administrator
 *
 */
public interface Dog {
    //两个方法的声明
    public void info();
    public void run();
}

接口的实现类

package com.struts2.interceptorDemo;

/**
 * @author Administrator
 *
 */
public class DogImpl implements Dog{
    public void info() {
        System.out.println("INFO");
    }

    public void run() {
        System.out.println("RUN");
    }
}

拦截器的定义

package com.struts2.interceptorDemo;

public class DogInterceptor {
    //第一个拦截器
    public void method1(){
        System.out.println("模拟方法1");
    }
    //第二个拦截器
    public void method2(){
        System.out.println("模拟方法2");
    }
}

代理工厂

package com.struts2.interceptorDemo;

import java.lang.reflect.Proxy;

public class MyProxyFactory {
    public static Object getProxy(Object o){
        ProxyHandle handle=new ProxyHandle();
        handle.setTarget(o);
        return Proxy.newProxyInstance(DogImpl.class.getClassLoader(), o.getClass().getInterfaces(), handle);
    }
}

handle类

package com.struts2.interceptorDemo;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class ProxyHandle implements InvocationHandler {
    private Object target;
    DogInterceptor dogInterceptor=new DogInterceptor();
    public Object invoke(Object proxy, Method method, Object[] args)
    throws Throwable {
        Object result=null;
        if(method.getName().equals("INFO")){
            dogInterceptor.method1();
            result=method.invoke(target, args);
            dogInterceptor.method2();
        }else{
            result=method.invoke(target, args);
        }
        return result;
    }
    public void setTarget(Object o) {
        this.target = o;
    }
}

测试类

package com.struts2.interceptorDemo;

public class TestDog {
    /**
     * @param args
     */
    public static void main(String[] args) {
        //创建一个实例
        Dog dogProxy=new DogImpl();
        Dog dog=null;
        Object proxy=MyProxyFactory.getProxy(dogProxy);
        if(proxy instanceof Dog){
            dog=(Dog)proxy;
        }
        dog.info();
        dog.run();
    }
}

Read more

超棒的雅思资源!

超棒的雅思资源!

雅思真题材料地址: https://github.com/zeeklog/IETLS 感谢所有人。材料来自:@shah0150 & @kbtxwer * 超棒的雅思资源 * 雅思简介 * 听力 * 阅读 * 写作 * 口语 * 词汇 * 其他 * YouTube 频道 * [播客] (#podcasts) 雅思简介 * 什么是雅思 - 了解什么是雅思 听力 * 高级听力 * 雅思官方网站 * 考试英语 * 英国广播公司节目 * 乔治梅森大学口音学习网站 - 学习不同的口音 * 英国广播公司播客 * 英国文化协会听力练习 阅读 * 雅思提升阅读 写作 * 雅思提升写作 * 雅思从 6 分到 9 分 * 迷你雅思 口语 * Verbling 提供在线英语家教服务

By Ne0inhk
🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

是一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器。 集成了 SearXNG AI 搜索、开发工具集合、 市面上最流行的 AI 工具门户,以及代码编写和桌面快捷工具等功能, 通过模块化的 Monorepo 架构,提供轻量级、可扩展且高效的桌面体验, 助力 AI 驱动的日常工作流程。

By Ne0inhk