Struts2复习

时间:2024-06-04 15:35:38

补充

声明处为什么要继承前面的actionsupport?继承action的execute等格式啊,更规范

声明处为什么后面实现一个model?数据封装到模型再返回去方便啊

值栈是什么啊?原理呐?存放action的堆栈,里面放着请求和响应,将action参数用OGNL封装成对象存进去,也用OGNL读取当中的对象属性

第一天

基于前端控制器(过滤器)来实现,这样就不会有很多servlet

在web.xml配置过滤器filter

在strusts2配置action,在result标签中配置跳转页面

配置文件加载顺序,先strust.xml再strust.properties再web.xml,后配置的会将先配置的常量修改

第二天

strust访问servlet的api有三种方法

1.actionContext类访问,通过这个类可以简单的访问内置对象的属性

2通过特定接口访问,

3通过ServletActionContext访问

结果页面配置,全局和局部页面配置,resulttype重定向,请求转发,处理action链(chain)

数据的封装,有两种方法:

1属性驱动,用set或者OGNL(OGNL的话必须有get方法)

2模型驱动(优先使用),提交的数据封装成model

集合的封装

第三天

OGNL对象图导航语言,strust默认的语言

作用:对象方法的调用,和值的访问,访问上下文,支持赋值操作和表达式串联

值栈ValueStack是strusts的一个接口,OGNLValueStacks是它的实现类,truts2中使用OGNL将请求Action的参数封装成对象为对象存储在之战中,并通过OGNL表达式读取值栈中的对象属性值

OGNLValueStacks的内部结构:值栈和map(即OGNL上下文)

1Context即OGNL上下文,它是一个map结构上下文中存在一些引用,

parameters该Map中包含当前请求的参数

request该Map中包含当前request对象中的所有属性

session该Map中包含当前session对象中的所有属性

application该Map中包含当前application对象中的所有属性

sttr该Map按如下顺序检索,request,seesion,application

2CompoundRoot:存储action实例,它OnglContext的Root对象,不管是属性还是对象都从栈顶开始找

ActionContext和ValueStack的关系

在创建ActionContext的时候,创建ValueStack,ActionContext获取ServetAPI的时候,依赖值栈

所以可以ActionContext.getContext().getValueStack()获得值栈

用push和set对值栈操作

EL表达式可以访问值栈

EL表达式的特殊字符使用

#,

1获取context的数据

2用于构建一个Map集合,

%,

强制解析OGNL表达式

$,

在配置文件中使用OGNL表达式

第四天

Strust2拦截器

原理:拦截器是AOP的一种实现,Strust2拦截器栈就是将拦截器按一定的顺序联结成一条链,在访问被拦截的方法或字段时,Strust2拦截器就会按之前定义的顺序被调用

自定义拦截器的核心方法intercept(翻译是拦截)

Strust2的标签库,视图层通过标签来提供支持

<s:if><s:else><s:elseif>

<s:iterator>

<s:property>用于输出指定的值

<s:a>用于构造html页面的超链接

<s:debug>用于输出更多的调试信息

Strust2模板和主题

一堆不列举了