0 0

实现一个可插拔的过滤器功能?15

是这样一个需求!
我要对一个过来的一个请求进行过滤,然后返回一个对应的结果。
其中过滤方式可以为N个。
怎么样设计这种可插拔的才好呢?

比如说:有这样一种过滤方式,我想过滤用户余额的,如果余额少于10元会怎么怎么样。
问题补充:
我这是一个web应用,我想做到的是加入一种过滤方式,我不需要去重启服务器,
还有几位用配置文件只能满足简单的逻辑需要,扩展性不好。
用switch。。case也一样吧
2009年3月17日 17:31

8个答案 按时间排序 按投票排序

0 0


如果不想重启,那应该把过滤规则放到数据库中,做一个简单的过滤规则管理,CRUD,添加删除修改规则都对数据库做处理。这样实现速度也很快,主要是要额外的做一个数据库表来控制过滤规则。

2009年3月18日 09:45
0 0

不好意思,应该是

//先读取filter_conditions,然后
for(FilterCondition fc : filter_conditions){
  if(condition==fc){
    //完成你的过滤方式
  }
}

2009年3月18日 09:38
0 0

一种灵活的方法:switch..case可以改成循环if形式。
下面的filter_conditions可以是运行时读取的数据库或者配置文件。

for(fc in filter_conditions){
  if(condition==fc){
    //完成你的过滤方式
  }
}


另外,过滤器是一个类,你可以用class loader实现热插拔。

2009年3月18日 09:36
0 0

不需要去重启服务器实现可插拔的过滤器功能,那就用JMX的Mbean去包装普通的过滤器,可以实现不重启服务器实现可插拔的过滤器

2009年3月18日 09:32
0 0


servlet里的filter,web。xml中配置。如果这里面的过滤方式非常多,还可以考虑将过滤方式都写成配置文件,解析配置文件来完成。这样每次增加新的过滤只要修改配置文件。当然,过滤方式如果都是固定的,那就直接用switch就够了

2009年3月17日 21:24
0 0

你只需要定义1个过滤器,然后写一个switch...case,在这里选择需要的过滤函数。

2009年3月17日 20:44
0 0

Servlet 规范里本来就有定义 Filter

2009年3月17日 18:06
0 0

spring的aop不就是这样嘛

2009年3月17日 17:49

相关推荐

    QT5 USB设备插拔事件监控

    1. **创建事件过滤器**:定义一个类继承自QObject,并重写`nativeEventFilter()`函数。在这个函数里,我们将处理USB设备的插入和移除事件。 ```cpp class USBEventFilter : public QObject { Q_OBJECT public: ...

    过滤器在Java Web开发中的应用研究.pdf

    该方法决定过滤器是将请求传递给链中的下一个过滤器,还是直接将响应发送给客户端。如果过滤器链不存在,则请求将被转发给Web服务器。 3. destroy()方法是过滤器的销毁方法,在过滤器的生命周期结束时调用,用于...

    Django的通用图像是一个通用的图像可插拔的Django程序 .zip

    Django的通用图像是一个为Django框架设计的可扩展图像处理库,它提供了一种高效、灵活的方式来管理和处理Web应用中的图像。这个程序的主要目标是简化与图像相关的任务,如上传、缩放、裁剪和调整图片质量,使得...

    java过滤器、监听器拦截器原理个人总结.pdf

    过滤器可以实现用户身份验证、日志记录、数据压缩等功能。创建一个过滤器需要两个步骤:创建 Filter 处理类和在 web.xml 文件中配置 Filter。 在 Java 中,过滤器必须实现 javax.servlet.Filter 接口,该接口定义了...

    版本控制与过滤器设计

    3. **可插拔性**:过滤器设计使得添加、移除或重新排序过滤器变得容易,无需改动其他部分的代码。 4. **过滤器模型**:在给定的压缩包文件"FilterModel"中,可能包含了实现过滤器模式的代码示例或框架,如定义过滤...

    vc++监听U盘的插拔事件以及获取盘符

    通过以上步骤,我们可以编写一个简单的VC++应用程序,实现对U盘插入和移除的实时监控,而不会受到类似光驱类设备的干扰。这个过程不仅对理解系统编程有帮助,也是开发需要实时响应外部设备变化的应用的基础。

    jsp filter 过滤器功能与简单用法示例

    在JSP中实现过滤器功能,需要创建一个类来实现Servlet API中的Filter接口。这个接口包括三个方法:init(), doFilter()和destroy()。init()方法会在过滤器实例化后被Web容器调用一次,用来初始化过滤器;doFilter()...

    Core J2EE Patterns(英文版)

    创建可插拔的过滤器来以标准方式处理常见的服务,而无需更改核心请求处理代码。这些过滤器拦截传入的请求和传出的响应,允许执行如日志记录、认证、输入输出转换等操作。 #### 实现细节 - **过滤器接口**:定义...

    权限控制功能总结.rar

    过滤器链的概念使得我们可以串联多个过滤器,形成一个复杂的权限验证流程。 再来说说“登录验证”(Login Verification)。登录验证是权限控制的基石,它确保只有合法的用户能够访问受保护的资源。通常,登录过程...

    android ffmpeg视频特效-frei0r、视频编辑、图片编辑,支持x264/x265/xfade/frei0r

    开发者可以创建一个过滤器链,将多个过滤器串联起来,实现剪辑、裁剪、旋转、添加水印、调整颜色等操作。例如,"crop"过滤器用于裁剪视频,"scale"过滤器可以改变视频分辨率,而"transpose"过滤器则可以实现视频的...

    VB自动检测U盘的插拔并弹出 提示

    接下来,我们需要定义一个结构体来存储设备通知过滤器,这将帮助我们只关心U盘的插拔事件: ```vb Private Type DEV_BROADCAST_HDR dbch_size As Long dbch_devicetype As Long dbch_reserved As Long dbch_...

    深入解析Spring Cloud内置的Zuul过滤器

    Spring Cloud的Zuul是作为一个边缘服务或者API网关,用于路由、安全、限流等功能。在深入解析Spring Cloud内置的Zuul过滤器之前,我们需要了解Zuul的核心概念——过滤器。过滤器是Zuul的核心组件,它们允许在请求被...

    Interceptor.doc

    - 调用`FilterChain`对象的`doFilter()`:在自己的`doFilter()`方法中调用,以将请求传递到下一个过滤器或目标Servlet。 - 注册过滤器:在`web.xml`文件中配置过滤器及其关联的Servlet和JSP页面。 - 映射过滤器:...

    音乐播放器实现

    创建一个BroadcastReceiver子类,注册并监听相关Intent过滤器,然后在onReceive()方法中响应这些事件,调用MediaPlayer的相关方法进行播放控制。 在源码中,“午后时光”可能是一个音频文件的名字,代表播放器已经...

    mina库文件

    3. **协议支持**:MINA 不直接实现特定的网络协议,而是提供了一个可扩展的框架,使得开发者可以轻松地实现各种网络协议,如 TCP/IP、UDP/IP、HTTP、FTP 等。 4. **异步通信**:MINA 的异步通信模型使得服务器可以...

    浅谈Struts2拦截器的原理与实现.docx

    通过上述步骤,开发者可以轻松地为Struts2应用添加拦截器,实现诸如权限验证、日志记录、性能监控等额外功能,提高了代码的可维护性和可扩展性。在实际项目开发中,拦截器的应用非常广泛,是Struts2框架中不可或缺的...

    Android代码-仿快按钮360智键米键.rar

    【Android代码-仿快按钮360智键米键】是一个Android开发项目,它旨在实现类似于360智键和小米米键的功能。这个项目的核心是通过监听耳机插拔事件来模拟一个快捷启动按钮,为用户提供方便的一键操作。下面我们将深入...

    Servlet3.0 新特性之模块化实践

    总结,Servlet 3.0的新特性显著提升了Web应用的开发效率和性能,通过模块化、注解、异步处理、可插拔容器、依赖注入和过滤器链改进等手段,提供了更加现代、灵活和高效的开发体验。对于开发者来说,理解和掌握这些...

    基于servlet3.1,实现模块化扩展.zip

    本项目"基于servlet3.1,实现模块化扩展"旨在利用这些特性来构建一个可扩展、模块化的Web应用程序。 Servlet 3.1引入了以下几个关键知识点: 1. **异步处理**:Servlet 3.1引入了异步Servlet的概念,允许在服务...

Global site tag (gtag.js) - Google Analytics