1.拦截器概述
概念: struts2是框架,封装了很多的功能,struts2里面封装的功能都是在拦截器里面,struts2有很多拦截器,但不是每次都执行,每次只执行默认的拦截器。
拦截器的执行时间: 在action对象创建之后,action的方法执行之前。
2.拦截器底层原理
aop思想: Aop是面向切面(方面)编程,有基本功能,扩展功能,不通过修改源代码方式扩展功能
责任链模式:
- 在
java中用很多设计模式,责任链是其中一种。 - 1: 责任链和过滤链很相似
- 过滤链:一个请求可有多个过滤器进行过滤,每个过滤器只有做放行才能到下一个过滤器.
- 责任链:要执行多个操作,如添加,删除,修改三个操作,
- 做完一个操作后会放行,在执行下一个操作,一直到最后一个操作。
- 2:
aop思想和责任链模式如何应用到拦截器里面?- 在
action方法执行之前执行默认拦截器,执行过程使用aop思想,在action没有直接调用拦截器的方法,使用配置文件方式进行操作 - 在执行拦截器时候,执行很多的拦截器,这个过程使用责任链模式
- 假如执行三个拦截器,执行拦截器1,执行拦截器1之后做放行操作,执行拦截器2,执行拦截器2之后做放行,执行拦截器3,执行拦截器3之后放行,执行action 的方法
- 在
3.过滤器和拦截器的区别
- 过滤器: 过滤器理论上可以任意内容,比如
html、jsp、servlet、图片路径。 - 拦截器: 拦截器只可以拦截
action
4.自定义登陆拦截器
- 1: 在
struts2里面有很多的拦截器,这些拦截器是struts2封装的功能,但是在实际开发中,struts2里面的拦截器中可以没有要使用的功能,这个时候需要自己写拦截器实现功能 - 2: 拦截器结构源码介绍
class ModelDrivenInterceptor extends AbstractInterceptorclass AbstractInterceptor implements Interceptor:接口里面三个方法void init():初始化方法。void destroy():销毁。String intercept(ActionInvocation invocation):拦截逻辑操作。
- 开发中建议使用另一种方法
- 写类,继承
MethodFilterInterceptor类实现 - 让
action里面某个的方法不进行拦截
- 写类,继承
- 让拦截器和
action有关系- 不是在
action调用拦截器的方法,而是通过配置文件方式让建立关系
- 不是在
5.struts2标签库(jsp)
s:property:和ognl表达式在jsp页面中获取值栈数据s:iteratior:获取值栈list集合数据,表示list集合s:debug:查看值栈结构和数据
6.struts2表单标签
html表单标签:
form : action、 method、enctype- 大部分在input里面封装 type=”值”
text:普通输入项password:密码输入项radio:单选输入项checkbox:复选输入项file:文件上传项hidden:隐藏项button:普通按钮submit:提交按钮image:图片提交reset:重置select:下拉输入项textarea:文本域
- 在
struts2里面对应html表单标签大部分都有