`
bluenemo
  • 浏览: 176335 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts控制器组件

阅读更多

      Struts 的核心是一个MVC 风格的控制器。Struts 控制器搭起了Model 和View 之间的桥梁。框架也包括开发人员想用来开发可伸缩的、先进的应用系统的其他组件。Struts 是一个“隐藏支柱”的集合,帮助开发人员将分散的材料,如数据库和页面,结合成一个整体的应用系统。

      用户通过超链接和HTML form 与Web 应用程序进行交互。超链接引导页面显示数据和其他内容,如文本和图像。表单通常通过一些定制动作向应用提交数据。

      Hyperlinks/ActionForms---->HTML forms/ActionForms----->Custom actions/ActionForms

      注:Struts 组件是通过一个XML文件进行配置的。实践中,配置项是Struts框架的有机组成部分。为了将它们糅合在一起,我们在讲述它们的时候,会展示每个组件的XML配置项。

 

      超链接

      对应用开发人员来说, 超链接是指向应用中某些资源的路径。这些资源可能是web 页面,或者是定制动作。超链接中也可以包含特殊的参数。在Struts 中,开发人员可以将超链接定义为一个ActionForward。

      这些对象都有个逻辑名称和一个path 属性。这使得开发人员可以设置path,然后通过名称来引用ActionForward。ActionForward 通常在一个XML 文件中定义,这个配置文件在Struts 启动时载入。Struts 使用 XML 定义来创建Struts 配置,包括一个ActionForward的列表。可用来创建到欢迎页面链接的ActionForward 对象的XML 元素看起来可能像:

 

<forward
name="welcome"
path="/pages/index.jsp"/>

 

      这个元素事实上是创建了一个 ActionForward JavaBean ,其name 属性设置为welcome,path 属性设置为/pages/index.jsp。
      JSP 页面和其它组件就可以引用这里定义的welcome 转发。Struts 框架将查找welcome ActionForward bean 并获取其path 属性以完成这个超链接。这样开发人员可以改变链接的目标而不用改变所有引用该链接的相关组件。在很多Web 应用中,象这样的细节被硬编码到JSP 或 Java code 中,使维护变得困难并且容易发生错误。在Struts 应用中,这些细节可以通过应用配置来改变,而不用触及到具体的页面和Java 类。

 

      HTML表单

      Web 协议,即HTTP 和 HTML,提供了一个从表单中提交数据的机制,但却把数据的接收作为一个难题留给了开发人员。为此,Struts 框架提供了ActionForm 类。ActionForm设计来就是处理来自HTML 表单的输入:校验输入,重新显示表单以供用户进行修订(如果需要),以及伴随着相应的提示和错误信息。ActionForm 其实是具有一些用来来管理校
验和修订循环的标准方法的JavaBean。Struts 自动匹配JavaBean 属性和HTML 表单控件的属性。开发者只需定义ActionForm 类,余下的就交给Struts 。例如,这个类将自动用HTML 表单中同名的属性来组装username 域:

public final class LogonForm extends ActionForm
{
private String username = null;
public String getUsername() {
return (this.username);
}
public void setUsername(String username) {
this.username = username;
}
}

 

      其它属性也会根据表单中的每个输入域被自动加入。这使得其它组件可以从标准的JavaBean 取得它们想要的属性。所以,完全不需要对HTTP 请求进行详细解析。

      ActionForm 是按通常的JavaBean 类创建的。Struts 配置通过一系列描述符引用ActionForm 类: <form-beans> 和 <form-bean> 元素。<form-bean> 元素是框架用来识别和实例化ActionForm 对象的描述符:

<form-bean
name="articleForm"
type="org.apache.artimus.struts.Form"/>

 

      Struts 配置中要列出它使用的ActionForm bean 的清单,并给每个bean 一个在应用中被引用时的逻辑名(name 属性)。

 

      定制动作

      HTML 表单使用 action 参数来告诉浏览器将数据送到何处。Struts 框架提供相应的Action 类来接收数据。框架会自动创建、组装、校验和最后处理Action 对象所对应的ActionForm。这样,Action 就可以直接从ActionForm bean 取得它需要的数据。比如下例:

     

public final class LogonAction extends Action {
public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
MyForm myForm = (MyForm) form;
// ...
return mapping.findForward("continue");
}
}

      Action 根据返回到控制器的ActionForward 对象作出控制流的决定。这允许Action 选择一个逻辑名称,比如continue 或者 cancel,而不是具体的系统路径。

      为保证可扩展性,控制器也传递当前的请求和响应对象。实际上, Action 可以做所有JavaServlet 可以做的事情。

      除了ActionForward, ActionForm,和 Action 对象,Struts 控制器层还提供了几个特殊的组件,包括ActionMapping 和 ActionServlet。 Struts 也提供在控制器层的应用程序的本地化。

     

      ActionMapping

      在一个web 应用中,每个资源都必须通过URI 来进行引用。 资源包括HTML 页面,JSP页面,和定制动作。为了给定制动作一个URI, 或者说路径,Struts 框架提供了一个ActionMapping 对象。 象ActionForward 和 ActionForm 一样, ActionMapping 通常也在XML 配置文件中定义:

<action-mappings>
<action path="/logonSubmit"
type="app.LogonAction"
name="logonForm"
scope="request"
validate="true"
input="/pages/logon.jsp" />
</action-mappings>

 

      这也允许将同一个Action 对象定义为不同的ActionMapping。例如,其中一个映射要求校验而另一个映射不要求校验。

 

      ActionServlet

      Struts ActionServlet 完全在幕后工作,它将其他组件绑定在一起。虽然它也可以子类化,但大多数Struts 1.0 的开发人员将ActionServlet 处理为一个黑盒:他们只是配置它,然后让它自己工作。

 

      用Struts开发Web应用

      要使用Struts 开发web 应用,开发人员将需要的超链接定义为ActionForward,HTML 表单定义为ActionForm,定制的服务器端动作定义为Action 类。
      需要访问JDBC 和EJB 的开发人员也可通过Action 对象进行他们的工作。这样,表现层不需要和Model 层打交道。Struts Action 对象将收集View 需要的数据,然后将它们转发到表现页面。Struts 提供 JSP 标记库,它们将和JSP 页面一起使用,简化 HTML 表单和访问Action 要转发的其它数据。其它表现机制,比如Velocity templates, 也可用来访问
Struts 框架,以创建动态的web 页面。这种处理流程入下图:

     Action Object ---(Collect data)---> JSP tags ---(Format data for display)---> JavaServer Page

      

0
0
分享到:
评论

相关推荐

    Struts1 控制器组件和动态表单详解

    详细讲解Struts1控制器组件和动态表单问题

    Struts_WORD教程.rar

    Struts_1_Struts与JavaWeb应用介绍.doc ...Struts_4_Struts控制器组件.doc Struts_5_Struts视图组件.doc Struts_6_StrutsHTML标签库.doc Struts_7_StrutsBean标签库.doc Struts_8_StrutsLogic标签库.doc

    J2EE电子商务系统开发从入门到精通

    2.3 Struts控制器组件类..... 12 2.3.1 ActionServlet类..... 13 2.3.2 RequestProcessor类..... 16 2.3.3 Action类..... 26 2.4 Struts视图组件类..... 30 www.j2eedve.com 制作:找不着北 第 2 页 2007-7-27 2.4.1...

    Struts in Action中文版

    2.2.3. Struts控制器组件................................................................................................39 2.2.4. 用 Struts 开发Web 应用...................................................

    Struts2基本原理

    Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。 核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。...

    struts的教程.doc

    Struts ActionServlet控制器对象 8 Struts Action Classes 8 Struts Action Mapping 9 使用ActionForward导航 10 Struts ActionForm Bean捕获表单数据 11 Struts的其他组件 12 Validation Framework for ...

    struts in Action

    2.2.3. Struts 控制器组件................................................................................................39 2.2.4. 用Struts 开发Web 应用....................................................

    java Struts教程

    Struts ActionServlet控制器对象 8 Struts Action Classes 8 Struts Action Mapping 9 使用ActionForward导航 10 Struts ActionForm Bean捕获表单数据 11 Struts的其他组件 12 Validation Framework for Struts 12 ...

    Struts2详细工作流程

    Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。 3.1.1 核心控制器FilterDispatcher 核心控制器FilterDispatcher是Struts 2框架的基础,包含...

    Struts 2详细工作流程

    Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。 3.1.1 核心控制器FilterDispatcher 核心控制器FilterDispatcher是Struts 2框架的基础,...

    struts 教程 很好很详细

    Struts ActionServlet控制器对象 8 Struts Action Classes 8 Struts Action Mapping 9 使用ActionForward导航 10 Struts ActionForm Bean捕获表单数据 11 Struts的其他组件 12 Validation Framework for Struts 12 ...

    struts2 PPT 张冰

    struts2的介绍,struts框架结构、控制器组件、标签库以及详细的配置文件描述

    Struts2权威指南

    第1章 Struts 2概述1  1.1 MVC思想概述2  1.1.1 Web技术的发展2  1.1.2 Model 1和Model 24 ... 1.3.4 Struts 2的控制器组件19  1.4 Struts 2与Struts 1的对比20  1.5 WebWork和Struts 2对比21  1.6 本章小结22

    struts2-指南

    — Web 应用的发展 — Model 1 和Model 2 — MVC 思想 — MVC 模式的优势 — 常用MVC 框架及其特征 — Struts 1 的...Struts 2 的标签库 — Struts 2 的控制器组件 — Struts 1 和Struts 2 的对比

    struts 入门教程

    Struts ActionServlet控制器对象 8 Struts Action Classes 8 Struts Action Mapping 9 使用ActionForward导航 10 Struts ActionForm Bean捕获表单数据 11 Struts的其他组件 12 Validation Framework for Struts 12 ...

    Struts2.0基础知识培训

    — Web应用的发展 — Model 1和Model 2 — MVC思想 — MVC模式的优势 — 常用MVC框架及其特征 — Struts 1的基本结构及其存在的问题 — WebWork的基本结构 ...— Struts 2的控制器组件 — Struts 1和Struts 2的对比

    struts2.0(高清晰)

    — Web应用的发展 — Model 1和Model 2 — MVC思想 — MVC模式的优势 — 常用MVC框架及其特征 — Struts 1的基本结构及其存在的问题 ...— Struts 2的控制器组件 — Struts 1和Struts 2的对比

    javaee struts

    javaee struts 基础讲解 控制器组件

    深入Struts 1.1

    Struts 是基于Model 2之上的,而Model 2是经典的MVC(模型-视图-控制器)模型的Web应用变体,这个改变主要是由于网络应用的特性--HTTP协议的无状态性引起的。Model 2的目的和MVC一样,也是利用控制器来分离模型和...

Global site tag (gtag.js) - Google Analytics