Struts2 (2) 高级操作

1.拦截器概述

概念: struts2是框架,封装了很多的功能,struts2里面封装的功能都是在拦截器里面,struts2有很多拦截器,但不是每次都执行,每次只执行默认的拦截器。

拦截器的执行时间:action对象创建之后,action的方法执行之前。

2.拦截器底层原理

aop思想: Aop是面向切面(方面)编程,有基本功能,扩展功能,不通过修改源代码方式扩展功能

责任链模式:

  • java中用很多设计模式,责任链是其中一种。
  • 1: 责任链和过滤链很相似
    • 过滤链:一个请求可有多个过滤器进行过滤,每个过滤器只有做放行才能到下一个过滤器.
    • 责任链:要执行多个操作,如添加,删除,修改三个操作,
      • 做完一个操作后会放行,在执行下一个操作,一直到最后一个操作。
  • 2: aop思想和责任链模式如何应用到拦截器里面?
    • action方法执行之前执行默认拦截器,执行过程使用aop思想,在action没有直接调用拦截器的方法,使用配置文件方式进行操作
    • 在执行拦截器时候,执行很多的拦截器,这个过程使用责任链模式
    • 假如执行三个拦截器,执行拦截器1,执行拦截器1之后做放行操作,执行拦截器2,执行拦截器2之后做放行,执行拦截器3,执行拦截器3之后放行,执行action 的方法

image.png

3.过滤器和拦截器的区别

  • 过滤器: 过滤器理论上可以任意内容,比如htmljspservlet、图片路径。
  • 拦截器: 拦截器只可以拦截action

4.自定义登陆拦截器

  • 1:struts2里面有很多的拦截器,这些拦截器是struts2封装的功能,但是在实际开发中,struts2里面的拦截器中可以没有要使用的功能,这个时候需要自己写拦截器实现功能
  • 2: 拦截器结构源码介绍
    • class ModelDrivenInterceptor extends AbstractInterceptor
      • class 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表单标签大部分都有

image.png

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享