AOP在Spring中占有很重要的地位,做了一个例子是利用AOP来做一个登陆的身份验证。。希望能对大家有所帮助,使用了AOP可以在不破坏你的代码的前提下帮你完成验证功能。。
转一点AOP的知识:
程序代码:
1、Spring只支持方法拦截,也就是说,只能在方法的前后进行拦截,而不能在属性前后进行拦截。
2、Spring支持四种拦截类型:目标方法调用前(before),目标方法调用后(after),目标方法调用前后(around),以及目标方法抛出异常(throw)。
3、前置拦截的类必须实现MethodBeforeAdvice接口,实现其中的before方法。
4、后置拦截的类必须实现AfterReturningAdvice接口,实现其中的afterReturning方法。
5、前后拦截的类必须实现MethodInterceptor接口,实现其中的invoke方法。前后拦截是唯一可以控制目标方法是否被真正调用的拦截类型,也可以控制返回对象。而前置拦截或后置拦截不能控制,它们不能印象目标方法的调用和返回。
以上可以看出我们要选用实现MethodInterceptor接口的方法来完成这个功能。
代码如下:
接口类的定义:
程序代码:
package com.dragon.study;
public interface ILogin {
public void login(String name);
}
接口实现类的定义:
程序代码:
package com.dragon.study.Impl;
import com.dragon.study.ILogin;
public class LoginImpl implements ILogin {
/**
* Login
*/
public void login(String name) {
System.out.println("欢迎 " + name + "登陆!");
}
}
最重要的拦截器的定义:
程序代码:
package com.dragon.Advice;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class LoginInterceptor implements MethodInterceptor {
/**
* Interceptor
*/
public Object invoke(MethodInvocation arg0) throws Throwable {
String name = (String)arg0.getArguments()[0];
if (name.equals("flash")) {
System.out.println("这才是真正的用户! ");
return arg0.proceed();
} else {
System.out.println("非法的用户~~~ ");
return null;
}
}
}
ApplicationContext.XML的定义:
<beans>
<bean id="loginInterceptor" class="com.dragon.Advice.LoginInterceptor"></bean>
<bean id="loginTarget" class="com.dragon.study.Impl.LoginImpl"></bean>
<bean id="login" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.dragon.study.ILogin</value>
</property>
<property name="interceptorNames">
<list>
<value>loginInterceptor</value>
</list>
</property>
<property name="target">
<ref bean="loginTarget"/>
</property>
</bean>
</beans>
OK,以上就是所有代码,下面做一个测试类:
Test类定义:
程序代码:
package com;
import Java.io.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXMLApplicationContext;
import com.dragon.study.ILogin;
public class Test {
public static void main(String[] args) throws IOException {
ApplicationContext ctx = new FileSystemXmlApplicationContext("applicationContext.XML");
ILogin login = (ILogin)ctx.getBean("login");
login.login("flash"); //用户为flash是正确用户,否则是错误的
}
}
分享到:
相关推荐
Spring Boot AOP权限控制模块开发,利用AOP功能完成属于自己的权限模块开发
可扩展性强:使用 Spring AOP 进行方法耗时监测,可以方便的对其他的切面进行扩展,例如:日志、异常处理、权限控制等切面。 4. 提高系统性能:通过对系统中的方法进行耗时监测,可以及时发现系统中的性能瓶颈,...
在web应用中,有些功能是需要用户登录之后才能够使用的。如果web层我们使用的是Struts,那么在执行某些Action的时候,就需要对用户是否登录...利用Spring 的AOP,我们完全可以将验证用户是否登录抽取出来做成“切面”。
SpringSecurity,这是一种基于Spring AOP和Servlet过滤器的安全框架。它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和授权。在Spring Framework基础上,Spring Security充分利用了依赖注入...
之后就可以在Controller上面利用注解比如: @RequiresPermissions(value = { "user:select" }) 当然也可以利用Spring的aop也是一样呢 假如发现问题可以联系本人QQ134266212 或者邮箱noatnu@163.com
2、轻松实现如权限拦截、运行期监控等功能:利用Spring提供了AOP技术。 3、 提供单例模式支持,开发人员不再需要自己编写实现代码 4、Spring提供了众多服务。如:事务管理,编程人员不再需要手工控制事务,也不需...
利用了Spring AOP机制解决了Ajax应用的权限检查问题,应用权限检查推迟到业务逻辑层方法中进行。当权限检查失败时候,会抛出一个自己定义的AuctionException异常。 此外,还利用到了Spring的任务调度和邮件支持。当...
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等 7.spring属于低侵入...
旅游后台管理系统 1、项目环境 IDEA 2018.2 Mysql 5.5.27 jdk1.8 tomcat7 2、如何启动 1、在启动位置,配置maven,模块为ssm_web,使用tomcat7:run启动 2、网址: 用户:admin 密码:123
利用相应的信息技术以及互联网技术来协调企业与顾客间在销售、营销和服务上的交互,从而提升其管理方式,向客户提供创新式的个性化的客户交互和服务,系统提供营销管理、客户管理、用户管理、角色管理、模块管理、...
(4)容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能。 (5)容器提供的众多辅作类,使用这些类能够加快应用的开发,如:JdbcTemplate、HibernateTemplate. (6)对主流的应用框架提供了集成支持...
Spring(IOC DI AOP 声明式事务处理) SpringMVC(支持Restful风格) Hibernate Validator(参数校验) Mybatis(最少配置方案) shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的权限动态...
用springboot集成security,做用户验证和权限管理;JWT认证token;利用Aop做操作日志; 用mybatisplus 实现代码自动生成工具类。用swagger实现接口文档
在该系统中,实现敏感词过滤时用到了字典树算法,在实现热点排序的时候用到了权值计算,同时利用Redis缓存实现点赞和关注,利用Kafka实现系统通知,并且采用AOP统一进行了状态管理,异常处理,而Spring Security ...
- Spring(IOC DI AOP 声明式事务处理) - SpringMVC(支持Restful风格) - Hibernate Validator(参数校验) - Mybatis(最少配置方案) - shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的...
Spring:一个开源的轻量级Java SE/Java EE全功能栈框架,提供了IoC容器和AOP功能,可以管理对象的生命周期和声明式事务。 Spring MVC:作为Spring的一个模块,提供了构建Web应用程序的MVC(模型-视图-控制器)设计...
Spring(IOC DI AOP 声明式事务处理) SpringMVC(支持Restful风格) Hibernate Validator(参数校验) Mybatis(最少配置方案) shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的...
Spring(IOC DI AOP 声明式事务处理) SpringMVC(支持Restful风格) Hibernate Validator(参数校验) Mybatis(最少配置方案) shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的权限动态...
该系统利用Web技术和先进的数据库管理技术,采用SSM(Spring+SpringMVC+MyBatis)框架搭建,并使用MySQL数据库进行数据存储和管理。 该系统的主要目标是提供一个集中管理和发布工厂新闻的平台,方便工厂内部员工和...
数据访问层为了将SQL语句从程序代码中彻底分离,降低耦合度,使用了Mybatis持久层框架,并利用spring的IOC容器管理三层结构的对象及其依赖关系。项目中配置了登录拦截器,需要通过登录验证才能访问系统中的资源。...