通过配置spring aop拦截器和advice可以实现对action下面的所有方面进行拦截,假如我们要拦截某个具体的方法,却在配置切入点的时候不成功(我没佩成功!),于是换了2个想法:
1:每次调用的时候携带action方法参数:如:login.action?method=xxxxx;用
String method=request.getParameter("method");获取method参数
2:例外MVC实现的时候不会全部带上method的参数,例如:login.action,这样不带参数的话,Action里面肯定有一个方法叫login的,会默认寻找。(我的理解!),既然这样,我们可以把login 截取下来,也是action要调用的方法!(想了下,这里可能不会唯一,因为可以带参数!)
而且action里面的方法名都是唯一的。这样我们通过数据库设置这些方法的使用权限,然后实现环绕通知来控制访问权限。
希望高手指点指点。不知可行不可行!
如有实践权限控制的,恳请发一份例子yankang.nd@163.com! 谢谢!
笔记:
生成代理类的代码:
Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
package net.kingbit.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
/**
*
* @author yankang <yankang.nd@163.com>
*/
public class DynamicProxy implements InvocationHandler {
private Object proxyObj;
public DynamicProxy(Object object)
{
this.proxyObj=object;
}
public static Object factory(Object object)
{
Class cls=object.getClass();
System.out.println("cls name:"+cls.getName());
return Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(),new DynamicProxy(object));
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("DynamicProxy invoke!");
System.out.println("method name:"+method.getName());
System.out.println("proxy class:"+proxy.getClass());
if(args!=null)
{
for(int i=0;i<args.length;i++)
{
System.out.println("args["+i+"] :"+args[i]);
}
}
Object o=method.invoke(proxyObj, args);//java反射调用代理目标类的方法
return o;
}
public static void main(String[] args)
{
List<String> v = null;
// //DynamicProxy dp=new DynamicProxy(new Vector());
v=(List<String>) DynamicProxy.factory(new ArrayList());
//v.isEmpty();
v.add("bbbb");
// Computer cb=null;
// cb= (Computer) DynamicProxy.factory(new ComputerBuy());
// cb.buy();
}
}
分享到:
相关推荐
nginx配置中找到对http method的所有制约
METHOD
Anonymous MethodAnonymous Method
SystemC用Method方法实现交通灯控制
3C Method3C Method3C Method3C Method3C Method3C Method
介绍个技巧,最好的式就是提出具体的需求,然后它跟其他的解决法做较。所以,先来看看我们的需求:对 App 的户为进追踪和分析。简单说,就是当户看到某个 View
adaptive finite element method adaptive finite element method adaptive finite element method
博文链接:https://snz.iteye.com/blog/229915
php 各种Method转发,包含了 PATCH DELETE PUT 等几种方式的转发
upwind method for DFL
Formal method for formal design
lyapunov s direct method
The Scaled Boundary Finite Element Method 一本讲述边界元方法的图书,内容很新颖,很具有参考价值, 是djvu文件
Louvain method
权限管理分为四个模块: 1、模块的权限:对应的所有调用的method(action.method) ...4、个人权限 = 职称权限 + N个action的权限+N个method权限 权限的作用范围:模块的权限 的权限 职称权限 个人权限
nodal discontinue Galaekin method
The Probabilistic Method
- 需要手动设置SixaxisPairTool和一个迷你USB电缆与PC控制器配对。 - 强烈建议您使用原始控制器。因为修改过的控制器与此应用程序因为兼容问题可能造成无法正常工作。 - 使用前请务必仔细阅读帮助说明 软件特性: - ...
The Finite Volume Method in Computational Fluid Dynamics,计算流体方面的巨著,值得一读!
A multistage adaptive thresholding method,通俗易懂的算法