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>标记定义的,下面我们将以登陆这个经典例子介绍其使用:

<form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">
    
<form-property name="userName" type="java.lang.String"/>
    
<form-property name="passWord" type="java.lang.String"/>
</form-bean>


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的请求该请求被提交到一系列的过滤器当中,所有的请求都会被前端控制器截获,再根据映射器来确定调...

Struts2 整合 Spring 应用实例

Struts2 整合 Spring 应用实例 我们知道struts1与spring整合是靠org.springframework.web.struts.DelegatingActionProxy来实...

Struts2 的基本应用

1搭建Struts2开发环境 Struts2是在WebWork2基础发展而来的。和struts1一样, Struts2也属于MVC框架。不过有一点大家需要注意的是:尽管Struts2和strut...

struts2建立一个最简单的web应用

从头开始,一切明了。 用struts开发也有一段时间了。但自己却一直没有接触框架的内容。今天徒手建了一个最简单的struts2 的web应用。 1,直接在Tomcat webapps 下面建立一个...

struts2详细配置及应用

1、1、action访问路径 2、Action访问路径的匹配顺序 3、Action配置中的常见默认值 4、ActionSupport 5、Struts2常量 6、使用多个struts配置文件

Web应用web.xml的Struts2的配置

web.xml是web应用中加载有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用。通常,所有的MVC框架都需要Web应用加载一个核心控制器,那采取什么方法...

Struts应用系统案例设计之需求分析

某公司是一家处于快速发展中的中小型销售公司,他们打算架构一个网站。计划分两步走:首先做一个宣传型的网站,然后在公司规模达到一定程度时扩展为网上商店。    在第一步计划中,某公司的主要想法是通过...

mvc模式在spring和struts2中应用及原理

mvc在spring中的原理 (1)启动服务器,根据web.xml 的配置加载前端控制器(也称总控制器) DispatcherServlet 。在加载时、会完成一系列的初始化动作。 (2)根据se...

Struts2标签OGNL简单应用

Title success!!${id} <s:property default="0"
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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