Struts应用篇(一)

原创 2006年06月01日 14:07:00

StrutsDynActionForm:

 

   DynaActionForm提供了一种方便的机制,一定程度上解决了ActionForm的重复存在理由,而且也为在Struts里实现动态的DTO带来了一个简便的实现方式。DynaActionForm可允许动态的和页面中的表单属性同步(而不用重构)。这意味着你能够在你的struts-config.xml文件中定义属性并且将表单类型设置为org.apache.struts.action.DynaActionForm。不需要写对应的ClassDynaActionForm使用Apache公共项目中的DynaBean完成这些操作。这一动态的行为是通过反射(reflection)与哈希图(Hashmaps)提供的,所以任何事物都是双刃剑,他的灵活是在牺牲了部分性能的前提下实现的.但我们都不是完美主义者,实效是第一。难道我们因为反射的那点消耗就抛弃SpringIoc?随之而来的抛弃基于IocAop?就和找老婆一样,我要的是综合性能最好,不难看,贤惠,持家有道,满足了。

 

DynaActionForm是在struts-config.xml文件中使用<form-bean><form-property>标记定义的,下面我们将以登陆这个经典例子介绍其使用:


JSP
页面和普通ActionForm下使用相同。就连struts-config.xml中的对应action标记配置也是相同的。

 

有所不同是在Action中的访问代码:

DynaActionForm loginForm = (DynaActionForm)form;

 

通过DynaActionForm里的Object getString propertyName)方法获取对应属性的值,通过void set(String propertyName , Object value)为指定名称的属性赋值。

 

这样当页面表单内容进行改变时,只要对XML文档进行些须改动就可以了。对于那些在“善变”的项目经理或系分下过日子的Coder都可以考虑下,不然被他们折磨可不是一件舒坦的事。

 

饭后小甜点:

1、对于表单采取Checkbox类型的,对应属性类型应类似为java.lang.String[]

2、  要实现ActionForm中的reset()可以通过initialize(ActionMapping mapping)替代

3、  要实现validate()方法,通过Validator框架

StrutsDispatchAction:

  可能很多朋友编写Struts程序的时候在他的Action里面一般都只会有一个execute()方法,或者说只有一个返回值为ActionForward的方法。这里给大家提供一种可以将多个Action合并为一个Action的方法,即我们的Action里将存在多个返回值为ActionForward的方法,而且可以让多个动作里的Action都是一个,但他们行使不同的操作。

实现方式:以前我们的Action都是继承org.apache.struts.action.Action,那么现在我们换个方式,继承于org.apache.struts.action.DispatchAction。然后我们在里面写上若干返回值为ActionForward的方法。

这个时候可能很多朋友问,那我们能不能把所有的Action都写到一个里面呢?可以,但不推荐,我推荐将相关的操作放一起,例如:对于某张表的CRUD操作。例如登入、出。这样维护要方便,开发也可以模块化。

 

那么下面我介绍下对非executeAction方法访问的方法:

首先,你必须在对应Actionaction配置中加入parameter属性,并且给他一个值,例如:

<action  path=”/GoodsSave” type=”edu.yclc.struts.action.GoodsSaveAction”

name=”goodsSaveForm”

scope=”request”

attribute=”goodsSave”

parameter=”method”>

这里我给的值是method

 

那么我们可以通过GoodsSave.do?method=insert的方式调用名称为insert的对应的Action方法。其他方法同理。

 

 

Struts之多模块开发:

在开发中,经常出现一个项目有多个Coder负责分块开发的,但开发完毕后项目的整合却是个很大的问题,Struts在这方面也提供了强力支持。

web.xml中相关ActionServlet的配置默认下有个参数:

<init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>

用于指定对应的struts配置信息,在下面模块开发中,开发者可以替换点该部分为自己的:例如:

<init-param>
         <param-name>config/
Goods
</param-name>
         <param-value>/WEB-INF/struts-config-goods.xml</param-value>
    </init-param>

 

到最后做整合的时候只需要将所有模块的文件拷贝到一起,然后将下面模块的init-param内容放置到主模块的web.xml相应位置即可。

那么如何访问各个模块的内容呢?例如主模块要访问子模块内容?

例如访问子模块中的GoodsSave.do,可以通过如下方式:

<html:form action=”/Goods/GoodsSave”>注意和配置文件中的子模块名相同的地方

 

以上对Struts应用的3个方面做了一个简单的介绍,下一次将对Struts中利用Token Ring实现防表单被重复提交进行一个介绍,并且给出小笔以前在项目中用AOP实现的相同功能的类的说明。然后简单介绍下Validator框架的简单使用。

 

 

 

 

 

 

 

 

 

 

 

Java 之JNI基础篇(一)

JNI,即Java Native Interface。它其实就是一套java与本地代码交互的接口或者说是一个协议。通俗的比喻,就是中国人讲中国话,日本人讲日本话,于是中国人碰到日本人,各说各话,无法交...
  • yingshukun
  • yingshukun
  • 2018年01月13日 18:51
  • 10021

JPA 学习篇(一)JPA简介

【JPA 简介】JPA(Java Persistence API)         JPA 不是一个ORM 的框架, 而是一个ORM 的规范,只指定了一些接口, 具体的实现由应用服务器厂商来提供实现。...
  • zgf19930504
  • zgf19930504
  • 2015年11月04日 10:10
  • 239

一些面试基本知识(JAVA篇二)

进程与线程之间的联系与区别 参考: 操作系统 从操作系统讲起吧进程: 在多任务系中,每一个独立运行的程序就是一个进程,也可以理解为当前正在运行的每一个程序都是一个进程。具体来说,进程由以下方面组...
  • gyhgx
  • gyhgx
  • 2017年04月06日 15:41
  • 745

那些年收藏的技术文章(一)-CSDN篇

Android Android基础及相关机制 Android View体系 Android坐标相关 Android事件机制及相关问题 Android官方组件 Android Service Andro...
  • cjpx00008
  • cjpx00008
  • 2016年12月25日 21:39
  • 2219

C# 基础知识 (二).独特的知识及用法篇

在C#中有一些我自己认为比较独特的知识点,这些知识点是我经常使用的知识,但对它们的了解还是比较少的,所以通过查找资料学习,总结了这些独特的知识点并简单叙述,希望对大家有所帮组!其中主要有:var关键字...
  • Eastmount
  • Eastmount
  • 2013年08月25日 01:34
  • 3029

基于Struts开发的入门级应用Helloworld

由于自己近期在学习SSH框架,因此把学习的过程记录下来。 创建Struts应用首先要下载struts源码和进行相应的配置,struts的下载和配置参照我前面的博客。 一.打开myeclipse,新...
  • longshengguoji
  • longshengguoji
  • 2014年11月30日 12:23
  • 1599

Struts 应用转移到 Struts 2

 翻译:SpringSide团队   转载请注明出处。有很多人都很熟悉 Struts, 无论是从项目中直接获得的实战经验还是从书中了解到的。我们这一系列文章,将通过一个由 Stuts 转移到 Stru...
  • chenzijun20082008
  • chenzijun20082008
  • 2006年12月09日 00:33
  • 1770

将Struts应用迁移到Struts 2(二)

我们已经从较高层解释了整个框架的结构,请求流程的基础,配置方式和Struts2和Struts1的不同之处。了解这些后从Struts 应用 迁移到 Struts 2 不再是难事。    在这篇文章中,我...
  • mljmalongjiang
  • mljmalongjiang
  • 2008年03月26日 11:07
  • 663

深度学习word2vec笔记之应用篇

深度学习word2vec笔记之应用篇 声明: 1)该博文是Google专家以及多位博主所无私奉献的论文资料整理的。具体引用的资料请看参考文献。具体的版本声明也参考原文献...
  • mytestmy
  • mytestmy
  • 2014年08月16日 13:57
  • 12233

Struts 应用转移到 Struts 2 一

Struts 应用转移到 Struts 2 一   有很多人都很熟悉 Struts, 无论是从项目中直接获得的实战经验还是从书中了解到的。我们这一系列文章,将通过一个由 Stuts 转移到 Strut...
  • SmartTony
  • SmartTony
  • 2007年10月27日 01:25
  • 1391
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts应用篇(一)
举报原因:
原因补充:

(最多只允许输入30个字)