Struts2 차단기 기본 실현 원리
2143 단어 Java 기본 사항Struts2
차단기 클래스는 일반적인 클래스입니다. 두 가지 방법이 있습니다. 하나는 차단된 대상이 실행하기 전에 무엇을 하는지, 다른 하나는 차단된 대상이 실행하기 전에 무엇을 하는지 정의하는 것입니다.
/*
*
*/
public class Interceptor {
public void doBefore(){
System.out.println("do before");
}
public void doAfter(){
System.out.println("do after");
}
}
2. 목표 클래스 정의
대상 클래스는 차단 처리된 객체 클래스입니다.
쓰다
/**
* 대상 클래스 인터페이스 정의
* @author JyeChou
*
*/
public interface TargetInterface {
public void doSomething();
}
/**
* 대상 클래스
* @author JyeChou
*
*/
public class Target implements TargetInterface {
@Override
public void doSomething() {
System.out.println("Do something!");
}
}
3. 프로세서 클래스 정의
프로세서 클래스는 언제, 목표 클래스의 어떤 방법을 차단 처리할지 정의합니다.
/**
*
* @author JyeChou
*
*/
public class MyHandler implements InvocationHandler {
private Object object;
private Interceptor interceptor = new Interceptor();
public void setObject(Object object){
this.object = object;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result = null;
interceptor.doBefore();
result = method.invoke(object, args);
interceptor.doAfter();
return result;
}
}
4. 프록시 클래스 정의
반사 메커니즘을 통해 목표 대상에 대해 동적 에이전트를 진행하다.
/**
*
* @author JyeChou
*
*/
public class MyProxy {
// , Object
public Object getProxy(Object object){
MyHandler myHandler = new MyHandler();
myHandler.setObject(object);
return Proxy.newProxyInstance(Target.class.getClassLoader(), object.getClass().getInterfaces(), myHandler);
}
}
5. 대리 공장류를 사용하여 대상 대리 실현
/**
*
* @author JyeChou
*
*/
public class Client {
public static void main(String[] args) {
//
TargetInterface target = new Target();
MyProxy myProxy = new MyProxy();//
//
TargetInterface proxy = (TargetInterface) myProxy.getProxy(target);
//
proxy.doSomething();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Struts2 $,#,% 상세 정보 및 인스턴스 코드각각 application,session,request,servletContext,valueStack에person 대상을 저장하면 JSP에서 다음과 같이 얻을 수 있습니다. 위 코드에서 얻은 개인 정보 시xiaomi...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.