关于java web中Filter和Servlet的一些理解

本文详细解析了Servlet和Filter的基本概念、生命周期以及在实际应用中的使用场景,特别是Servlet作为MVC框架的核心组件和Filter在请求处理流程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做java web开发  无论是新手还是老手 都不可避免的要接触到filter和servlet 乃至于很多情况下都要自定义filter和servlet  他们都是有生命周期的  基本的类似初始化方法和销毁方法比较好理解 不再赘述。

filter  是拦截器 过滤器的意思  当客户端发起一个请求的时候  请求信息以request对象的方法传入到服务端 在web.xml中 可以自定义很多filter  web容器 将他们组织成类似一个锁链(chain)的东西 对请求进行拦截。如果你看过spring中aop部分的ProxyFactoryBean的源码  会发现里面的模式和filter几乎是一样的  


invocation = new ReflectiveMethodInvocation(proxy, target, method, args, targetClass, chain);
// Proceed to the joinpoint through the interceptor chain.
retVal = invocation.proceed();

这个里面的chain即是一个链   对调用某目前对象方法进行相应的拦截 

但是在javax.servlet.Filter中  还有个dispatcher参数  这个参数的取值为REQUEST,FORWARD,INCLUDE和ERROR  表示该请求方式  默认情况下是REQUEST   也即浏览器发起的请求。 其它方式  比如request.getRequestDispatcher("xx").forward(request, response);这种方式  该filter是不进行拦截的。其它几个也是类似。

servlet你可以理解为一个处理动作 通过servlet-mapping中的url-pattern对请求路径进行相应的拦截  它是没有类似filter中的dispatcher参数的。

我们目前接触的比较多的filter有  CharacterEncodingFilter:  对请求内容进行统一编码
                                        FilterDispatcher:struts2中的核心控制器

Servlet比较出名是springMVC中的DispatcherServlet   是一个标准的干净的MVC框架



转载于:https://my.oschina.net/u/218421/blog/167747

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值