struts2的action
action的创建
- 一个普通的类:public class TestAction(){}
- action接口:public interface TestAction(){}
- 继承ActionSupport类:public class TestAction extend ActionSupport(){}
DMI及通配符
- DMI:<a href “actionname!方法名.action”>方法名
- 通配符:*
action接受请求参数
- action属性接受参数:在action类中定义与请求参数同名的属性(setter、getter)
- 使用数据Bean接收:将用户请求的参数封装在JavaBean中
- 泛型接口
action中常见的结果类型
1)dispatcher :默认的请求转发的结果类型,Action 转发给 JSP
2) chain :Action 转发到另一个 Action
2)redirect : 重定向,Action 重定向到 JSP或者action甚至其他网站
3)redirectAction :Action 重定向到另一个 Action
4)全局result
struts2的类型转换
类型转换的意义
用户请求参数类型只能是字符串数据类型;Java是强类型语言,必须将字符串转换成相应的数据类型
自定义类型转换器
-
实现ognl.TypeConverter接口
-
继承DefaultTypeConverter类
-
继承StrutsTypeConverter类
注册自定义类型转换器
注册局部类型转换器:仅仅对某个Action的属性起作用。
建立文件(ationname-conversion.properties):propertyname=类型转换器类
注册全局类型转换器:所有Action的特定属性都会生效。
建立文件(xwork-conversion.properties)
struts2的拦截器
自定义拦截器
- 实现Interceptor接口
- 继承AbstractInterceptor类
- 继承MethodFilterInterceptor类
拦截器
struts2的核心功能有拦截器实现
OGNL
基础
- ognl上下文:map对象,由ognl.OgnlContext类表示
- 值栈(AalueStack):根对象(可以放入、删除、查询对象)
- 访问:${foo};<s:property value=foo>(获得值栈中某个对象的foo属性)
(如果访问context中的对象,由于不是根对象;访问时加#) - 使用ognl表达式时,需要事先导入<%@taglib prefix=“s” uri=/struts-tags%>
struts2的标签
图片来自# OGNL
输入校验
手动编程校验
- 重写validate()方法——对execute()方法进行校验
- 重写validateXXX()方法——对指定方法进行校验
Struts2校验框架
-
校验action中所有与execute()方法签名相同的方法
创建文件:ActionClassName-validation.xml -
校验action中某个方法
创建文件:ActionClassName-ActionName-validation.xml
国际化
基础
-
组成:JSP页面国际化;校验信息国际化;action信息国际化等
-
基本思想:将程序中的信息放在资源文件中,程序根据支持的国家及语言环境,读取相应的资源文件。资源文件是key-value对,每个资源文件中的key是不变的,但value则随不同国家/语言变化。
-
资源文件命名方式
baseName.properties
baseName_language.properties
baseName_language_country.properties
eg:
中国大陆: baseName_zh_CN.properties
美国: baseName_en_US.properties -
Action类可以继承ActionSupport,使用getText()方法取得国际化信息
-
<s:text>标签用来输出国际化信息
文件的上传与下载
- 表单标签:
enctype=“multiple/form-data”;method=“post” - <s:file/>