第1章     Struts2_day04笔记

1.1      上次课内容回顾

OGNL表达式

OGNL的概述

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

OGNL的功能

调用对象的方法

调用对象的静态方法

表达式串联

访问ActionContext和OgnlContext数据

OGNL独立的表达式:

Java环境下入门

Struts2环境下入门

值栈

值栈的概述

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

值栈的内部结构

Root          :CompoundRoot,就是一个ArrayList。

Context    :OgnlContext,就是一个Map。

ActionContext和值栈关系

ActionContext获得值栈的引用。

获得值栈

通过ActionContext获取

通过request获取

操作值栈

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

手动操作值栈:

获取值栈的数据

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

EL获取值栈的数据

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

ONGL特殊字符

#号

获取context数据

构建map集合

%号

强制解析OGNL

$号

在配置文件中使用OGNL

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

1.1.1      拦截器概述

1.1.1.1   什么是拦截器

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

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

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

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

1.1.1.2   Struts2的执行流程

客户端向服务器发送一个Action的请求,执行核心过滤器(doFilter)方法。在这个方法中,调用executeAction()方法,在这个方法内部调用dispatcher.serviceAction();在这个方法内部创建一个Action代理,最终执行的是Action代理中的execute(),在代理中执行的execute方法中调用ActionInvocation的invoke方法。在这个方法内部递归执行一组拦截器(完成部分功能),如果没有下一个拦截器,就会执行目标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;  

最新文章

  1. Git ignore UserInterfaceState.xcuserstate
  2. Alpha阶段项目Postmortem
  3. odoo-10.0 create database 失败
  4. Java的版本分类
  5. 【Java基础】序列化与反序列化深入分析
  6. 02 Hibernate错题分析
  7. 连接oracle jdbc
  8. [BZOJ1406][AHOI2007]密码箱(数论)
  9. c 计算 语句 执行 时间
  10. C++视频课程小结(1)
  11. 基于visual Studio2013解决面试题之0409判断一个栈是否另外一个栈的弹出序列
  12. 淘宝npm镜像使用方法
  13. jTDS Java连接SQL Server 2000数据库
  14. 安利给班里的大家一个chrome的GitHub插件-----gayhub
  15. Thinkphp中的U函数(Thinkphp3.2.3版本)
  16. BZOJ_1455_罗马游戏_可并堆
  17. 第23课 可变参数模板(4)_Optional和Lazy类的实现
  18. 纯HTML和CSS实现点击切换
  19. UVa LA 3695 - Distant Galaxy 前缀和,状态拆分,动态规划 难度: 2
  20. HDU 3032 Nim or not Nim? (sg函数)

热门文章

  1. (转) iphone开发资源汇总
  2. MySQL数据库篇之索引原理与慢查询优化之一
  3. Linux实战教学笔记42:squid代理与缓存实践(一)
  4. MVC Pager使用
  5. tensorflow学习笔记----tensorflow在windows的安装及TensorBoard中mnist样例
  6. c++对象模型是什么,对象的内存布局和结构问题
  7. css中calc()的使用
  8. Boost线程详解
  9. STL中 set 和 multiset
  10. PHP Windows系统下调用OpenOffice