netcore转java,Java Spring Boot VS .NetCore (二)实现一个过滤器Filter

Java中实现过滤器是集成实现接口Filter 然后去添加相关的注册 FilterRegistration,下面就来对比下.NetCore 中的 Filter 来一次用法上的比较

说到Java中的Filter 这里就需要说明下 @Configuration @Bean 这两个注解

@Bean  给@Bean标注的方法产生一个Bean方法并交给Spring Ioc 容器管理的方法,这些@Bean标注的方法会被AnnotationConfigApplicationContext、AnnotationConfigWebApplicationContext 处理后最后添加到Spring 容器中,  我把它理解为 .NetCore 中的 注入DI 吧 ,使用 IServiceCollection 添加服务,注入后也是交给  Ioc 容器中的 交给 Microsoft.Extensions.DependencyInjection

@Configuration 这个标注是用来干什么的呢?用于定义配置类,里面需要包含被 @Bean注解标注的方法

下面上一些代码:

Java Filter 处理

@Configurationpublic classWebConfig {

@BeanpublicRemoteIpFilter remoteIpFilter()

{return newRemoteIpFilter();

}

@BeanpublicFilterRegistrationBean LYMRegistrationBean()

{

FilterRegistrationBean registration= newFilterRegistrationBean();

registration.setFilter(newLYMFilter());

registration.addUrlPatterns("/*");

registration.addInitParameter("myname", "这是我写的参数值");

registration.setName("LYMFilter");

registration.setOrder(1);returnregistration;

}public class LYMFilter implementsFilter{

@Overridepublic void init(FilterConfig filterConfig) throwsServletException {

System.out.println("这是LYMFilter的初始化:"+filterConfig.getFilterName());

System.out.println("这是LYMFilter的初始化:"+filterConfig.getInitParameter("myname"));

}

@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throwsIOException, ServletException {

HttpServletRequest request=(HttpServletRequest) servletRequest;

System.out.println("这是Ip拦截器,拦截地址 :"+request.getRequestURI());

filterChain.doFilter(servletRequest, servletResponse);

}

@Overridepublic voiddestroy() {

System.out.println("LYMFilter被销毁");

}

}

Java中这里用的 RemoteFilter  ,还有其他的过滤器,实现Filter接口的时候其实就可以看到 Filter有很多 来之不懂包里面的接口 ,这里实现的是Servlet

注册好Filter指定相关参数  如:设置名称  设置参数  指定过滤的地址 以及当前过滤器的一个顺序,这里顺序个人觉得给 .NetCore中的中间件 Middleware 顺序一个个处理,只是.NetCore中中间件执行的顺序是根据ConfigServices中的上下代码顺序来执行的

.NetCore 中 过滤器有几种基本的,这里我用授权过滤器来描述 IAuthorizationFilter ,然后在 IServiceCollection 添加好注册服务

public classLYMFilter : IAuthorizationFilter

{public voidOnAuthorization(AuthorizationFilterContext context)

{//do something

}

}

services.AddMvc(options=>options.Filters.Add(new LYMFilter()));

.NetCore中的执行效果就不演示了,下面我们看下Java中的处理结果

我们输入之前的helloworld地址 可以看到如下输出

ab9684c1e55d752857f2dc6ee872c82a.png

14a4cb073219f1c7cac605c15baa546c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值