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相恋》(高级篇)四——利用struts2框架开发简单的web应用程序

首先,我们来看看struts2框架处理数据的流程: 客户端产生一个HttpServletRequest的请求该请求被提交到一系列的过滤器当中,所有的请求都会被前端控制器截获,再根据映射器来确定调...

Struts 、Hibernate 、Spring 应用篇

  • 2008年06月19日 17:34
  • 531KB
  • 下载

struts2框架是如何应用反射的

struts2框架是如何应用反射的

Struts1.x系列教程(11):Validator验证框架高级应用

在《Struts1.x系列教程(10):Validator验证框架入门》一文中给出的例子中的name、age和email都是简单的属性,如果是嵌套的属性(也就是一个属性的数据类型是另外一个带有属性的类...

Struts2和hibernate3的简单应用-登录验证

一首先是导入jar包 二Struts配置 三hibernate配置

struts2-多国语言国际化应用过程

转自:http://blog.sina.com.cn/s/blog_6608320c0100j4n1.html struts2-多国语言国际化应用过程: 1、新建三个.properties,分别为 ...

eclipse 环境下整合 struts2+spring+hibernate 开发web应用常见问题及解答

1. org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned be...

J2EE Web应用的轻量级解决方案:SSH(Spring+Struts+Hibernate)解析

SSH(Spring+Struts+Hibernate)解析 一个spring2.5+hibernate3.2+struts2.0组合框架,使用spring的 IoC来管理应用的 所有b...

Java语言与应用框架——Struts官方文档

原文地址:http://struts.apache.org/primer.html

struts2详细配置及应用

1、1、action访问路径 2、Action访问路径的匹配顺序 3、Action配置中的常见默认值 4、ActionSupport 5、Struts2常量 6、使用多个struts配置文件...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts应用篇(一)
举报原因:
原因补充:

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