真的好累! 今天继续Struts的学习
1. struts 开发的基本原则:
1). 建议在 ActionForm 中的数据类型除了能确定的意外都设为 String, 可以对输入的值进行必要的验证.
2). 在模型层中不要使用 ActionForm 作为传递的参数.
3). 若使用 BeanUtils 进行属性复制, 注册类型转化器的工作建议在 SerlvetContextListener 的 contextInitialized 中完成
2. 使用 BeanUtils 进行属性复制:
1). 要求复制的这两个类必须都是 public 型的.
2). 对于除了基本数据类型和字符串之间的其他转换, 例如: String --> Date, 需要额外注册转换器
3. HTML 标签的用途:
1). 紧密的和 Struts 框架联系起来, 会事先做一些必要的检查:
检验配置是否正确(action 节点中的 path 和 表单中的 action 是否匹配); 检验 ActionForm 中的属性和表单字段是否一致.
2). 更方便于开发: 由 <html:form action="processorder"> 生成的 <form> action 自动使用绝对路径, 且在第一次请求时会加上 jsessionid...
3). 若在 validate() 和 execute() 方法中验证出错, 返回 input 指定的页面, 且该页面使用了 html 标签, 会自动的回显数据.
4. HTML标签注意事项:<html:checkbox /> 并不是和 <input type="checkbox"> 相互对应的.而是和<html:multibox property="interesing">Reading</html:multibox>Reading 相互对应,
第一个 Reading 将被解析成 value, 第二个将被解析成显示.
5. Token解决重复提交:使用同步令牌(Token)机制解决
相关方法:
protected boolean isTokenValid(HttpServletRequest request)
判断存储在当前用户会话中的令牌值和请求参数中的令牌值是否匹配,匹配返回 true
protected void resetToken(HttpServletRequest request)
从当前 session 范围内删除令牌属性
protected void saveToken(HttpServletRequest request)
创建一个新的令牌,并把它保存在当前 session 范围内
6. Validator框架需注意:使用的 ActionForm 不能再直接继承自 ActionForm,而需要继承自ValidatorForm.