调用拦截器(拦截器的调用步骤这里看不明白可见拦截器笔记)
表现层需要继承ActionSupport
à在拦截器类中继承MethodFilterInterceptor
à拦截器方法中写invokation.invoke()表示调用表现层对应的方法
à在配置文件中配表现层方法与拦截器的对应关系
ssh为例模拟登录
1.表现层
2.拦截器类
3.在xml中配置表现层和拦截器的对应关系
配置逻辑为,登陆了之后才能执行其它功能的操作,否则跳转到登录页面先进行登录
过滤器
1.先在web.xml里进行配置
表示/*所有的请求交给com.filters.MyFilter1这个过滤器类进行处理
2.定义过滤器类,实现Filter接口(注意Filter接口是servlet包下的)
最后的chain.doFilter()表示过滤器放行,执行表现层方法。
如果用过滤器做登录功能,参考
过滤器和拦截器的区别:
①拦截器是基于java的反射机制的,而过滤器是基于函数回调。
②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
③拦截器只能对action请求起作用,
而过滤器则可以对几乎所有的请求起作用。
④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
⑤在action的生命周期中,拦截器可以多次被调用,
而过滤器只能在容器初始化时被调用一次。
⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,
这点很重要,在拦截器里注入一个service,可以调用业务逻辑。