- 浏览: 1001081 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1441)
- 软件思想&演讲 (9)
- 行业常识 (250)
- 时时疑问 (5)
- java/guava/python/php/ruby/R/scala/groovy (213)
- struct/spring/springmvc (37)
- mybatis/hibernate/JPA (10)
- mysql/oracle/sqlserver/db2/mongdb/redis/neo4j/GreenPlum/Teradata/hsqldb/Derby/sakila (268)
- js/jquery/jqueryUi/jqueryEaseyUI/extjs/angulrJs/react/es6/grunt/zepto/raphael (81)
- ZMQ/RabbitMQ/ActiveMQ/JMS/kafka (17)
- lucene/solr/nuth/elasticsearch/MG4J (167)
- html/css/ionic/nodejs/bootstrap (19)
- Linux/shell/centos (56)
- cvs/svn/git/sourceTree/gradle/ant/maven/mantis/docker/Kubernetes (26)
- sonatype nexus (1)
- tomcat/jetty/netty/jboss (9)
- 工具 (17)
- ETL/SPASS/MATLAB/RapidMiner/weka/kettle/DataX/Kylin (11)
- hadoop/spark/Hbase/Hive/pig/Zookeeper/HAWQ/cloudera/Impala/Oozie (190)
- ios/swift/android (9)
- 机器学习&算法&大数据 (18)
- Mesos是Apache下的开源分布式资源管理框架 (1)
- echarts/d3/highCharts/tableau (1)
- 行业技能图谱 (1)
- 大数据可视化 (2)
- tornado/ansible/twisted (2)
- Nagios/Cacti/Zabbix (0)
- eclipse/intellijIDEA/webstorm (5)
- cvs/svn/git/sourceTree/gradle/jira/bitbucket (4)
- jsp/jsf/flex/ZKoss (0)
- 测试技术 (2)
- splunk/flunm (2)
- 高并发/大数据量 (1)
- freemarker/vector/thymeleaf (1)
- docker/Kubernetes (2)
- dubbo/ESB/dubboX/wso2 (2)
最新评论
使用到spring方法拦截器 MethodInterceptor实现权限控制,MethodInterceptor可以使用通配符,并且是基于注解的。
简单例子代码如下:
1、定义需要拦截的类
Java代码 收藏代码
public class LoginAction{
//没有权限限制
@RequestMapping(value = "/login")
public void login(HttpServletRequest req, HttpServletResponse res) {
//登录功能.
}
//需要登录完成后才可访问
@LoginMethod
@RequestMapping(value = "/userList")
public void userList(HttpServletRequest req, HttpServletResponse res) {
//获取用户列表
}
}
注意上面的@LoginMethod是我自定义的注解
2、定义LoginMethod注解
Java代码 收藏代码
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginMethod {
}
3、定义MethodInterceptor拦截器
Java代码 收藏代码
public class SystemMethodInterceptor implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
Method method = methodInvocation.getMethod();
if(method.isAnnotationPresent(LoginMethod.class)){//加了@LoginMethod注解,被拦截
User user = sessionUtil.getCurrUser();
if(user == null){//未登录
//proceed方法不调用,方法被拦截
return null;
}else{
return methodInvocation.proceed();//该方法不调用,则被拦截的方法不会被执行
}
}else{
return methodInvocation.proceed();
}
}
}
4、配置文
Xml代码 收藏代码
<bean id="systemMethodInterceptor" class="com.tzz.interceptor.SystemMethodInterceptor" >
</bean>
<aop:config>
<!--切入点-->
<aop:pointcut id="methodPoint" expression="execution(* com.tzz.controllor.web.*.*(..)) "/><!--在该切入点使用自定义拦截器-->
<aop:advisor pointcut-ref="methodPoint" advice-ref="systemMethodInterceptor"/>
</aop:config>
简单例子代码如下:
1、定义需要拦截的类
Java代码 收藏代码
public class LoginAction{
//没有权限限制
@RequestMapping(value = "/login")
public void login(HttpServletRequest req, HttpServletResponse res) {
//登录功能.
}
//需要登录完成后才可访问
@LoginMethod
@RequestMapping(value = "/userList")
public void userList(HttpServletRequest req, HttpServletResponse res) {
//获取用户列表
}
}
注意上面的@LoginMethod是我自定义的注解
2、定义LoginMethod注解
Java代码 收藏代码
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginMethod {
}
3、定义MethodInterceptor拦截器
Java代码 收藏代码
public class SystemMethodInterceptor implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
Method method = methodInvocation.getMethod();
if(method.isAnnotationPresent(LoginMethod.class)){//加了@LoginMethod注解,被拦截
User user = sessionUtil.getCurrUser();
if(user == null){//未登录
//proceed方法不调用,方法被拦截
return null;
}else{
return methodInvocation.proceed();//该方法不调用,则被拦截的方法不会被执行
}
}else{
return methodInvocation.proceed();
}
}
}
4、配置文
Xml代码 收藏代码
<bean id="systemMethodInterceptor" class="com.tzz.interceptor.SystemMethodInterceptor" >
</bean>
<aop:config>
<!--切入点-->
<aop:pointcut id="methodPoint" expression="execution(* com.tzz.controllor.web.*.*(..)) "/><!--在该切入点使用自定义拦截器-->
<aop:advisor pointcut-ref="methodPoint" advice-ref="systemMethodInterceptor"/>
</aop:config>
发表评论
-
Spring Boot
2017-09-26 09:51 256Spring Boot是由Pivotal团 ... -
spring AOP中切点
2017-08-25 09:59 867在spring AOP中,需要使用AspectJ的切点表达式 ... -
Spring JdbcTemplate详解
2017-07-19 16:12 569JdbcTemplate简介 Spring对数据库的操 ... -
Spring相关
2017-04-20 16:10 437我是一个Java开发者,之前知道Spring属于这个公司,就 ... -
spring.schemas、spring.handlers的使用
2017-02-28 13:55 1685报错信息:Configuration problem: Un ... -
Spring的一个命名空间的名称空间处理程序没有找到
2017-02-25 15:20 9111. 问题 本文将讨论Spring中最常见的配置问题 —— ... -
到底EJB是什么
2016-12-06 10:05 421到底EJB是什么?被口口相传的神神秘秘的,百度一番,总觉得 ... -
Spring MVC 和 Servlet 一样,都不是线程安全的
2016-04-28 01:06 632你的理解是对的,Spring MVC 和 Servlet 一 ... -
springmvc的control 的线程是否安全的问题
2016-05-31 10:09 329关于java Servlet,Struts,springM ... -
框架的一些学习
2016-02-03 14:53 227java aopalliance-1.0.jar这个包是AOP ... -
Metrics介绍和Spring的集成
2016-02-02 16:56 915Metrics可以为你的代码的运行提供无与伦 ... -
spring mvc常用的注解
2016-01-22 14:28 668spring mvc常用的注解: ... -
Spring的常用注解
2016-01-20 16:07 623Spring2.5引入注解式处理器 @Controlle ... -
通过Spring的配置,添加多个数据源,制作多个qlMapClient,iBatis或Hibernate的各个DAO
2016-12-27 10:25 485通过Spring的配置,添加多个数据源,制作多个qlMapCl ... -
springmvc避免IE执行AJAX时,返回JSON出现下载文件
2017-01-01 23:35 833<!-- 避免IE执行AJAX时,返回JSON出现下载文 ... -
springMVC的@ResponseBody出现乱码解决方法
2017-01-02 00:23 351使用@ResponseBody出现乱码解决方法 1、 Re ... -
Spring中的Bean的注入方式
2017-01-02 00:27 511一 setter方法注入 配置文件如下: <bean ... -
spring发送邮件配置文件
2017-01-02 00:27 12451、发送邮件配置文件springmail_config ... -
@Resource和@Autowire的区别
2017-01-02 00:27 670@Resource和@Autowire的区别 在java代码中 ... -
Spring中继承并简化了Quartz
2017-01-02 00:27 644Quartz是一个强大的企业级任务调度框架,Spring中继承 ...
相关推荐
常用拦截 拦截器HandlerInterceptor 拦截器MethodInterceptor 添加依赖 创建启动类 创建拦截器类 创建控制器 监控control请求耗时,提高性能
本篇文章主要介绍了spring boot如何使用spring AOP实现拦截器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
nested exception is java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor 就是少了这个包
2)、事务拦截器: TransactionInterceptor;保存了事务属性信息,事务管理器; 他是一个 MethodInterceptor; 在目标方法执行的时候; 执行拦截器链; 事务拦截器: 1)、先获取事务相关的属性 2)、再获取...
spring,aop的实现.MethodBeforeAdvice,AfterReturningAdvice,MethodInterceptor等。
NULL 博文链接:https://88548886.iteye.com/blog/1528486
在上面这段代码中,重点注意三条命令的使用方法: assembly = Assembly.LoadFile(rootPath + prop.assemblyName); p = assembly.CreateInstance(prop.typeName); t.InvokeMember(prop.propertyName, BindingFlags....
正如上面所示,在MethodInterceptor中你得自行决定是否调用MethodInvocation的proceed()方法来执行目标对象上的方法,proceed()方法在执行完后会返回目标对象上方法的执行结果。 MethodInterceptor在XML文件中的定义...
AOP联盟为Java的AOP提供了一系列标准接口,包括Advice通知及其继承接口MethodInterceptor方法拦截器,还有JointPoint连接点及其继承接口MethodInvocation。例如,很多具有AOP概念的框架如Spring AOP都会依赖于此来...
本文借鉴spring对hessian的支持,实现spring对Thrift的支持。服务端主要使用了spring的HttpRequestHandler接口...客户端主要使用spring的MethodInterceptor和UrlBasedRemoteAccessor以及代理来实现对服务端的远程调用。
在搭建spring项目时通常需要这些jar包 commons-logging-1.1.3.jar spring-aop-4.0.6.RELEASE.jar ... nested exception is java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor
有一天在用回调模版的时候,忽然间又想到jdk自带的Proxy类似乎不是怎么好用,为何不把其做成回调模版呢,可以将其改造称类似spring Aop 代码如下: package com.fjx.proxy.up.test; import ...
cglib动态代理 使用步骤: Step1:实现MethodInterceptor接口 Step2:创建方法对目标进行代理 Step3:重写intercept方法对代理目标方法进行拦截
6.1.2拦截器及拦截器栈的应用 111 6.1.3自定义拦截器 115 6.2类型转换器 117 6.2.1struts2内置类型转换器 117 6.2.2引用类型的转换方式 117 6.2.3特殊对象的类型转换 118 6.2.4类型转换的错误处理 121 6.3...
反射:动态代理设计模式 1.jdk 依赖接口 newProxyInstance方法 2.cglb 实现MethodInterceptor Aop 四种通知之前通
spring aop 四种模式 1、AfterReturningAdvice 2、MethodInterceptor 3、MethodBeforeAdvice 4、ThrowsAdvice
主要介绍了Spring如何基于Proxy及cglib实现动态代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
* 代理类需要实现 MethodInterceptor(方法拦截器) * * 1.创建被代理类、创建代理类、代理类内部聚合被代理类 * 2.创建返回代理类实例方法 Enhancer.create(object.getClass(), this); * (1.创建工具类,2....
java8 源码 所有项目demo都基于idea gradle + SpringBoot来开发构建 ...@Around:环绕增强,相当于MethodInterceptor @AfterReturning:后置增强,相当于AfterReturningAdvice,方法正常退出时执行 @Before
@Around: 环绕增强,相当于MethodInterceptor. 这里Around的value参数应该写的是上面的签名,而不是runTime,如果@Around 参数值里 “@annotation (timeCost)" 是为了匹配 costTimeAround 方法的入参 timeCost,...