|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你精通任何一门语言就最强大。现在来看,java的市场比C#大,C#容易入手,比较简单,java比较难
成绩的提出:
在Struts1框架下,有三品种型的Action把持器,分离是MappingDispatchAction、DispatchAction和Action,他们是顺次承继,终极实行的execute办法。但MappingDispatchAction、DispatchAction的子类中没有execute办法,只要参数指定的详细办法,而这些办法是被MappingDispatchAction、DispatchAction本类的execute办法挪用实行,出格注重的是它是经由过程反射机制来做的(人人能够看看DispatchAction类的源代码),以是这些被反射挪用的办法是不克不及被SpringAOP拦阻的,因而也就没法使用切面编程完成权限把持了。
办理办法:
巴巴活动网经由过程掩盖DelegatingRequestProcessor把持器的processActionPerform办法,是一种幻想的办理计划,但严厉来讲并非AOP切面编程办法。因而笔者仅从进修AOP切面编程的角度来提出本文章,关于有用性笔者尽力保举巴巴活动网的计划。
本办法办理头脑:
1.掩盖execute办法,再仿照DispatchAction反射挪用详细的办法;
2.完成SpringAOP拦阻点,入手下手拦阻设置形貌的局限内的程序;
3.在切进点程序中再次完成反射机制,猎取实行办法上的权限设置信息;
4.依据权限信息决意放行仍是前往。
终极既能够拦阻到execute办法,也能够失掉详细办法中的权限注解设置信息。以本BBS体系为例:
第一步:凡承继于DispatchAction的类都掩盖execute办法:
@Override
publicActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse)throwsException{
returnsuper.execute(mapping,form,request,response);
}
//假设这个action中有一个详细的办法:
@Privilege(userType=PrivilegeType.Admin,message="需办理员权限!")
publicActionForwardaddUI(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse)throwsException{
CategoryFormcategoryForm=(CategoryForm)form;
categoryForm.setTitle("新增分类");
returnmapping.findForward("addUI");
}
第二步:做本人的权限设置:
看下面addUI办法上的注解应当能够了解这些设置
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public@interfacePrivilege{
Stringmessage()default"您没有权限实行该操纵,请登录后重试!";
PrivilegeTypeuserType();
}
<p>
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。 |
|