在 struts.xml 配置文件中,给动作类注入值。调用的是 setter方法 。控制台输出的是 张三,18 ,如下图所示:

拦截器栈 中的一个 拦截器staticParams 来完成注入的。struts-default.xml 文件中定义。为了演示方便,我们把写在 struts-default.xml 中默认的拦截器写在 struts.xml 中进行显示出来,如下图所示:
<interceptor-ref name="staticParams"/> 这句代码注释掉后,再次访问该 action 时,在控制台输出的是 null,0 。
通过用户的表单封装请求正文参数。
1、动作类作为实体模型(即:数据模型与动作类写在一起)
实体模型:Entity,对应数据库中表的记录(注意:类对应的是表结构,而对象对应的是一条记录)

params拦截器 完成的。
开发中采用的方式)OGNL表达式 之后。
modelDriven拦截器 完成的。
拷贝数据库工具类jar包:commons-dbutils-1.4.jar 和 mysql-connector-java-5.0.8-bin.jar 到 /WebRoot/WEB-INF/lib 中,再拷贝数据源工具类jar包:commons-dbcp-1.4.jar 和 commons-pool-1.6.jar 到 /WebRoot/WEB-INF/lib 中,再将与之相对应的配置文件 dbcpconfig.properties 拷贝至项目路径中的 /src 目录下,若该配置文件有乱码,则点击该配置文件 右键/Properties/Text file encoding/Other/UTF-8 ,OK即可。
如下图所示:
如下图所示:




1、开发中的情况:
实际开发中用户通过浏览器输入的数据都是 String 或者 String[] 。
2、类型转换情况:
3、Struts2提供的常用类型转换:
自动转换 。本地日期格式 转换(yyyy-MM-dd)。逗号+空格 ,连接成一个字符串。4、自定义类型转换器(知道即可)
示例:把日期格式按照 MM/dd/yyyy的格式转换
4.1、先看看Struts2中的类型转换器的结构:




4.2、编写自己的类型转换器(编写一个类继承StrutsTypeConverter,实现其抽象方法)

4.3、注册类型转换器
局部类型转换器:只能指定javabean中的属性。
按照 属性 来注册。在属性所属的 javabean 的包下建立一个 .properties 文件。
文件名称为:javabean名称-conversion.properties
如下图所示:此时,只能是User能够使用。其余的javabean用不了。


要转换的数据类型 来注册。at the top op classpath ,建立一个固定名称 xwork-conversion.properties 的属性文件。

5、转换失败后的处理(需要掌握)
当转换失败后,页面提示:


问题 :配置了回显视图后,当转换失败时,可以回到请求页面,但是表单数据却都没了?肿么办?





conversionError 的拦截器完成的。定义Action 时必须继承 ActionSupport 。
用户的输入验证,必须做,且工作量巨大。
客户端验证:javascript
服务端验证:逻辑验证(我们的代码)
注意:如果客户端和服务端二选一的话,服务器端的不能省。
实际开发中:客户端 + 服务端
a、针对动作类中的 所有动作方法 进行验证:
    在动作类中重写 public void validate() 方法。如下图所示:

java.lang包 中String的扩展的 工具类StringUtils :





由此可知,当重写了validate方法后,该验证方法会对动作类中的所有动作方法进行验证。
b、针对动作类中的 某个动作方法 进行验证:
    针对上面的问题,
解决办法1:给不需要验证的动作方法添加一个 @SkipValidation注解 。

validation方法遵守书写规范。
验证规则 的 xml文件 。需要验证时,编写xml文件,不要验证时,就不编写。a、针对动作类中的 所有动作方法 进行验证:
在动作类所在的包中,建立一个 ActionClassName-validation.xml 的文件,内容如下:

xwork-validator-1.0.3.dtd文件 在 \struts-2.3.15.3-all\struts-2.3.15.3\apps\struts2-blank\WEB-INF\lib\xwork-core-2.3.15.3.jar\xwork-validator-1.0.3.dtd中。b、针对动作类中的 某个动作方法 进行验证:
在动作类所在的包中建立一个 xml文件 ,名称为 ActionClassName-ActionName-validation.xml。内容如下:

xwork-core-2.3.15.3.jar\com\opensymphony\xwork2\validator\validator\default.xml ,该文件内容如下图所示:
2、验证器注入参数    
例如:我们使用 requiredstring,默认是去空格,当我们不想去空格时,就可以给该验证器注入参数。
基于字段的方式和基于验证器的方式如下:

3、声明式基于字段的常用验证器案例
(1)注册页面 student.jsp ,如下图所示:


Student.java ,如下图所示:
struts.xml 中的配置
StudentAction.java ,如下图所示:
StudentAction-addStudent-validation.xml 如下:

原文:https://www.cnblogs.com/chenmingjun/p/9230347.html