使用Struts之ActionForm
使用Struts之鸟瞰
当透过发送请求来到ActionServlet后,ActionServlet会从ActionMapping对象中得知所使用的ActionForm对象,这是在struts-config.xml中设定的,如果所需的ActionForm还不存在就生成一个,之后一直使用它,ActionMapping与ActionForm对象会被当作参数传递给Action对象。
在Struts 1.1中,ActionForm生成之后,会执行RequestProcessor的processPopulate()方法,首先它会呼叫 ActionForm的reset()方法,您可以在当中作一些重清ActionForm属性的动作,然而窗体的参数值会与ActionForm的 setter进行比对,如果有名称符合的就将窗体的参数值设定给对应的属性。
我们透过继承ActionForm类别来使用它,下面是一个简单的例子:
ActionForm类别编译后必须放置于WEB-INF中,并包括套件阶层,我们必须在struts-config.xlm中定义Action对象使用哪一个ActionForm对象:
在这个例子中,<form-bean>标签定义了所使用的ActionForm对象及 名称,而在<action>标签的设定中,LoginAction指定了userForm作为其所使用的ActionForm,我们的 LoginAction类别如下:
ActionForm被作为参数传递至execute()方法,我们必须转换为其原来的形态 UserForm,这样才可以取出当中的属性值,在验证使用者的名称与密码无误后,我们查找greeting的ActionForward对象并传回,这 会使得ActionServlet将请求forward至greeting.jsp:
<login:present>标签会查看指定的范围中是不是有指定名称的 JavaBean对象,如果有的话就使用<bean:write>写出指定的属性,而<login:notPresent>的作 用恰恰相反,如果没有指定名称的JavaBean对象,就给出一个超级链接要求先进行登入,<html:link>的forward属性会查 找struts-config.xml中的<global-forward>的welcome设定。
如果验证失败,则查找welcome的ActionForward对象并传回,也就是Welcome.jsp,我们用之为登入窗体:
<html:form>指定的LoginAction必须在struts-config.xml 中有定义,<html:text>与<html:password>会取出对应的ActionForm对象中对应的属性值,如果 使用者填写的内容不正确而被送回Welcome.jsp,使用者将可以看到先前所填写的值,如果不想显示先前所填写的值,则将<html: text>与<html:password>的redisplay属性设定为false即可,这几个Struts卷标必须与Action对象及ActionForm对象搭配使用。
接下来您可以测试一下程序,连上http://localhost:8080/HelloStruts/,如果您填写了正确的窗体字段并送出,则结果会如下:
ActionForm在Struts中是属于视图组件的一部份,它是窗体的对象化窗体,窗体的参数会自动设定给 ActionForm,无法对应的就加以忽略,您可以定义validate()方法来验证窗体设定的内容,这在下一个主题中将加以说明,在 ActionForm中您可以填入窗体值,作一些适当的值转换,进行基本的数据验证,ActionForm是窗体数据发送至应用程序前的缓冲区,在某些程 度上,它是应用程序的防火墙,您可以在ActionForm中避免不正确或不安全的数据进入应用程序。
综合一下,ActionForm担任以下的几个职责:
*窗体字段的耕耘者
*数据的缓冲区
*数据的验证
*进行属性值的转换
*应用程序防火墙
==================================================================================
The End
<script type="text/javascript" src="http://www.google.com/reader/ui/publisher.js"></script> <script type="text/javascript" src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&callback=GRC_p(%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D)%3Bnew%20GRC"></script>
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
使用Struts之ActionForm相关推荐
- 【Struts】——ActionForm
上篇示例中我们看到了ActionForm,这篇我们详细了解一下: ActionForm是用于封装用户的请求参数的.上篇我们也提到了:(在ActionForm中设置用到的数据,需和表单保持一致.因为提交 ...
- Struts中ActionForm的生命周期
ActionForm有两种生命周期,一种是Request,另外一种是Session,经常使用的是Request,也就是ActionFom都是存在于一个Request中,也就是从一个客户请求开始到最终响 ...
- Struts中ActionForm的初始化步骤
在ActionServlet接收到某个请求并将这个请求交给具体的某个Action处理之前,struts框架会检查配置文件中对应action的name属性是否设置.如果设置了,就会根据scope属性,在 ...
- java struts技术_java技术框架之:struts
一:struts的优缺点 优点: 1.开源: 2.利用Struts提供的taglib可以大大节约开发时间. 3.维护扩展比较方便.通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有 ...
- spring+struts+hibernate分页 完整版,项目使用中
package com.yizhou.common.test; /** * * Copyright @ 2008 YIZHOU SOFTWARE Co. Ltd. * All right res ...
- Struts+Spring+Hibernate练习(完整)(1)
转载:[url]http://www.blogjava.net/oksonic/archive/2005/11/06/18370.html[/url] 工具: Eclipse3.1.MyEclipse ...
- 具体分析Struts工作流程
1.Webclient提交数据到Tomcat,在form表单中需说明表单提交的action是*.do或*.action,mothod是post或get: 2.Tomcat接收Webclient提交的表 ...
- struts(三)——struts框架实现登录示例
前两篇讲解了struts框架的基本实现,自己感觉讲的也有些枯燥,今天拿登录的例子来做一个实现. 1.新建一个javaweb项目,并将struts的jar包拷贝到WebRoot/WEB-INF/lib下 ...
- 一个简单的struts的例子
index.jsp 代码 <%@ page language="java" import="java.util.*" pageEncoding=" ...
- Eclipse开发struts完全指南
一.准备安装程序 1.JDK 5.0 安装程序下载 同意协议后,可以下载jdk-1_5_0_05-windows-i586-p.exe. 2.tomcat 5.5.9下载 下载地址:http://ja ...
最新文章
- 存储过程学习笔记(SQL数据库
- C++学习基础七——深复制与浅复制
- SPOJ4487(Splay树)
- 实现物联网项目,你需要提前知道的6件事情
- linux下解压 cpio.gz格式文件
- LeetCode 995. K 连续位的最小翻转次数(差分思想)
- selenium java项目_1)selenium+ java集成,待深度项目流程应用
- Oracle Golden Gate 系列十二 -- GG 数据初始化装载二 基于SCN 的初始化 说明 与 示例...
- c++ python混合编程 restful_How to use Python to build a RESTful Web Service
- ArrayList常用函数
- 这才是打开风变编程的正确操作方式
- 2021全国特种设备-R1快开门式压力容器充装模拟考试题库一[安考星]
- 2019JAVA面试题精粹附答案
- 【卷积神经网络环境搭建学习笔记】
- 卫星影像免费下载地址
- 成为大数据工程师需要具备什么能力?发展前景好么
- 这届世界杯真是谁预测谁尴尬,他却要来一次现场直播预测……
- 初识深度学习(将各方所写融合)
- 谷歌老闪退啊 和 pycharm版本问题 and 微信闪退
- 联想变阵记:不断调整策略架构能否助联想摆脱困局?