Struts框架之构建Controller组件

卡比屋

卡比屋

2016-02-19 14:12

今天给大家分享的是由图老师小编精心为您推荐的Struts框架之构建Controller组件,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

  一、概述
  
  在Struts 架构中,Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。
  
    应用程序的 Controller 部分集中于从客户端接收请求(典型情况下是一个运行浏览器的用户),决定执行什么商业逻辑功能,然后将产生下一步用户界面的责任委派给一个适当的View组件。在Struts中,controller的基本组件是一个 ActionServlet 类的servlet。这个servlet通过定义一组映射(由Java接口 ActionMapping 描述)来配置。每个映射定义一个与所请求的URI相匹配的路径和一个 Action 类(一个实现 Action 接口的类)完整的类名,这个类负责执行预期的商业逻辑,然后将控制分派给适当的View组件来创建响应。
  
    Struts也支持使用包含有运行框架所必需的标准属性之外的附加属性的 ActionMapping 类的能力。这答应我们保存特定于我们的应用程序的附加信息,同时仍可利用框架其余的特性。另外,Struts答应我们定义控制将重定向到的逻辑名,这样一个行为方法可以请求"主菜单"页面,而不需要知道相应的jsp页面的实际名字是什么。这个功能极大地帮助我们分离控制逻辑(下一步做什么)和显示逻辑(相应的页面的名称是什么)。下图1是Struts的controller组件示意图:
  
  
  二、创建Controller组件
  
  Struts包括一个实现映射一个请求URI到一个行为类的主要功能的servlet。因此我们的与Controller有关的主要责任是:
  
  为每一个可能接收的逻辑请求写一个 Action 类(也就是,一个 Action 接口的实现);写一个定义类名和与每个可能的映射相关的其它信息的 ActionMapping 类(也就是,一个 ActionMapping 接口的实现);写行为映射配置文件(用XML)用来配置controller servlet。
  
  为应用程序更新web应用程序展开描述符文件(用XML)用来包括必需的Struts组件,我们给应用程序添加适当的Struts组件。
  
  1、Action 实现
  
  Action 接口定义一个单一的必须由一个 Action 类实现的方法,就象下面这样:
  
  public ActionForward perform(ActionServlet servlet,
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response)
  throws IOException, ServletException;
  一个 Action 类的目标是处理这个请求,然后返回一个标识JSP页面的 ActionForward 对象,控制应该重定向这个JSP页面以生成相应的响应。Struts 架构为应用系统中的每一个Action类只创建一个实例。因为所有的用户都使用这一个实例,所以你必须确定你的Action 类运行在一个多线程的环境中。下图2显示了一个execute()方法如何被访问:
  
  
  图2 Action实例的execute()方法
  
  注重,客户自己继续的Action子类,必须重写execute()方法,因为Action类在默认情况下是返回null的。
  
  在 Model 2 设计模式中,一个典型的 Action 类将在它的 perform() 方法中实现下面的逻辑:
  
  验证用户session的当前状态(例如,检查用户已经成功地注册)。假如 Action 类发现没有注册存在,请求应该重定向到显示用户名和口令用于注册的JSP页面。应该这样做是因为用户可能试图从"中间"(也就是,从一个书签)进入我们的应用程序,或者因为session已经超时并且servlet容器创建了一个新的session。假如验证还没有发生(由于使用一个实现 ValidatingActionForm 接口的form bean),验证这个 form bean 的属性是必须的。假如发现一个问题,当作一个请求属性保存合适的出错信息要害字,然后将控制重定向回输入表单这样错误可以被纠正。
  
  执行要求的处理来处理这个请求(例如在数据库里保存一行)。这可以用嵌入 Action 类本身的代码来完成,但是通常应该调用一个商业逻辑bean的一个合适的方法来执行。更新将用来创建下一个用户界面页面的服务器端对象(典型情况下是request范围或session范围beans,定义我们需要在多长时间内保持这些项目可获得)。返回一个标识生成响应的JSP页面的适当的 ActionForward 对象,基于新近更新的beans。典型情况下,我们将通过接收到的 ActionMapping 对象(假如我们使用一个局部于与这个映射上的逻辑名)或者在controller servlet 本身(假如我们使用一个全局于应用程序的逻辑名)上调用 findForward() 得到一个对这样一个对象的引用。
  
  当为 Action 类编程时要记住的设计要点包括以下这些:
  
  controller servlet仅仅创建一个我们的 Action 类的实例,用于所有的请求。这样我们需要编写我们的 Action 类使其能够在一个多线程环境中正确运行,就象我们必须安全地编写一个servlet的 service() 方法一样。
  
  帮助线程安全编程的最重要的原则就是在我们的 Action 类中仅仅使用局部变量而不是实例变量。局部变量创建于一个分配给每个请求线程的栈中,所以没有必要担心会共享它们。
  
  尽管不应该,代表我们的系统中Model部分的的beans仍有可能抛出违例。我们应该在我们的 perform() 方法的逻辑中捕捉所有这样的违例,并且通过执行以下语句将它们记录在应用程序的日志文件中(包括相应的栈跟踪信息):
  
  
展开更多 50%)
分享

猜你喜欢

Struts框架之构建Controller组件

编程语言 网络编程
Struts框架之构建Controller组件

Struts 框架之构建 Model组件

编程语言 网络编程
Struts 框架之构建 Model组件

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Struts框架之构建Model组件

编程语言 网络编程
Struts框架之构建Model组件

Struts Controller

编程语言 网络编程
Struts Controller

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Struts框架

编程语言 网络编程
Struts框架

Struts框架基础篇

编程语言 网络编程
Struts框架基础篇

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Java Applet 入门 第一天

Java Applet 入门 第一天

Visual C#2005快速入门之基础语法

Visual C#2005快速入门之基础语法
下拉加载更多内容 ↓