搜索
首页 电脑/网络 软件 系统软件

如何在SSH集成框架下真正实现SpringAOP拦截功能?

如何在SSH集成框架下真正实现SpringAOP拦截功能?

全部回答

2018-03-31

44 0

    巴巴运动网通过覆盖DelegatingRequestProcessor控制器的processActionPerform方法,是一种理想的解决方案,但严格来说并不是AOP切面编程方法。
  因此笔者仅从学习AOP切面编程的角度来提出本文章,对于实用性笔者极力推荐巴巴运动网的方案。   本方法解决思想: 1。覆盖execute方法,再模仿DispatchAction反射调用具体的方法; 2。
  实现Spring AOP拦截点,开始拦截配置描述的范围内的程序; 3。在切入点程序中再次实现反射机制,获取执行方法上的权限配置信息; 4。根据权限信息决定放行还是返回。   最终既可以拦截到execute方法,也可以得到具体方法中的权限注解配置信息。
  以本BBS系统为例: 第一步:凡继承于DispatchAction的类都覆盖execute方法: @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return super。
    execute(mapping, form, request, response); } //假如这个action中有一个具体的方法: @Privilege(userType=PrivilegeType。
  Admin,message="需管理员权限!") public ActionForward addUI(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { CategoryForm categoryForm = (CategoryForm)form; categoryForm。
    setTitle("新增分类"); return mapping。findForward("addUI"); } 第二步:做自己的权限配置: 看上面addUI方法上的注解应该可以理解这些配置 @Retention(RetentionPolicy。
  RUNTIME) @Target(ElementType。  METHOD) public @interface Privilege { String message() default "您没有权限执行该操作,请登录后重试!"; PrivilegeType userType(); } 配置中有个字字段是枚举,源码如下: public enum PrivilegeType { LoginUser{ public String getName(){ return "所有登录用户"; } public int getValue(){ return 1; } }, LoginUserSelf{ public String getName(){ return "登录用户自己"; } public int getValue(){ return 2; } }, Moderator{ public String getName(){ return "版主"; } public int getValue(){ return 3; } }, Admin{ public String getName(){ return "管理员"; } public int getValue(){ return 4; } }; public abstract String getName(); public abstract int getValue(); }。
    。

类似问题换一批

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
系统软件
程序设计
电脑装机
操作系统/系统故障
硬件
笔记本电脑
百度
互联网
反病毒
软件
软件
系统软件
多媒体软件
办公软件
网络软件
图像处理软件
系统软件
系统软件
举报
举报原因(必选):
取消确定举报