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 自动解析