day30_struts2_valueStack

来源:互联网 发布:手机淘宝销量排名 编辑:程序博客网 时间:2024/06/09 19:28

回顾
一、输入验证
客户端和服务器端验证

1、编程式验证    前提:动作类继承ActionSupport    a、针对动作类中的全部动作方法        public void validate(){            //针对不符合条件的                addFieldError(字段名,提示信息);        }    b、针对动作类中的某个/些动作方法        public void validateXxx(){Xxx动作方法首字母大写后的        }    使用@SkipValidation注解    验证不通过:        会转向一个input的逻辑视图,一般指向输入页面。回显数据最好用struts2的标签。        错误消息提示:动作类名.properties   invalid.fieldvalue.字段名=你的提示2、声明式验证    a、针对动作类中的全部动作方法        在动作类所在的包中,添加验证文件:动作类名-validation.xml    b、针对动作类中的某个/些动作方法        在动作类所在的包中,添加验证文件:动作类名-动作名(配置文件中的)-validation.xml    配置文件中,验证的字段名和表单的name保持一致即可。    原理:是由validation、workflow拦截器负责处理。3、Struts2内置的验证器    xwork-core-**.jar com.opens.......validators\default.xml4、自定义声明式验证器    a、编写一个类,继承FieldValiateSupport    b、在构建路径顶端建立validtors.xml的配置文件。声明验证器    c、可以像使用内置验证器的形式去使用了。

二、国际化:i18n

三、拦截器

1、这部分是struts2的功能核心2、自定义拦截器:执行过程    a、编写一个类,继承AbstractInterceptor    b、声明拦截器    c、在动作中使用:使用了任何一个拦截器,默认的将失效。3、小案例:    动作方法执行前,验证用户是否登录拦截器。对动作类中的所有动作方法进行拦截4、MethodFilterInterceptor:可以指定哪些方法被拦截或不被拦截5、struts2中常用的拦截器

四、文件上传
动作类书写有要求:

    private File photo;//和表单的上传输入域名字保持一致    private String photoFileName;    private String photoContentType;

配置拦截器:参数。

一、多文件上传

这里写图片描述

二、文件下载:结果类型的使用

名字为stream的结果类型处理文件下载。

1、动作类的书写遵守一定的规范

这里写图片描述

这里写图片描述

2、struts.xml配置文件

这里写图片描述

三、OGNL表达式简介

前提:在struts2中要使用OGNL表达式,必须放到Struts2的标签中。

1、OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,
它是一个开源项目。webwork用它作为表达式语言。

2、其他重要的功能

a、支持对象方法调用,如xxx.doSomeSpecial();

这里写图片描述
b、支持类静态的方法调用和值访问

这里写图片描述

c、访问OGNL上下文(OGNL context)和ActionContext;

d、操作集合对象。

四、context上下文:数据中心

这里写图片描述

contextmap中的数据

这里写图片描述

动作类的生命周期:每次访问都会重新创建新的动作类的实例。还会创建ActionContext和ValueStack的实例。ActionContext和

ValueStack一直保持在你的线程中。(ThreadLocal)。

这里写图片描述

1、ActionContext的API:操作contextMap中的数据的

这里写图片描述

这里写图片描述

PS:ContextMap是xwork中的东西,struts2的核心就是xwork中的ognl,但是为了方便使用,所以就在ContextMap的基础上添加了root栈,ContextMap和root栈组成了值栈,值栈如下图所示:

这里写图片描述

2、ValueStack的API:操作contextMap中根的数据

这里写图片描述

ValueStack的常用方法:
这里写图片描述

五、OGNL的其他用法

1、在JSP中使用ONGL显示contextMap/根中的数据
获取contextMap中的数据,OGNL表达式要用#开头

这里写图片描述

这里写图片描述

获取根(List)中的对象的属性,直接写属性的名称。会从栈顶的对象一致往下找。

这里写图片描述

这里写图片描述

2、OGNL的其他用法

a、在JSP中取数据,可以使用OGNL表达式,也可以使用EL表达式
EL表达式在Struts2中,被做了小小的改动。
Struts2对原始的HttpServletRequest(服务器提供)进行包装,
org.apache.struts2.dispatcher.StrutsRequestWrapper

这里写图片描述

b、在JSP页面中利用OGNL构造List对象和Map对象

这里写图片描述

c、字符串和OGNL互换

这里写图片描述

d、在配置文件中xml或properties也可以使用OGNL表达式,请使用${ognl}

这里写图片描述

六、Struts2中的常用标签

常用的通用标签

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

防止表单重复提交:超简单
Struts2和Spring集成

0 0
原创粉丝点击