因为巴巴运动网的权限设计模块对我来说,可以实现,打算好好整理一下思路,面试时说不定还能起点作用,看了两遍,自己总结下:
权限定义/权限组(角色)模块
1.对系统的所有功能定义相应的权限
2.由网管针对不同部门不同员工分配权限组(角色),在分配角色时,
可以选择该角色具有的权限
3.权限拦截模块
具体步骤:
1.设计权限实体
联合主键(SystemPrivilegePK),该类有module和privilage两个属性
2.初始化权限
3.设计权限组(角色)PrivilegeGroup实体,如果我们希望通过修改权限组添加或删除权限,那么权限和角色之间的多对多关系的维护端由角色
来维护
private String groupid;
private String name;
private Set<SystemPrivilege> privileges = new
HashSet<SystemPrivilege>();
同时加上到数据库表的映射
当然由于权限和角色之间的多对多关系是双向关联,所以要在SystemPrivilege实体bean中加上和PrivilegeGroup实体Bean
之间的映射
4.实现权限组的添删改
路径:/control/
新建接口PrivilegeGroupService,继承Dao<PrivilegeGroupService>,
新建PrivilegeGroupService,继承DaoSupport
当然这些Bean都需要交给Spring管理,加上相应的注解即可
5.实现权限组的分页,这个简单
6.实现添加权限,分页列表上的Action,新建Action,名称为PrivilegeGroupManageAction,
①.第一个方法是AddUI,主要是显示页面
接下来就是增删该操作了(...)
7.权限做完后要新建一个Action用于完成SystemPrivilege,权限组,超级管理员的初始化,初始化完成后点击“确定”,进入登陆页面
权限模块的核心: 权限拦截模块
1.员工要访问control开头的路径,必须登陆,即粗粒度的权限拦截,这是通过Fileter实现的,这里我们定义为
PrivilegeFilter,先从session范围中得到employee对象,如果对象为空,就浏览器重定向到登陆界面,,如果登陆了,就
chain.doFilter(request,response);之后在web.xml配置,这样就实现粗粒度的权限控制了3
2.对于界面上的某些功能,不是每一个登陆到系统的员工对页面的功能都有操作权限,这就是细粒度的权限拦截
关键是怎样细粒度的权限控制
怎样实现细粒度的权限控制?
每点击页面上的按钮,都会提交给相应的Action处理,细粒度的权限拦截就是对Action拦截,在不修改原代码情况下,增加拦截代码,使用的是AOP
技术
每一个功能Action都有相应的方法处理,我们用JDK5中的注解为Action中的方法注解相应的权限,因为我们有时会修改方法名称,用注解维护起
来比较方便比如:
@Permission(module="order",privilege="modify")
public ActionForward OrderModify(){}
实现过程:
①.新建注解Permission,
@Retention(PetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Permission{
String module();
String privilege();
}
为Action中的方法,加上注解
只有拦截到Action中的这个方法,才能实现权限拦截,现在我们的Action已经交给Spring管理,所以我们可以使用Spring的AOP技术进
行权限拦截,有必要复习一下AOP的知识:
在Action类上加一个注解如下:@Aspect,当然要使这个注解起作用,我们必须在Spring的配置文件里配置:
<aop:aspectj-autoproxy> <!--注解解析器-->
要实现切面编程,抽象过程体现在代码上, 就是一个采用类来描述,要是这个类起作用,我们必须要把它交给Spring管理,很郁闷
@Aspect@Component
public class Interceptor{
@Pointcut("exception(org.apache.struts.action.ActionForward
cn.itcast.web.action.. * *(org.apache.struts.actionMapping,...))")
private void actionMethod(){}
@Around("actionMethod")
public Object interceptor(ProceedingJoinPoint pjp) throw Throwable{
System.out.println("拦截到了"+pjp.getSignature().getName()+"方法");
return pjp.proceed();
}
}
注意:
通知:
前置通知,在拦截的方法前加通知,这个通知执行后,被拦截的方法仍然会执行。
所以使用环绕通知,但是这样的拦截只能是拦截Action实现的,他不能拦截继承自DispatchAction
原因:Spring的动态代理技术的问题
Spring不能对通过反射调用的方法应用上通知(Advice)
当Spring发现我们的继承的DispatchAction的那个类符合他拦截的要求,就会生成一个代理对象,因为无接口,默认使用cglib为这个
Action生成代理对象,根据cglib生成代理对象的特点,继承目标类,并且重写所有非final的方法来实现
注:spring只会为本类定义的方法应用通知
本文转载:http://wxuelai.blog.sohu.com/147684082.html
分享到:
相关推荐
【巴巴运动网源码(传智播客)】是一套基于Java编程语言开发的网站源码,主要用于构建体育运动类的在线服务平台。这套源码在IT教育领域,特别是由传智播客这样的知名教育机构中被用作教学案例,帮助学员理解和实践...
【标题】"传智播客巴巴运动网源码及在线支付源码"涉及的主要知识点是JavaWeb开发和在线支付系统的实现。这个资源包含了两个部分,一个是"传智播客--网上支付源码.rar",另一个是"巴巴运动网源码.zip"。下面将对这两...
【标题】"传智播客巴巴运动网源码"是一个关于Web开发的资源,主要包含了一个名为"Babasport"的在线运动商品销售网站的源代码。这个源码可能用于教学、研究或自定义开发用途,让学习者或开发者能够深入了解一个实际...
本项目“传智播客巴巴运动网”中使用的jar文件集合,显然是该项目运行所必需的依赖库。这些库包含了各种功能的实现,如网络通信、数据处理、UI组件等,对于理解和构建该项目至关重要。 首先,我们需要理解jar文件的...
【标题】"传智播客巴巴运动网"项目是一个基于Struts2框架开发的网站应用实例,它展示了如何使用Struts2技术来构建一个完整的Web应用程序。Struts2是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它的...
在这个“05_传智播客巴巴运动网_订单的财务_仓库_配送处理分析”主题中,我们将深入探讨这些核心领域的功能和重要性。 首先,订单处理是电商平台的第一步,它涵盖了从用户下单到订单确认的整个流程。这包括用户在...
"10_传智播客巴巴运动网_权限管理模块分析"这一主题聚焦于如何设计和实现一个有效的权限管理系统。这个主题可能涵盖以下几个关键知识点: 1. **权限模型**:权限模型是权限管理的基础,通常包括角色(Role)、资源...
传智播客巴巴运动
【传智播客巴巴运动网后台管理】是一个基于Java技术栈的后台管理系统,它采用了经典的SSH(Struts2、Hibernate、Spring)框架进行开发。SSH是Java Web开发中广泛使用的一套集成框架,能有效降低各组件之间的耦合度,...
01_传智播客巴巴运动网_整体项目介绍与产品展示模块的分析
总结来说,"07_传智播客巴巴运动网_用户管理模块分析"课程将涵盖用户注册、登录、权限控制、信息管理等多个方面,利用JSP技术实现一个完整的用户管理系统。通过学习,开发者能够掌握如何构建安全、高效且用户体验...
总结来说,"04_传智播客巴巴运动网_订单的后台确认处理分析"可能涵盖了以上这些核心知识点,帮助学习者理解和掌握电商系统后台订单处理的关键技术和流程。通过这个课程,学员能深入理解电商后台的运作机制,提升自己...
标题 "51_传智播客巴巴运动网_完成上传文件的分页列表显示" 描述了一种在网站上实现文件上传后,通过分页显示上传文件列表的技术。这一功能常见于各种在线平台,用于管理和展示用户上传的大量数据。在IT行业中,这...
该标题"62_传智播客巴巴运动网_整齐排列类别选择界面中的类别"可能指的是一个教学视频或者课程编号为62的项目,来源于传智播客这一教育机构,主题涉及巴巴运动网的一个界面设计。在这个项目中,重点是创建一个类别...
本教程“54_传智播客巴巴运动网_产品管理模块的详细分析与设计”显然会深入探讨这一主题,特别强调了使用JSP技术进行实现。 首先,我们需要了解JSP(JavaServer Pages)是Java平台上的一种动态网页技术,它允许开发...
在本课程"03_传智播客巴巴运动网"中,主要讲解的是用户前台订单管理和付款模块的分析。这个主题对于理解电商网站的核心功能至关重要,因为这些是直接与用户体验和交易流程相关的部分。我们将深入探讨以下几个关键...
本话题主要关注"59_传智播客巴巴运动网_测试产品的分页列表功能",这显然涉及到一个具体的教学或项目实践,目标是教会学员如何实现和测试网页应用中的分页功能。 首先,我们来理解分页列表的基本概念。在网页上,...
总结起来,"58_传智播客巴巴运动网_完成产品业务Bean与Web层分页列表"这个项目主要涵盖了以下几个核心知识点: 1. JavaBeans设计模式,用于封装业务逻辑和数据。 2. JSP页面作为视图层,展示分页列表,使用EL和JSTL...
在本项目"73_传智播客巴巴运动网_修正产品模块的一些bug"中,主要涉及的是对产品模块的错误修复,这是一个典型的Web开发任务,重点在于改善系统的稳定性和用户体验。在这个过程中,开发者可能面临的问题包括但不限于...
总结来说,"74_传智播客巴巴运动网_完成产品的样式列表显示"课程涵盖了JSP的基础知识,包括JSP页面结构、JavaBeans、JSTL标签库的使用,以及与数据库的交互、前端样式设计和简单的前端交互技术。学习者将通过此课程...