首页 > 编程知识 正文

java过滤器和监听器,java拦截器原理

时间:2023-05-05 20:50:52 阅读:17161 作者:206

整理文档,找到spring boot实现过滤器和阻止程序demo,稍微整理后简化共享。

拦截器定义:

@网页servlet

publicclassactioninterceptorimplementshandlerinterceptor {

@override

publicbooleanprehandle (httpservletrequestrequest,http servlet响应响应,对象处理程序)。

throws exception {

//system.out.println (' my interceptor 1在处理请求之前被调用(在控制器方法调用之前) );

//获取系统时间

calendar ca=calendar.getinstance (;

int hour=ca.get (calendar.hour _ of _ day );

//设置限制运行时间0-4点

if(hour4) {

返回真;

}

返回假;

}

@override

publicvoidposthandle (httpservletrequestrequest,http servlet响应响应,对象处理程序,

modelandview modelandview (throws exception

//system.out.println (在处理' my interceptor 1请求后调用,但在渲染视图之前(在调用控制器方法之后) );

}

@override

publicvoidaftercompletion (httpservletrequestrequest,http servlet响应响应,对象处理程序,执行ex ) )。

throws exception {

//system.out.println (my interceptor 1在整个请求结束后被调用,成为dispatcher servlet

//在运行之前渲染相应的视图(主要用于资源清理任务) ) ) ) ) );

}

}

拦截器使用的是: 注释使用@component,但实际上也可能被声明为设置

@component

publicclassapplicationconfig { extendswebmvcconfigureradapter }

@override

publicvoidaddinterceptors (interceptorregistryregistry ) {

//多个拦截器构成一个拦截器链

//addpathpatterns用于添加监听规则

//excludepathpatterns用户排除拦截

registry.add interceptor (newaction interceptor () ).addpathpatterns ) )/service/extract/JSON/** ';

super.addinterceptors(registry );

}

}

滤波器:

定义:

publicclassactionfilterimplementsfilter {

@override

公共void init (过滤器配置文件配置) throws servletexception {

}

@override

publicvoiddofilter (servletrequestrequest,servlet响应响应,过滤器通道) )。

throws ioexception,servletexception {

//获取系统时间

calendar ca=calendar.getinstance (;

int hour=ca.get (calendar.hour _ of _ day );

//设置限制运行时间0-4点

if(hour4) {

httpservletresponsehttpresponse=(http servlet响应)响应;

httpresponse.setcharacterencoding (utf-8 );

httpresponse.set content type (应用程序/JSON; charset=utf-8 ';

//新闻

map messagemap=new hashmap (;

messagemap.put('status ','1' );

消息映射. put ('消息','此接口为:0-4点');

objectmapperobjectmapper=new对象映射器(;

stringwritevalueasstring=object mapper.writevalueasstring (消息映射);

response.getwriter ().write(writevalueasstring );

} else {

chain.dofilter(request,response );

}

}

@override

公共语音目录

}

}

使用:

@component

公共类应用程序配置{

@bean

publicfilterregistrationbeanfilterregistrationbean {

filterregistrationbeanregistrationbean=newfilterregistrationbean (;

actionfilteractionfilter=newactionfilter (;

注册bean.set filter (actionfilter;

list urlpatterns=new arraylist (;

URL patterns.add (/service/extract/JSON/* );

注册bean.set URL patterns (URL patterns;

返回注册bean;

}

}

希望以上是正文的全部内容,对大家的学习有帮助。 另外,希望能多多支持万仟网。

你想和很多网友交流吗?

点击这个留言吧!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。