java 拦截器 demo_spring boot实现过滤器和拦截器demo

整理文档,搜刮出一个spring boot实现过滤器和拦截器demo ,稍微整理精简一下做下分享。

拦截器定义:

@webservlet

public class actioninterceptor implements handlerinterceptor {

@override

public boolean prehandle(httpservletrequest request, httpservletresponse response, object handler)

throws exception {

// system.out.println(">>>myinterceptor1>>>>>>>在请求处理之前进行调用(controller方法调用之前)");

// 获取系统时间

calendar ca = calendar.getinstance();

int hour = ca.get(calendar.hour_of_day);

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

if (hour < 4) {

return true;

}

return false;

}

@override

public void posthandle(httpservletrequest request, httpservletresponse response, object handler,

modelandview modelandview) throws exception {

// system.out.println(">>>myinterceptor1>>>>>>>请求处理之后进行调用,但是在视图被渲染之前(controller方法调用之后)");

}

@override

public void aftercompletion(httpservletrequest request, httpservletresponse response, object handler, exception ex)

throws exception {

// system.out.println(">>>myinterceptor1>>>>>>>在整个请求结束之后被调用,也就是在dispatcherservlet

// 渲染了对应的视图之后执行(主要是用于进行资源清理工作)");

}

}

拦截器使用:  关于注解 我使用的是@component  其实也可能声明成配置

@component

public class applicationconfig {extends webmvcconfigureradapter

@override

public void addinterceptors(interceptorregistry registry) {

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

// addpathpatterns 用于添加拦截规则

// excludepathpatterns 用户排除拦截

registry.addinterceptor(new actioninterceptor()).addpathpatterns("/service/extract/json/**");

super.addinterceptors(registry);

}

}

过滤器:

定义:

public class actionfilter implements filter {

@override

public void init(filterconfig filterconfig) throws servletexception {

}

@override

public void dofilter(servletrequest request, servletresponse response, filterchain chain)

throws ioexception, servletexception {

// 获取系统时间

calendar ca = calendar.getinstance();

int hour = ca.get(calendar.hour_of_day);

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

if (hour < 4) {

httpservletresponse httpresponse = (httpservletresponse) response;

httpresponse.setcharacterencoding("utf-8");

httpresponse.setcontenttype("application/json; charset=utf-8");

// 消息

map messagemap = new hashmap<>();

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

messagemap.put("message", "此接口可以请求时间为:0-4点");

objectmapper objectmapper=new objectmapper();

string writevalueasstring = objectmapper.writevalueasstring(messagemap);

response.getwriter().write(writevalueasstring);

} else {

chain.dofilter(request, response);

}

}

@override

public void destroy() {

}

}

使用:

@component

public class applicationconfig {

@bean

public filterregistrationbean filterregistrationbean() {

filterregistrationbean registrationbean = new filterregistrationbean();

actionfilter actionfilter = new actionfilter();

registrationbean.setfilter(actionfilter);

list urlpatterns = new arraylist();

urlpatterns.add("/service/extract/json/*");

registrationbean.seturlpatterns(urlpatterns);

return registrationbean;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值