Java-java过滤器和java动态代理有什么关系

Java-java过滤器和java动态代理有什么关系

甜柠檬 发布于 2017-03-20 字数 79 浏览 1096 回复 3

如题:java过滤器和java动态代理有什么关系 ???

或者说有关系吗?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

虐人心 2017-09-26 3 楼

没有关系,但语义上有点类似

Filter是Servlet规范中的东西,仅在Servlet容器中有用(例如Tomcat,Jetty等),用于一个请求过来时的拦截,一般用于修改request/response以方便之后的servlet使用,也可以直接用于处理request/response但语义上一般不太合适(早期的struts是用filter做转发,后来也改为了servlet)。

动态代理则是JDK 1.4.2之后提供的一个对类行为(方法)进行拦截的特性,要求类必须实现接口才能启用。其作用可以覆盖原方法的实现,也可以在方法前后实现自己的逻辑。现在最常见的应用就是Spring的AOP,其实现会检查类是否有实现接口,如果没有则使用cglib来生成动态字节码,否则使用动态代理。关于动态代理可以在网上搜索一下使用教程,非常简单,照着做一个,花十来分钟就能明白

虐人心 2017-06-28 2 楼

从行为上来说,过滤器和动态代理都是拦截了用户的操作。

从功能上来说,过滤器是对请求前的一些预处理和验证。
而动态代理则是功能的增强。

另外一个区别就是过滤器只能在请求前处理。
而动态代理则前后都能处理(before和 after)。

想挽留 2017-04-12 1 楼

动态代理就是拦截器的简单实现.其就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法。
过滤器是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符。