zoukankan      html  css  js  c++  java
  • Struts2学习第4天--拦截器

    第1章     Struts2_day04笔记

    1.1      上次课内容回顾

    l  OGNL表达式

    n  OGNL的概述

    u  OGNL:对象图导航语言,是一门功能强大的表达式语言。

    n  OGNL的功能

    u  调用对象的方法

    u  调用对象的静态方法

    u  表达式串联

    u  访问ActionContextOgnlContext数据

    n  OGNL独立的表达式:

    u  Java环境下入门

    u  Struts2环境下入门

    l  值栈

    n  值栈的概述

    u  ValueStack:是一个接口,实现类OgnlValueStack。是数据的中转站,贯穿了整个Action,有一个Action的实例,就会创建一个ValueStack对象。

    n  值栈的内部结构

    u  Root          CompoundRoot,就是一个ArrayList

    u  Context    OgnlContext,就是一个Map

    n  ActionContext和值栈关系

    u  ActionContext获得值栈的引用。

    n  获得值栈

    u  通过ActionContext获取

    u  通过request获取

    n  操作值栈

    u  利用Action本身在栈中的特点,Action中的属性。

    u  手动操作值栈:

    n  获取值栈的数据

    u  OGNL获取:<s:property value=”…”/>

    n  EL获取值栈的数据

    u  底层增强request.getAttribute(“”);

    l  ONGL特殊字符

    n  #

    u  获取context数据

    u  构建map集合

    n  %

    u  强制解析OGNL

    n  $

    在配置文件中使用OGNL

    1.1      Struts2的拦截器(*****

    1.1.1      拦截器概述

    1.1.1.1   什么是拦截器

    l  Interceptor:拦截器,起到拦截Action的作用。

    n  Filter:过滤器,过滤从客户端向服务器发送的请求。

    n  Interceptor:拦截器,拦截是客户端对Action的访问。更细粒度化的拦截。(拦截Action中的具体的方法)。

    l  Struts2框架核心的功能都是依赖拦截器实现。

    1.1.1.2   Struts2的执行流程

    客户端向服务器发送一个Action的请求,执行核心过滤器(doFilter)方法。在这个方法中,调用executeAction()方法,在这个方法内部调用dispatcher.serviceAction();在这个方法内部创建一个Action代理,最终执行的是Action代理中的execute(),在代理中执行的execute方法中调用ActionInvocationinvoke方法。在这个方法内部递归执行一组拦截器(完成部分功能),如果没有下一个拦截器,就会执行目标Action,根据Action的返回的结果进行页面跳转。

    1.1.1      拦截器入门:

    1.1.1.1   搭建Struts2的环境

    同前

    1.1.1.2   编写拦截器类

    l  编写2个类实现Interceptor接口或者继承AbstractInterceptor类。

         

    执行一个action后 发现 执行顺序如下( action之后跳转页面)。

    代码图:

     

    CREATE TABLE `sys_user` (
      `user_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '用户id',
      `user_code` varchar(32) NOT NULL COMMENT '用户账号',
      `user_name` varchar(64) NOT NULL COMMENT '用户名称',
      `user_password` varchar(32) NOT NULL COMMENT '用户密码',
      `user_state` char(1) NOT NULL COMMENT '1:正常,0:暂停',
      PRIMARY KEY (`user_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

     

     

  • 相关阅读:
    Mono和IL2Cpp
    axios无法获取响应头headers的ContentDisposition
    elcascader(联机选择器)动态加载+编辑默认值回显
    Vue ElTree 拖拽排序方法(通用)
    Postman保存token并使用token的整个流程
    python 使用exec执行定义好的方法,提示“name 'XXX' is not defined”
    Python+flask+flaskapscheduer实现定时下发任务
    androidtools下的uiautomatorviewer截图,提示“Unexpected error while obtaining UI hierarchy”
    python 插入mysql数据库字符串中含有单引号或双引号报错
    python 根据传进来的参数,动态拼接sql
  • 原文地址:https://www.cnblogs.com/ttty/p/10797736.html
Copyright © 2011-2022 走看看