Spring 拦截器

1、作用

拦截器主要作用是拦截请求病进行相应的处理。

2、定义一个拦截器

1.自定义一个实现Interceptor接口。

2.在web.xml中注册拦截器。

3、与过滤器的区别

1.拦截器是基于java反射机制的,过滤器是基于函数回调的。

2.拦截器不依赖servlet容器,过滤器依赖于servlet容器。

3.拦截器只对action起作用,过滤器几乎可以对所以请求起作用。

4.拦截器可以访问action上下文、栈里的对象,过滤器不能。

5.在action的生命周期里,拦截器可以多次调用,而过滤器只能在容器初始化时调用一次。

4、实例

/**
 * 
 * 拦截器
 * 新增修改时只能录入 数字、汉字、下划线
 *
 */
public class Interceptor extends HandlerInterceptorAdapter {

	private static final List<String> URLLISTS = Arrays.asList("create", "update");	// 拦截地址
	private static final String REGEX = "^[\u4E00-\u9FA5A-Za-z0-9_]+$";				// 拦截正则表达式
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		String url = request.getRequestURI();
		for (String string : URLLISTS) {
			if (url.indexOf(string) != -1) {
				String json = request.getParameter("json");
				Map<String, Object> jsonMap = JSONArray.parseObject(json);
				if (jsonMap!=null && jsonMap.size()!=0) {
					Pattern pattern = Pattern.compile(REGEX);
					for (Entry<String, Object> entry : jsonMap.entrySet()) {
						Matcher matcher = pattern.matcher(entry.getValue().toString());
						if (!matcher.matches()) {
							return false;
						}
					}
				}
			}
		}
		return true;
	}
	
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		super.afterCompletion(request, response, handler, ex);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值