action 的动态方法调用

方法1 :
在配置里添加 method="方法名"
<action name="Login"  class="com.test.action.LoginAction" method="xxx">


方法2:

在提交页面的form 里的action名字后加 !方法名 如下
会调用LoginAction 里面的login方法
<s:form action="Login!login.action" method="post" >
或者不加.action貌似也可以唉
<s:form action="Login!login" method="post" >

Struts2防止表单重复提交

来源:http://blog.csdn.net/fhx007/archive/2009/02/23/3925653.aspx

 

防止表单重复提交主要用的到标签是<s: token />,

拦截器 <interceptor-ref name="token" />,

还有一个默认的返回值<result name="invalid.token">/input.jsp</result>  

 

在页面加载时,<s: token />产生一个GUID(Globally Unique Identifier,全局唯一标识符)值的隐藏输入框如:

 

<input type="hidden" name="struts.token.name" value="struts.token"/>
<input type="hidden" name="struts.token" value="BXPNNDG6BB11ZXHPI4E106CZ5K7VNMHR"/>

同 时,将GUID放到会话(session)中;在执行action之前,“token”拦截器将会话token与请求token比较,如果两者相同,则将 会话中的token删除并往下执行,否则向actionErrors加入错误信息。如此一来,如果用户通过某种手段提交了两次相同的请求,两个token 就会不同。

 

struts2多文件动态下载及中文解决方案

 

上传部分,已经在视频中跟风中叶老师学了遍,下面是文件下载及文件名为中文

的时候浏览器出现乱码的解决方案。

 

 

Struts 2中实现文件下载(修正中文问题)

来源: http://www.blogjava.net/beansoft/archive/2008/03/03/183468.html

 

在BlogJava上已经有一位作者阐述了文件上传的问题,地址是在Struts 2中实现文件上传,因此我就不再讨论那个话题了。我今天简单介绍一下Struts 2的文件下载问题。

我们的项目名为 struts2hello,所使用的开发环境是MyEclipse 6,当然其实用哪个IDE都是一样的,只要把类库放进去就行了,文件下载不需要再加入任何额外的包。读者可以参考文档:http://beansoft.java-cn.org/myeclipse_doc_cn/struts2_demo.pdf,来了解怎么下载和配置基本的Struts 2开发环境。

为了便于大家对比,我把完整的struts.xml的配置信息列出来:

struts 2文件下载学习

struts 2文件下载学习

struts允许上传文件类型设置

struts允许上传文件类型设置。。。。

struts2 拦截器

struts2 拦截器学习

struts2输入校验笔记

<s:actionerror  cssStyle='color:red' />显示actionError级别错误,
即在ancion里:this.addActionError("username invalid");
错误会显示在<s:actionerror  cssStyle='color:red' />

如果使用了struts2 标签

例如<s:textfield name="age" label="age" ></s:textfield>

也设置了类型转换验证:
invalid.fieldvalue.age=年龄信息输入不正确
而且在action里也验证age合法性,并且在anction里有this.addActionError("age invalid") 方法,
当age输入的不是数字的时候,会发生类型转换错误,在页面上显示‘年龄信息输入不正确’
且age被赋值为0,这时如果在anction里的age验证也不对 例如 age不能为0,这是还会在显示一条action级别的
错误:username invalid, 也就是addActionError里的信息
如果要只显示一条错误信息,可以修改一下age的表单:
<s:textfield name="age" label="age" theme="simple"></s:textfield>
加上theme="simple"  只生成简单的 text控件,这样就只显示action级别的错误“username invalid”

=====================================================

<action name="register" class="com.test.action.RegisterAction" method="abc">
        <result>/success.jsp</result>
        <result name="input">/register.jsp</result>
</action>

调用register.action  生成RegisterAction 实例 如果有method 则默认调用method,这里调用abc方法
不调用execute()

如果RegisterAction.java  里有多个方法供不同的action调用 例如 有execute(),abc(),xyz(),
它们的验证方法要是不同的话 可以在RegisterAction.java 定义不同的验证方法,
例如abc()的验证方法是:validateAbc()
xyz():validateXyz()
然后如果还有validate()方法 则紧接着运行validate,只要有就会运行.
可以把validate()方法去掉 ,写一个validateExecute()专门验证execute()方法

struts2中的数据校验

一. ActionSupport是个工具类,他实现了Action, Validatable等接口, Validatable提供validate()方法进行数据验证.Action只要继承ActionSupport类,重写validate()方法就可以进行数据验证 二. 校验的流程 首先,Struts框架对输入数据进行类型转换,然后再进行数据校验,如果类型转换与数据校验都没有错误发生, 就进入execute(),否则请求将被转发到input视图。。。。。。。。。。。。 点击标题查看更多

Struts2的类型转换器

一、概述 在B/S应用中,将字符串请求参数转换为相应的数据类型,是MVC框架提供的功能,而Struts2是很好的MVC框架实现者,理所当然,提供了类型转换机制。 Struts2的类型转换是基于OGNL表达式的,只要我们把HTML输入项(表单元素和其他GET/POET的参数)命名为合法的OGNL表达式,就可以充分利用Struts2的转换机制。