zoukankan      html  css  js  c++  java
  • Struts2拦截器

    基本过程

    1.用户请求数据封装进request对象

    2.所有请求都要经过核心过滤器。

    3.filter调用动作映射类,确认是否要调用某个action类

    4.返回确认信息

    5.创建动作类的代理类

    6.manager读取配置文件,确定执行方法

    7.返回确认信息

    8.执行动作类之前执行一系列拦截器

    9.执行动作方法

    10.根据返回类型结果视图

    11.执行一系列拦截器的后处理

    12.封装响应到response对象

    -------------

    核心接口和类

    Action Mapper 根据请求的URI查找是否存在对应Action调用

    ACtion Mapping 保存调用Action的映射信息,如namespace、name等

    Action Proxy 再Xwork和真正的Action之间充当代理

    Action Invocation 表示Action的执行状态,保存拦截器、Action实例。

    Interceptor 再请求处理之前或者之后执行的Struts2组件

     ----------

    什么是拦截器:

    Struts2大多核心功能通过拦截器实现,每个拦截器完成某项功能

    拦截器方法再Action执行之前或者执行之后执行

    拦截器栈

    ·从结构上看:拦截器相当于多个拦截器的组合

    ·在功能上看:拦截器栈也是拦截器

    拦截器与过滤器原理很相似

    拦截器工作原理:拦截器的执行过程是一个递归的过程。

    三阶段执行周期:

    1、做一些Action执行前的预处理

    2、将控制交给后续拦截器活返回结果字符串

    3、做一些Action执行后的处理

    ------------

    简单应用:继承AbstractInterceptor类,重写intercept()方法(括号中 ActionInvocation Invocation)

    String result = invocation.invoke(); //invoke代表放行

    //定义单个拦截器

    <interceptors>

       <interceptor name="""

      class=""com.pb.interceptor.MyTimerInterceptor">

    </interceptor>

    </interceptors>

    <interceptor-ref name=""></interceptor -ref> //引用拦截器

    params拦截器

    负责将请求参数设置为Action属性

    ServletConfig拦截器

    将源文件于Servlet API的各种对象注入到Action

    fileUpload拦截器

    对文件上传提供支持

    exception拦截器

    捕获异常,并且将异常映射到用户自定义的错误页面

    validation拦截器

    调用验证框架进行数据验证

    workflow拦截器

    调用Action类的validate(),执行数据验证

    ServletRequestAware接口

    获取Action的一种方式

    文件上传:

    Commons-FileUpload组件

     apache开放源代码组织的一个子项目,此组建用来处理HTTp文件上传的子项目

    特点:使用简单,可以方便嵌入到JSP文件中,编写少量代码即可完成文件的上传功能

    能完全控制上传的内容

    能对上传文件的大小、类型进行控制。

    设置表单提交属性<from enctype="multipart/form-data" method="post">

  • 相关阅读:
    松软科技web课堂:JavaScript 比较和逻辑运算符
    松软科技web课堂:JavaScript 布尔(逻辑)
    松软科技web课堂:随机Math.random()
    松软科技web课堂:JavaScript Math 对象
    松原网站建设,巨惠分享0元11月启动
    松原本地专业网站建设,公众号,微网站,小程序定制开发
    JavaScript 日期格式
    松软科技前端课堂:JavaScript 日期
    松软科技web课堂:JavaScript 数组迭代方法
    安装npm install app-inspector -g 提示错误
  • 原文地址:https://www.cnblogs.com/legiorange/p/8578401.html
Copyright © 2011-2022 走看看