strust1.x中formbean的原理及作用
from: http://blog.csdn.net/tuiroger/article/details/3947896
今天张老师讲了一些比较重要的strust标签,<html:link>,<html:text>。formbean的原理及作用,还有formbean表单校验以及表单校验后如何处理,并进行了举例验证说明,把例子代码敲了一遍,颇有收获。
<html:link>标签的三个好处:
使用<html:link action=“/action”/>不用关心web应用程序的路径和ActionServlet的映射路径。
可以自动在url后面附加jsessionid参数进行url重写。可以用以下方法进行验证。启动一个新浏览器访问第一个Action,查
看<html:link>生成的超链接地址,刷新后再查看这个超链接地址,比较差异可以看到<html:link>标签的url
重写功能。
可以对参数信息进行url编码。 另外: jtsl标签<c:url>标准标签也有<html:link>标签的后两个作用。
在使用<html:link>标签时需要注意的是:
在<html:link>的action属性值的路径后中直接加参数,但是不能对其中的中文字符进行url编码。
使用paramID和paramName等属性设置一个参数,可以完成中文参数的url编码。
可以使用name和property属性来设置多个参数。
<html:text>必须放
在<html:form>标签中,回显时就是从那个<html:form>关联的formbean中取出的数
据。<html:form>的action属性用于指定它要关联到的formbean。action属性指定的Action类必须有它关联的
formbean,否则会出异常。<html:form>会创建一个formbean,这样其包含的<html:text>才会
从formbean中取数据进行回显。在表单提交之前生成的formbean是空的,里面不包含数据。(张老师找到了源代码进行说明)可以设置一个int
型的age在jsp页面用<html:text>进行显示,第一次打开页面就显示0,因为int型的默认值为0,也能够验证这个。
<html:text>的两个作用,1,生成<input type="text">代码,2,其property属性的值填充进文本框。
formbean的工作原理
如果某个Action关联了一个FormBean,那么,当浏览器请求这个Action时,Struts框架将创建这个FormBean,把这个FormBean存储在相应的Web域中,并用请求参数来填充这个formbean。
对于请求消息中的每个参数(包括网页表单中的每个字段),其相关的ActionForm 通常都有一个对应的属性来接受相应的参数值。
FormBean
表单校验,formbean可以对填充其的每个参数进行校验,校验出错了就返回到刚才填写表单信息的页面,并显示上次填入的内容和错误提示信息。错误信息
和表单中原来填写的数据是如何传递给jsp页面呢?
把数据装在一个对象中,再把对象存储在request作用域中。这样就可以在JSP页面中取出Request域中是数据并进行显示了。validate方
法返回的errors对象就是要给后面的jsp页面显示用的,errors对象中要存储的就是要显示错误信息,把errors存储在request中,应
该使用request.setAttribute(“属性名”,erros);存入的属性名是一个固定的特殊名称,这
样<html:errors>才能使用这个属性名从请求域中取错误。存储的关键字是Globals.ERROR_KEY。
Struts1 Action 属性详解
一、Struts的Action的一些属性的具体意思?
Struts中Action的一段定义如下
<action>
attribute="aaForm"
input="/aa.jsp"
name="aaForm"
path="/aa"
scope="request"
type="com.yourcompany.struts.action.AaAction">
<forward name="aa" path="/aa.jsp" />
</action>
二、Struts中Action的属性详解
/*
attribute:指定ActionForm保存到指定上下文所使用的属性名,如果不指定attribute属性值,
将使用name属性值作为保存时的属性名。即attribute的默认值就是name属性值。
input: 该Action中相关ActionForm获取用户输入的输入页面,当将ActionForm设为自动验证输入数据,发现不合法数据返回错误时,将返回该页面
name: 当前Action中用到的ActionForm的名字,其具体信息在配置文件其他地方另有详细定义
scop:指定保存ActionForm上下文的范围。即Action中所用到的ActionForm的生存期,可以为“request”或“session”,随着生存期的设置,该Action也会在相应的时间被创建
validate:如果本属性为true则在Action动作之前其对应的ActionForm的validate方法会自动被调用,一般用以验证用户输入的数据
forward:设置处理用户请求的serverlet或其它资源如Jsp页面等。如指定了这属性则type属性就会失去作用
严格来说<forward,include,type>属性应该使用且只使用其中的一个。 这属性用于跳转到另一个非Action处理程序中。
unknown: 如果将该属性设置为true,那么就是声明这个Action将处理整个应用中所有未找到相应处理Action的请求,当然,一个应用系统中也只会有一个Action的unknown属性可以设为true
Prefix:用来匹配请求参数与bean属性的前缀
Suffix: 用来匹配请求参数与bean属性的后缀
*/
与scope有关,比如scope="request" 时,可以通过request.getAttribute(attribute的值)来获取Form对象
而name对应于前面form的定义。forward 中的name可以说是页面的一个别名,转发时根据名字就行了
可以转发多个,如定义了两个forward success和error
<forward name="success" path="/aa.jsp" />
<forward name="error" path="/bb.jsp" />
strust1.x中formbean的原理及作用的更多相关文章
- php在web服务器中的工作原理
1.web工作原理 我是学习PHP网站建设的,那么网站在客户端和服务端的运行是网站运行的根本所在,那个这个运行过程是怎样的呢?我们一探就将! Web:终端 服务器web:我们把提供(响应)服务的计算机 ...
- 图像处理中的数学原理具体解释21——PCA实例与图像编码
欢迎关注我的博客专栏"图像处理中的数学原理具体解释" 全文文件夹请见 图像处理中的数学原理具体解释(总纲) http://blog.csdn.net/baimafujinji/ar ...
- MFC中CArray类原理及其应用
1.CArray类应用 函数简介CArray::GetSize int GetSize( ) const;取得当前数组元素个数. CArray::GetUpperBound int GetUpperB ...
- Block中__block实现原理
三.Block中__block实现原理 我们继续研究一下__block实现原理. 1.普通非对象的变量 先来看看普通变量的情况. #import <Foundation/Foundation.h ...
- 5.Javascript闭包得实现原理和作用
闭包的实现原理和作用 1.闭包的概念:指有权访问另一个函数作用域中的变量的函数,一般情况就是在一个函数中包含另一个函数. 2.闭包的作用:访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机制 ...
- 前端知识体系:JavaScript基础-作用域和闭包-闭包的实现原理和作用以及堆栈溢出和内存泄漏原理和相应解决办法
闭包的实现原理和作用 闭包: 有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式就是,在一个函数中创建另一个函数. 闭包的作用: 访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机 ...
- linux中test与[ ]指令的作用
linux中test与[ ]指令的作用: 在Linux中,test和[ ]功能是一样的,类似于c语言中的( ).不过Linux的test和[ ]是指令.在和if或者while联用时要用空格分开.
- Flex中 Array 的IndexOf 的作用
Flex中 Array 的IndexOf 的作用 1.说明 indexOf用于在索引中从小到大查找,假设查得到就返回索引值,查不到就返回-1: 2.实例 (1)设计源代码 <?xml ve ...
- java中instanceof和getClass()的作用
初学者难免有点混淆java中instanceof和getClass()的作用, 下面就来一一讲解. 父类A: class A { } 子类B: class B extends A { } 构造对象 ...
随机推荐
- 把Mvc4项目部署到虚拟目录之后找不到control想到的文件路径规范的问题
最近部署的项目的时候由于端口不够用,想到了把Mvc项目部署到虚拟目录中,结果发现图片,js设置control都找不到了.项目是mvc4+easyui开发的,大量的代码都是在js中调用control,写 ...
- 拖尾渲染器 Trail Renderer
拖尾渲染器(Trail Renderer)用于制作跟在场景中的物体后面的拖尾效果来代表它们在到处移动. 必须给Materials一个材质渲染器设置的Colors才有效. 展示自己的一个demo...
- BZOJ 1729: [Usaco2005 dec]Cow Patterns 牛的模式匹配
Description 约翰的N(1≤N≤100000)只奶牛中出现了K(1≤K≤25000)只爱惹麻烦的坏蛋.奶牛们按一定的顺序排队的时候,这些坏蛋总会站在一起.为了找出这些坏蛋,约翰让他的奶牛排好 ...
- MYSQL SHOW VARIABLES简介
原文地址:http://www.2cto.com/database/201108/100546.html mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操 ...
- Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)
原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对In ...
- 3.5MM/2.5MM耳机插头定义
自2009年国内手机耳机接口统一以来,现在国内销售耳机基本就3.5MM和2.5MM两种,当然也有很少BT厂家,就是不用这两种,比如使用MiniUSB等接口作为耳机接口.3.5mm耳机插头按照结构划分, ...
- 解决“重新安装vmware-tools”灰色而无法安装的问题
前几天重装系统,之后虚拟机需要重新装,装好后要使用vmware-tools实现文件共享,却发现虚拟机那里显示为灰色的,无法安装vmware-tools,在共享文件夹那里设置好共享的文件夹猴也没有用,/ ...
- JAVA实现word doc docx pdf excel的在线浏览 - 仿百度文库 源码
我们具体实现思路是这样的 首先下载并安装openoffice和swftools openoffice下载地址:http://www.openoffice.org/download/index.html ...
- 【HDOJ】3071 Gcd & Lcm game
刚开始看这个题目,觉得没法做.关键点是数据小于100.因此,可以枚举所有小于100的素因子进行位压缩.gcd就是求最小值,lcm就是求最大值.c++有时候超时,g++800ms.线段树可解. /* 3 ...
- 注意EntityFramework.extended中的坑
EntityFramework.extended 的好处就不用多说了 详情:https://github.com/loresoft/EntityFramework.Extended 但是使用时还是要注 ...