spring mvc 方法注解拦截器
来源:互联网 发布:c语言谭浩强实验 编辑:程序博客网 时间:2024/06/05 04:25
应用场景,在方法级别对本次调用进行鉴权,如api接口中有个用户唯一标示accessToken,对于有accessToken的每次请求可以在方法加一个拦截器,获得本次请求的用户,存放到request或者session域。
java中,自定义注解拦截器来实现,在需要的拦截的方法上面加上一个注解@AccessRequired
spring mvc Controller中的使用实例
1
2
3
4
5
6
7
8
9
/**
* 注解拦截器方法
* @return
*/
@RequestMapping
(value=
"/urlinter"
,method=RequestMethod.GET)
@AccessRequired
public
@ResponseBody
String urlInterceptorTest() {
return
"通过拦截器:user"
+request.getAttribute(
"currUser"
);
}
如何实现以上实例呢?
定义一个注解:
1
2
3
4
5
6
7
8
9
10
import
java.lang.annotation.ElementType;
import
java.lang.annotation.RetentionPolicy;
import
java.lang.annotation.Target;
import
java.lang.annotation.Retention;
@Target
(ElementType.METHOD)
@Retention
(RetentionPolicy.RUNTIME)
public
@interface
AccessRequired {
}
搞一个拦截器:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 拦截url中的access_token
* @author Nob
*
*/
public
class
UserAccessApiInterceptor
extends
HandlerInterceptorAdapter {
public
boolean
preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler)
throws
Exception {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
AccessRequired annotation = method.getAnnotation(AccessRequired.
class
);
if
(annotation !=
null
) {
System.out.println(
"你遇到了:@AccessRequired"
);
String accessToken = request.getParameter(
"access_token"
);
/**
* Do something
*/
response.getWriter().write(
"没有通过拦截,accessToken的值为:"
+ accessToken);
}
// 没有注解通过拦截
return
true
;
}
}
在spring mvc配置文件中:
1
2
3
4
5
6
7
8
9
10
11
12
<!-- 拦截器 -->
<
mvc:interceptors
>
<
mvc:interceptor
>
<!-- 对所有的请求拦截使用/** ,对某个模块下的请求拦截使用:/myPath/* -->
<
mvc:mapping
path
=
"/**"
/>
<
ref
bean
=
"userAccessInterceptor"
/>
</
mvc:interceptor
>
</
mvc:interceptors
>
<
bean
id
=
"userAccessInterceptor"
class
=
"com.banmacoffee.web.interceptor.UserAccessApiInterceptor"
>
</
bean
>
大功告成,你可以在拦截器里为所欲为,并且把它加载任何你想的Controller 请求的方法上
0 0
- spring mvc 方法注解拦截器
- spring mvc 方法注解拦截器
- spring mvc 自定义方法拦截器
- 基于注解风格的Spring-MVC的拦截器
- 基于注解风格的Spring-MVC的拦截器
- spring mvc拦截器注意细节(基于注解)
- 基于注解风格的Spring-MVC的拦截器
- 基于注解风格的Spring-MVC的拦截器
- Spring mvc的自定义注解权限拦截器(一)
- spring-mvc拦截器+注解 解决重复请求
- 【spring mvc】Spring MVC拦截器+注解方式实现防止表单重复提交
- Spring MVC 拦截器
- Spring MVC 拦截器
- Spring MVC 拦截器
- spring MVC拦截器
- Spring MVC拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- 【九度OJ】1048【模拟】
- 延展(Extension)定义用法
- 系统API 实现SQLite增删改 sql事务beginTransaction()
- Codeforces Round #260 (Div. 2) E. Civilization
- 采用XFire调用Java Web Service
- spring mvc 方法注解拦截器
- 【IOS 开发】Object - C 入门 之 数据类型详解
- Quartus ii TimeQuest Timing Analyzer Cookbook 分析
- android多线程下载
- 线性表的顺序存储结构(Sequential Mapping)
- 协议的基本用法和定义
- android AsyncTask介绍
- LeetCode Set Matrix Zeroes
- 一次优化引发的血案