- 浏览: 337876 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
pacoson:
感谢楼主。请受小生一拜。
ANT预编译JSP -
zhuhongming123:
一楼的同学Lucene4.* 以上的 已经改成了Numeric ...
Lucene日期排序及组合查询 -
ywjk520:
RangeQuery在哪个包里?
Lucene日期排序及组合查询 -
willwen:
有个疑问,楼主,为何初始化bits 从txt读取已有的网址是直 ...
布隆过滤器(Bloom Filter)之java实例 -
yu_226528:
还不如没有呢
jFreeChart 在jsp页上实现简单的折线图、柱状图
本程序是关于"某考试系统"中的aop应用.说实话,aop在spring应该算是个难点,它主是起到了"代理"的作 用,aop会为你调用的方法的对象生成代理,这个代理是继承调用 MethodInterceptor这个拦截器的对象的,所以,具备原有对象的所有方法与特性.AOP不神秘,它就是EJB的进化,只是EJB需要显式的实现接 口,而AOP不用,它会自动帮你生成代理,来做很多事情,AOP,我觉得它在处理事务 的时候用的比较多所谓声明式的事务就是由此而来.
public class AuthorityInterceptor implements MethodInterceptor
{
public Object invoke(MethodInvocation invocation) throws Throwable
{
HttpServletRequest request = null;
ActionMapping mapping = null;
Object[] args = invocation.getArguments();
for (int i = 0 ; i < args.length ; i++ )
{
if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];
if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];
}
Object admin = request.getSession().getAttribute("admin");
if ( admin != null && ((String)admin).equals("admin"))
{
return invocation.proceed();
}
else
{
request.setAttribute("msg" , "您还没有登录,请先登录");
return mapping.findForward("admin");
}
}
}
该应用是在*.xml中来调用的..(用struts的mvc,然后托管给spring的ioc容器来管理的,配置也是由spring来处理的)
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>/processAddStudent</value>
<value>/listStudent</value>
<value>/delStudent</value>
<value>/processAddTest</value>
<value>/addQuestion</value>
<value>/delQuestion</value>
<value>/processAddQuestion</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>authorityInterceptor</value>
</list>
</property>
</bean>
<bean id="authorityInterceptor" class="org.yeeku.action.authority.AuthorityInterceptor"/>
//解释后的代码
public class AuthorityInterceptor implements MethodInterceptor
{
public Object invoke(MethodInvocation invocation) throws Throwable
{
HttpServletRequest request = null;
ActionMapping mapping = null;
-----------注解1开始
通过invocation.getArguments()可以获取代理对象的参数
代理的参数是ActionMapping, ActionForm ,HttpServletRequest , HttpServletResponse 四个
只不过,这里根据实际情况,我们只需要使用HttpServletRequest,ActionMapping罢了
因为这里你要通过request获取session和通过mapping跳转页面
因为 Object[] args = invocation.getArguments(); 规定,返回的必须是一个数组
所以,没办法,只能迭代把要用的找出来
而我们在XML配置的对象都是Struts Action
每一个Struts Action方法都形如这样,
public ActionForward addBlog(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
所以,通过
for (int i = 0 ; i < args.length ; i++ )
{
if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args [i];
if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];
}
可以从那里迭代出来
你既然都有调用 Struts 了, mapping, form, request, response 肯定都已经注入了,咱们运行Struts, 是在 mapping, form, request,
response 都具备的情况下,使用的
所以, Object[] args = invocation.getArguments();
得到应该对象的所有参数是完全可以的
--------注解1结束
Object[] args = invocation.getArguments();
---------加这两句是因为要通过request获取session 并且在判断没有权限的时候要通过mapping跳转页面
for (int i = 0 ; i < args.length ; i++ )
{
if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];
if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];
}
Object admin = request.getSession().getAttribute("admin");
----------
如果权限有问题,
那么invocation.procceed() 就不会执行,意味着你的那个 Action 对象**方法也不会执行, 但此时
mapping 是存在的, 来一下findForward("admin");
----------
if ( admin != null && ((String)admin).equals("admin"))
{
return invocation.proceed();
}
else
{
request.setAttribute("msg" , "您还没有登录,请先登录");
return mapping.findForward("admin");
}
}
}
发表评论
-
反射实现 AOP 动态代理模式(2)
2010-08-05 12:40 876上面类中出现的Logger类和Level枚举还是和上一上例子的 ... -
反射实现 AOP 动态代理模式(1)
2010-08-05 12:37 846其实AOP的意思就是面向切面编程.OO注重的是我们解决问题的方 ... -
Spring事务配置的五种方式
2010-06-25 16:51 703前段时间对Spring的事务配置做了比较深入的研究,在此之间对 ... -
使用 Spring 2.5 注释驱动的 IoC 功能(2)
2010-06-25 16:37 868使用 JSR-250 的注释 Sprin ... -
使用 Spring 2.5 注释驱动的 IoC 功能(1)
2010-06-25 16:36 678概述 注释配置相对于 XML 配置具有很多的优势: 它可以 ... -
spring事务配置方法(BeanNameAutoProxyCreator)
2010-05-11 15:18 1002采用这种配置策略,完全可以避免增量式配置,所有的事务代理由系统 ... -
spring事务配置方法(TransactionProxyFactoryBean)
2010-05-11 15:10 1050采用这种方式的配置时候,配置文件的增加非常快,每个bean有需 ... -
spring事务配置方法(TransactionProxyFactoryBean继承)
2010-05-11 15:07 1083大部分情况下,每个事务代理的事务属性大同小异,事务代理的实现类 ... -
spring事务配置方法(BeanNameAutoProxyCreator)
2010-05-11 15:05 1048采用这种配置策略,完全可以避免增量式配置,所有的事务代理由系统 ... -
spring声明式事务
2010-05-11 14:26 808Spring中几种常见的事务配置,是Aop和Ioc的充分体现以 ... -
Spring AOP 入门实例
2010-05-01 19:18 820AOP 面向切面,可以让我们在不修改业务代码的前提下,在业务代 ... -
使用动态代理实现简单AOP
2010-05-01 19:02 745Spring默认使用JDK动态代理来实现AOP,如果业务对象没 ... -
Sping acegi 配置文件
2010-05-01 18:23 923applicationContext-acegi-securi ... -
Spring的BeanFactory
2010-05-01 18:17 741一、Spring装配Bean的过程 1. 实例化; 2. 设置 ... -
使用Spring方法注入协调不同步的bean
2010-05-01 18:00 1149<?xml version="1.0" ... -
几种加载Spring的配置文件的方式
2010-05-01 16:49 1247package com.liu.test; pu ... -
Quartz在Spring中动态设置cronExpression
2009-11-20 15:26 1176什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什 ... -
使用Spring发邮件
2009-11-07 14:15 934关于Spring的邮件发送的功能演示: (我把程序中一些敏感 ... -
Spring中的Quartz配置
2009-11-07 10:16 841Quartz是一个强大的企业级任务调度框架,Spring中继承 ... -
Spring ~IOC Annotations
2009-10-29 18:49 10091.1 零配置使用场合 IOC Annotations ...
相关推荐
Spring AOP 拦截器 Advisor Spring AOP 拦截器 Advisor
struts2+spring2.5用AOP记录操作日志,带自定义参数aop的例子
springboot spring aop 拦截器 注解方式实现脱敏(涉及到:pom.xml -->application.properties --->启动类-->拦截器)
基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop
spring aop切面拦截指定类和方法实现流程日志跟踪 一般情况下,在不侵入业务代码的情况下,需要做流程日志跟踪是比较合理的 采用springaop切面思想
struts2+spring4+mybatis3,登录jquery ajax,struts拦截器,springAOP的例子。带部分注释。
ssh2登陆+spring aop做拦截
本篇文章主要介绍了Java之Spring AOP 实现用户权限验证,用户登录、权限管理这些是必不可少的业务逻辑,具有一定的参考价值,有兴趣的可以了解一下。
演示了使用spring aop拦截方法进行数据验证,并结合注解实现
项目中含有一整个springboot实现aop的功能,在拦截的方法形式上有两种一种是通过切点设置为拦截某个包路径下面的类中的所有方法;还有一种是基于某个自定义注解的.
通过修改相关配置文件位置,和导入的架包,终于修复了一些错误,实现了spring和struts2的完美结合,并使用了spring的aop和日志功能,本人亲自测试过,没问题,方便下载使用
使用SpringAop使用Oracle数据权限控制
springaop拦截controller日志
spring aop 拦截 实例spring aop 拦截 实例spring aop 拦截 实例
死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序
spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop
本篇文章主要介绍了详解Spring AOP 拦截器的基本实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
spring aop jar 包
spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...
spring aop 拦截实例,下载下来直接就可以用了,很好很方便。