Unmi的Struts2学习笔记(二) - 编程入门网
Unmi的Struts2学习笔记(二)时间:2011-09-04 Unmi.cc 隔叶黄莺记笔记,尤其是在 Blog 里记,实则是浪费时间。让学习、阅读的速度以数量 级的下降,收获时当时掌握的更细,却并不代表着真记得牢。一小段时间不用它 ,同样可以忘得很干净,也就是方便于以后能由此泛起些涟漪,如能抛砖引玉就 更幸运了。入正题: 1. 记得 Struts1 的 struts-config.xml 通常是放在 WEB-INF 目录下的, Struts2 的 struts.xml 却要放到 WEB-INF/classes 下的,傻眼了吧,反正我是 。没看仔细之前,总给我报 There is no Action mapped for namespace / and action name Login. - [unknown location] 错误。因未在 web.xml 指定 struts.xml,所以用 ClassLoader 来加载它了。 2. 最简单的 Struts2 应用都要用到 freemarker-xxx.jar 包,因为 UI 标签 要用到 FreeMarker ftl 的模板。 3. FilterDispatcher 要处理所有的 Web 请求,所以它的 url-pattern 是 /*,并自动对 *.action 转给业务 Action 处理。 4. struts.xml 中引入一个 <package>节点来包裹 <action>, 必须指定 <package> 的 name 属性,自定义命名即可,与 class 所在包 无多大关系。 5. 把 ActionContext.getContext().getSession() 这个 Map 当 HttpSession 用即可,它与 HttSession 之间的转换 Struts2 的拦截器帮你完成 。 6. 在 Action 接受客户端请求的数据,并且还可存放送给客户端的数据,这 种做法个人觉得不怎么清爽,数据与控制器杂揉一块,也许是受 Struts1 的 ActionForm 的影响。Action 中的属性值会存放在类型为 ValueStack、名为 struts.valueStack 的属性中。 7. Struts2 的标签更是与 Struts1 的千差万别,只有 <s:xxx 的标签了 ,所以只需在 jsp 前加< %@taglib prefix="s" uri="/struts-tags" %> ,哪用 Struts1 那么分门别5类,但功能更强,这个吗,谁用谁知道。 8. 国际化支持要先在 struts.properties 中指定资源束名,如 struts.custom.i18n.resources=messageResource,则在 classpath 下找 messageResource_语言代码_国家代码.properties。用 <s:text name="key"> 或 <s:property value=''%{getText("key")}''/> 输出国 际化消息。 9. Struts2 支持在 JSP 页面中临时加载资源文件,也支持通过全局属来加载 资源文件,上一条就是全局的方式。 10. Action 中增加数据校验功能,可能它继承 ActionSupport 类,并实现 validate() 方法,产生的错误放到 ActionSupport 类的 fieldErrors 域中,由 OGNL 负责输出。有错误请求将转发到 input 逻辑视图。Struts2 的 <s:form .../> 默认已提供了输出校验错误的能力。是否觉得这种校验忒不尽人情了, 别急,Struts2 可让你完全用配置来校验表单的,让你的 Action 还是那个 Action (继承 ActionSupport,无须实现 validate() 方法),只需写一个 ActionName-validattion.xml 文件扔在与 Action 同位置的目录中即可,这实质 就是用的基于 XWork 的验证框架。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |