action方法
1.编写普通的action类
2.编写action类,实现action接口
3.编写action类,继承actionSupport父类
*提供volidate方法增加验证功能
*提供获取本地文本信息的功能
*提供getLocal()获取本地消息
*提供方法保存和恢复action或field级的错误信息
--需要导入Xwork中的action接口
页面数据和action属型的三只基本对应方式
1.属型驱动
*基本数据类型和action属型对应,约定俗称 属型驱动
*Javabean风格属型对应,约定俗称。直接使用域对象 bean.name
---都需要你get set方法
2.模型驱动
上传文件关键点:
jsp: form 表单的属性 enctype="multipart/form-data"
bean 类: 参数 XX ,XXFileName ,XXContentType
action 类: 得到tomcat 下的文件夹路径 ServletActionContext.getServletContext().getRealPath("/upload");、
********************************
配置文件:
上传部分:
//上传的拦截器
<interceptor-ref name="fileUpload">
<!--maximumSize (可选) - 这个拦截器允许的上传到action中的文件最大长度(以byte为单位).
注意这个参数和在webwork.properties中定义的属性没有关系,默认2MB-->
<param name="maximumSize">409600</param>
<!--allowedTypes (可选) - 以逗号分割的contentType类型列表(例如text/html),
这些列表是这个拦截器允许的可以传到action中的contentType.如果没有指定就是允许任何上传类型.-->
<param name="allowedTypes">
下载部分:
<result name="success" type="stream">
<!--指定文件下载类型 application/octet-stream默认值可以下载所有类型 -->
<param name="contentType">
application/txt;
</param>
<!-- 指定下载的文件名和显示方式 ,但注意中文名的乱码问题,解决办法是:进行编码处理-->
<!--contentDisposition是文件下载的处理方式,包括内联(inline)和附件(attachment),
默认是inline, 使用附件时这样配置:attachment;filename="文件名" 。-->
<param name="contentDisposition">
attachment;filename="${fileName}"
</param>
<!--由getDownloadFile()方法获得inputStream-->
<param name="inputName">downloadFile</param>
<!-- 指定下载文件的缓存大小-->
<param name="bufferSize">2048</param>
拦截器:
拦截器继承:extends AbstractInterceptor
类属性: 可以通过配置文件传入字符串
方法:
重写方法
String intercept(ActionInvocation invocation)
//取得请求相关的ActionContext实例(可以得到请求名字信息)
ActionContext act = invocation.getInvocationContext();
//未登录,返回重新登录
return Action.NONE;
//执行该拦截器的下一个拦截器,如没有,执行Action被请求的相应方法(放行)
return invocation.invoke();
2.5版本的配置文件特殊设置:????
开启动态调用:
struts2 动态调用 <constant name="struts.enable.DynamicMethodInvocation" value="true" />
开启国际化:
<constant name="struts.custom.i18n.resources" value="message"></constant> 其中的message就是国际化资源文件baseNmae。资源文件命名 message_zh_CN.properties xxxx_en_US.
jsp国际化显示,可以将信息添加到<s:text></s:text> 标签中,也可以放在<s:i18n></s:i18n> 中,
action中添加错误信息国际化 this.addActionError(this.getText("username.invalid"));
xml 验证框架配置 <message key="username.xml.invalid"></message>
struts2 xml 文件配置验证
int 整数;
double 实数;
date 日期;
expression 两数的关系比较;
email Email地址;
url 网址
Visitor 游客
Conversion 转换
regex 正则表达式验证;
required 是否存在;
requiredstring 必须字符;
stringlength 输入字符长度限制;
验证类型
验证配置文件的命名方式 actionname-(struts中的action名字)-validation.xml
进行编码方式校验的特点:
1) Action一定要继承自ActionSupport 。
2) 针对某个要进行校验的请求处理方法编写一个 public void validateXxx()方法,在方法内部进行表单数据校验。
3) 也可针对所有的请求处理方法编写public void validate()方法。
4) 在校验方法中,可以通过addFieldError()方法来添加字段校验错误消息。
5) 当校验失败时,Struts框架会自动跳转到name为input的Result页面。在校验失败页面中,可以使用<s:fielderror/>来显示错误消息。
6) 简单,灵活。但重用性不高。
fileUtil.copyfile(file,file)类可以复制文件 tomcat自带的工具类
struts 配置文件常量
//开发模式
<constant value="true" name="struts.devMode"/>
//简单主题
<constant value="simple" name="struts.ui.theme"/>
//action 的实例由 spring 提供
<constant value="spring" name="struts.objectFactory"/>
//拦截所有的 .do 结尾的访问到action
<constant value="do" name="struts.action.extension"/>
回应ajax数据(json 格式)
导入jar包(自动把栈顶的数据转换为 json 格式)
//struts2-json-plugin-2.3.8.jar
1. //action 将结果数据放到值栈的栈顶
ServletActionContext.getContext().getValueStack().push(result);
2.struts.xml 配置
<package name="jsonaction" namespace="/" extends="json-default">
<action name="getlist" class="com.taozhi.action.ChatAction" method="getlist">
<result type="json"><param name="root">result</param></result>
</action>
</package>
ajax 接受的json数据 用jQuery 自动解析