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" />

时间: 2024-10-09 17:28:50

strust1.x中formbean的原理及作用的相关文章

图像处理中的数学原理详解17——卷积定理及其证明

欢迎关注我的博客专栏"图像处理中的数学原理详解" 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 图像处理中的数学原理详解(已发布的部分链接整理) http://blog.csdn.net/baimafujinji/article/details/48751037 1.4.5   卷积定理及其证明 卷积定理是傅立叶变换满足的一个重要性质.卷积定理指出,函数卷积的傅立叶变

图像处理中的数学原理具体解释21——PCA实例与图像编码

欢迎关注我的博客专栏"图像处理中的数学原理具体解释" 全文文件夹请见 图像处理中的数学原理具体解释(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 假设你对PCA的推导和概念还不是非常清楚.建议阅读本文的前导文章 http://blog.csdn.net/baimafujinji/article/details/50372906 6.4.3 主成分变换的实现 本小节通过一个算例验证一下之前的推导.在前面给出的

图像处理中的数学原理详解21——PCA实例与图像编码

欢迎关注我的博客专栏"图像处理中的数学原理详解" 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 图像处理中的数学原理详解(已发布的部分链接整理) http://blog.csdn.net/baimafujinji/article/details/48751037 如果你对PCA的推导和概念还不是很清楚,建议阅读本文的前导文章 http://blog.csdn.net/

Block中__block实现原理

三.Block中__block实现原理 我们继续研究一下__block实现原理. 1.普通非对象的变量 先来看看普通变量的情况. #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { __block int i = 0; void (^myBlock)(void) = ^{ i ++; NSLog(@"%d",i); }; myBlock(); return 0; } 把上述代

路由器原理及作用以及交换机

路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程[1]  .路由工作在OSI参考模型第三层--网络层的数据包转发设备.路由器通过转发数据包来实现网络互连.虽然路由器可以支持多种协议(如TCP/IP.IPX/SPX.AppleTalk等协议),但是在我国绝大多数路由器运行TCP/IP协议.路由器通常连接两个或多个由IP子网或点到点协议标识的逻辑端口,至少拥有1个物理端口.路由器根据收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路

前端知识体系:JavaScript基础-作用域和闭包-闭包的实现原理和作用以及堆栈溢出和内存泄漏原理和相应解决办法

闭包的实现原理和作用 闭包: 有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式就是,在一个函数中创建另一个函数. 闭包的作用: 访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机制处理 因为函数内部声明 的变量是局部的,只能在函数内部访问到,但是函数外部的变量是对函数内部可见的,这就是作用域链的特点了. 子级可以向父级查找变量,逐级查找,找到为止 因此我们可以在函数内部再创建一个函数,这样对内部的函数来说,外层函数的变量都是可见的,然后我们就可以访问到他的变量了. <scr

分布式系统中的CAP原理

分布式系统中的CAP原理,布布扣,bubuko.com

asp.net中session的原理及应用

Session简介丶特性 1.Session是一种Web会话中的常用状态之一. 2.Session提供了一种把信息保存在服务器内存中的方式.他能储存任何数据类型,包含自定义对象. 3.每个客户端的Seesion是独立存储的. 4.在整个会话过程中,只要SessionID的cookie不丢失,都会保存Session信息的. 5.Session不能跨进程访问,只能由该会话的用户访问.应为提取Session数据的id标识是以Cookie的方式保存到访问者浏览器的缓存里的. 6.当会话终止,或过期时,服

linux中mmap系统调用原理分析与实现

参考文章:http://blog.csdn.net/shaoguangleo/article/details/5822110 linux中mmap系统调用原理分析与实现 1.mmap系统调用(功能)      void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )      内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的