拦截器和过滤器

调用拦截器(拦截器的调用步骤这里看不明白可见拦截器笔记)

表现层需要继承ActionSupport

à在拦截器类中继承MethodFilterInterceptor

à拦截器方法中写invokation.invoke()表示调用表现层对应的方法

à在配置文件中配表现层方法与拦截器的对应关系

 

ssh为例模拟登录

1.表现层

拦截器和过滤器_第1张图片

2.拦截器类

拦截器和过滤器_第2张图片

3.在xml中配置表现层和拦截器的对应关系

配置逻辑为,登陆了之后才能执行其它功能的操作,否则跳转到登录页面先进行登录

 

 

过滤器

1.先在web.xml里进行配置

拦截器和过滤器_第3张图片

表示/*所有的请求交给com.filters.MyFilter1这个过滤器类进行处理

 

2.定义过滤器类,实现Filter接口(注意Filter接口是servlet包下的)

拦截器和过滤器_第4张图片

最后的chain.doFilter()表示过滤器放行,执行表现层方法。

 

如果用过滤器做登录功能,参考

拦截器和过滤器_第5张图片

 

 

 

过滤器和拦截器的区别:

 

①拦截器是基于java的反射机制的,而过滤器是基于函数回调。

 

②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

 

③拦截器只能对action请求起作用,

而过滤器则可以对几乎所有的请求起作用。

 

④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

 

⑤在action的生命周期中,拦截器可以多次被调用,

而过滤器只能在容器初始化时被调用一次。

 

⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,

这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

你可能感兴趣的:(Java,后端)