actionForm线程不安全,servlet线程安全
1、actionForm作用:
- 收集表单参数(和表单一致)
- 类型转换器
所有从表单提交到后台的数据均为字符串类型,利用ActionForm自动转换int数据类型、自动转换boolean数据类型、自动转换Double类型、自动转换Date类型 - 作为传输对象,(跨层传输(DTO)、文件上传、分布收集)
2、ActionForm创建:
- 在struts-config的配置文件的action配置映射中 (ActionForm可用配也可以不用配,)
- 当你没有配置ActionForm时即没有name属性时,就直接返回。如果你 配置ActionForm时即有name属性如name=“loginForm“ 它会到scope中的 request 或session属性中看一看有没有ActionForm的对象,如果有就返回 如果没有就创建一个ActionForm 对象,
- 创建好之后它把ActionForm 对象用setAttribute()方法设置到相应的scope范围内,属性名即为: name属性值,以后在scope范围的页面就可以采用getAttribute(name属性值)方法取到ActionForm 对象的了。
3、ActionForm的收集过程:
- 首先会拿到表单中的所有的name,然后循环取得的name 。
- 调用getParameterValues()方法(通用性好)取得表单中的值 。
- 把表单中的所有数据放到一个map集合中, map的key值就是表单中的name, map的values值就是对应的值(一个或多个长度的数组)。
- 调用BeanUtils.setProperties方法把表单中的数据逐个设置到 ActionForm实例上。对于ActionForm中的每个属性根据类型调用相应的convert方法(类型转换器),将相应的字符串转换成ActionForm中指定的类型。
- 可以通过BeanUtils.copyProperties(目标对象,源对象)方法进行 对象值的复制。