`
wzl454823
  • 浏览: 39862 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts控制器组件

阅读更多
Struts控制器组件


Struts控制器组件主要包括:
ActionServlet组件:充当Struts框架的中央控制器。
RequestProcessor组件:充当每个子应用模块的请求处理器。
Action组件:负责处理一项具体的业务。

Struts控制器组件主要完成以下任务:
接受用户请求,根据用户请求调用何时得模型组件来执行相应的业务逻辑,获取业务逻辑执行结果,根据当前状态以及业务逻辑执行结果选择合适的视图组件返回给用户。


ActionServlet类
ActionServlet类是Struts框架的核心控制器组件,所有的用户请求都先由它来处理,然后把请求转发给其他组件。只允许有一个ActionServlet类,仅创建一个实例。

Struts框架初始化过程:
加载ActionServlet类,执行init()方法。(时序图见p97)。


RequestProcessor类
对于多应用模块的Struts应用,每个子模块都有各自的RequestProcessor实例。
在ActionServlet的process()方法中一旦确定了正确的子应用模块,就会调用子应用模块的RequestProcessor实例的process()方法来处理。


Action类
Action类是用户起请求和业务逻辑之间的桥梁,每个类充当客户的一项业务代理。在RequestProcessor类预处理请求时,创建Action实例后,就调用自身的processActionPerform()方法,该方法再调用Action的execute()方法。

Action类的execute()方法会返回一个ActionForward对象,他代表Web资源的逻辑抽象。
返回方法:return mapping.findForward("Success");

Action类的局部变量是每个线程独立的,而实例变量时被所有线程共享的。


使用内置的Struts Action类
1.ForwardAction类
负责请求转发,配置文件如下
<action
    path="/viewsignin"
    parameter="/security/signin.jsp"
    type="org.apache.struts.actions.ForwardAction"
    scope="request"
    name"loginForm"
    validate="false"
    input="/index.jsp">
</action>

2.IncludeAction类
包含另一个Web组件,配置如下:
<action
    path="/sample"
    parameter="sampleInclude.jsp"
    type="org.apache.struts.actions.IncludeAction"
    scope="request"
    name"sampleForm"
    input="/sample.jsp">
</action>
parameter属性指定要包含的组件。

3.DispatchAction类
继承DispatchAction类,可以在Action中写多个方法,配置如下
<action path="/car"
    type="netstore.order.ShoppingCartActions"
    scope="request"
    input="/order/shoppingcart.jsp"
    validate="false"
    parameter="method">
    <forward name="success" path="/order/shoppingcart.jsp" redirect="true"/>

method请求:
http://localhost:8080/netstore/action/cart?method=addItem&id=2
将调用addItem()方法。

4.LookupDispatchAction类
LookupDispatchAction是DispatchAction的子类,通常主要应用在一个表单中有多个提交按钮,而这些按钮又有一个共同的名字的场合。例子:
jsp片段:
//俩个按钮
<html:submit property="action">
    <bean:message key="button.saveorer">
</html:submit>
<html:submit property="action">
    <bean:message key="button.checkout">
</html:submit>
实现getKeyMethodMap()方法
protected Map getKeyMethodMap(){
    Map map = new HashMap();
    map.put("button.saveorder","saveorder");
    map.put("button.checkout","checkout");
}
Action中写俩种方法。
Struts配置:
<action path="/processcheckout"
    type="netstore.order.ProcessCheckoutAction"
    scope="request"
    input="/order/shipping.jsp"
    name="checkoutForm"
    validate="true"
    parameter="action">
    <forward name="Success" path="/order/payment.jsp"/>
</action>

利用Token解决重复提交
流程:
1.提交前请求转发给PrepareInsertAction调用saveToken(request)方法。创建令牌。
2.在jsp中form标签处理判断session范围是否存在Token。
3.提交表单后,InsertAction处理,首先调用isTokenValid(request)方法判断。
步骤:
1.创建PrepareInsertAction。execute()方法就一个saveToken(request);
2.修改InsertAction,在execute()方法开头添加判断。
3.Struts配置文件
<forward name="insert" path="/prepareinsert.do">
<action path="/prepareinsert"
    type=".....ParpareInsertAction">
    <forward name="success" path="insert.jsp">
</action>
1
1
分享到:
评论

相关推荐

    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