Struts: Action类编程要点
来源:互联网 发布:软件的可靠性设计 编辑:程序博客网 时间:2024/04/29 14:25
Action类编程要点
Strtuts中Action接口定义一个单一的必须由Action类实现的方法,就像下面这样:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
一个Action类的目标是处理请求,然后返回一个标识JSP页面的ActionForward对象,控制应该重定向这个JSP页面以生成相应的响应。一个典型的Action类将在它的execute( )方法中实现下面的逻辑。
l 验证用户session的当前状态(例如,检查用户已经成功注册)。如果Action类发现用户没有注册,请求应该重定向到显示用户和口令用于注册的JSP页面。这样作是因为用户可能试图重“中间”(例如,从一个书签)进入你的程序,或者因为已经超时,并且servlet容器创建了一个新的session。
l 如果验证还没有发生(使用一个实现ValidatingActionForm接口的form bean),则验证这个form bean的属性是必须的。
l 执行业务逻辑来处理请求(例如,再数据库里查询或保存一行)可以用嵌入Action类本身的代码完成,但是,通常应该调用一个业务逻辑bean的一个相应的方法来执行。
l 更新将用来创建下一个用户界面页面的服务器端对象(典型情况下是request范围或session范围内的bean,定义需要在多长时间内保持它们)。
l 返回一个标识相应的JSP页面的适当的ActionForward对象。典型情况下,将通过接收到的ActionMapping对象(如果使用一个局部于这个映射上的逻辑名)或者在controller servlet本身(如果使用一个全局于应用程序的逻辑名)上调用findForward()得到一个对这样一个对象的引用。
当为Action类编程时,要记住的设计要点包括一下这些。
l controller servlet对于所有的请求,仅仅创建一个Action类的实例。这样,在编写Action类时,需要使其能够在一个多线程环境中正确运行,就像必须安全编写一个servlet的service()方法一样。
l 帮助线程安全编程的最重要的原则就是在你的Action类中仅仅使用局部变量而不是实例变量。局部变量创建于一个分配给(由你的JVM)每个请求线程的栈中,所以没有必要担心会共享它们。
l 尽管不应该,但是代表系统中Model部分的beans仍有可能抛出异常。应该在execute()方法的逻辑中捕捉所有这样的异常,并且通过执行一下的语句将它们记录在应用程序的日记文件中(包括相应的栈跟踪信息)。servlet.log(“Error message content…”, exception);
l 作为一个通用的规则,分配稀有资源并在来自同一个用户(在用户的session中)的请求间保持它们会导致可能扩展性的问题。你应该在将控制重定向到适当的View组件前释放这样的资源(如果数据库连接)。
还有,你需要防止出现非常大的Action类。避免把业务逻辑嵌入到Action类本身,而不是将其写在独立的业务逻辑beans中。但是如果这样做,除了使Action类难以理解和维护外,这种方法也使的难以重用这些业务逻辑代码,因为代码被嵌入到了一个组件(Action类)中并被捆绑运行于Web应用程序环境中。
还要补充一点就是,把试图级的验证工作放在ActionForm来完成,比如输入不能为空、email格式是否正确,而与具体业务相关的验证则放入Action中,这样就可以获得最大的ActionForm重用性的可能。在Action类中如果发现一个问题,可以使用一个请求属性来保存合适的出错信息关键字,然后将控制重定向回输入表单以便错误被纠正。
摘自《项目实践精解:基于Struts-Sping-Hibernate的Java应用开发》(作者:梁立新,电子工业出版社,2006年11月第2次印刷)
- Struts: Action类编程要点
- 【Struts】Action 2 action类
- Struts之Action类
- Struts的Action类
- struts中的action类
- struts之action类
- Struts详解之Action类
- struts中的各种action类
- Struts之二 Action类
- Struts Action
- struts action
- struts action
- Struts action
- Struts-Action
- action bar 主要要点
- (Struts)Action类及其相关类
- (Struts)Action类及其相关类
- (Struts)Action类及其相关类
- abc
- 一人模仿二十五个明星
- 21分钟让观众爆笑143次的小品(完整带字幕版)
- 动态二叉查找树
- 学生实验:手机辐射确实可对人脑有影响(图)
- Struts: Action类编程要点
- Struts:validator验证框架详解(一)
- null
- 惠普3.71亿美元收购软件公司Exstream
- STL中map实现技术
- Nofollow属性推出以后,Matt Cutts多次说过
- [转]SQL Server和Oracle的常用函数对比
- 开发者必备的 Flash 插件切换工具--Jimbob随笔
- 代号Apollo,Flash想要和浏览器分家