使用Struts2 验证框架,验证信息重复多次出现

版权声明:本文为博主原创文章,未经博主允许不得转载。

问题描述:第一次提交表单。某个数据不符合规则,就会出现一条错误信息。再次提交,上次显示的错误信息不消失,又多出一条一模一样的错误信息。提交几次,就会多显示几条一模一样的错误信息。    

  刚开始发现这个问题还一直以为是spring和struts整合时的错误,查阅了诸多资料,了解了一下struts的校验规则:

  -->即先进行validation的校验,如果不符合,直接跳转到input页面,不再进入action,同时填充fielderror字段,页面可以通过访问fielderror来获取错误提示。

  而且struts2的action不是单例模式,每提交一次就会生成一个对象,所以必须在spring对action的设置中加入scope="prototype" 属性。即

  在spring的配置文件中Action配置修改,加入scope="prototype"即可(scope="prototype" 会在该类型的对象被请求时创建一个新的action对象。如果没有配置       scope =prototype则添加的时候不会新建一个action,他会保留上次访问的过记录的信息。)

  spring 默认scope 是单例模式,这样只会创建一个Action对象,每次访问都是同一个Action对象,数据不安全。 比较而言struts2 是要求每次访问都对应不同的Action

  而scope="prototype" (多例模式)可以保证当有请求的时候都创建一个Action对象
1 <!-- 配置RegisterAction -->
2     <bean id="registerAction" class="com.blog.action.Register" scope="prototype"> <!--加入scope="prototype" -->
3         <property name="userService">
4                 <ref bean="userService"/>
5         </property>
6
7     </bean>

  顺便贴下struts.xml中的配置:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2
 3 <!DOCTYPE struts PUBLIC
 4     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 5     "http://struts.apache.org/dtds/struts-2.0.dtd">
 6
 7 <struts>
 8     <constant name="struts.i18n.encoding" value="gb2312"></constant>
 9     <package name="struts2" extends="struts-default">
10         <action name="register" class="registerAction"> <!-- registerAction 即是对上面id为registerAction的引用,也就是struts2和spring的整合-->
11             <result name="success">/success.jsp</result>
12             <result name="error">/error.jsp</result>
13             <result name="input">/register.jsp</result>
14         </action>
15     </package>
16 </struts>
时间: 2024-12-30 03:46:10

使用Struts2 验证框架,验证信息重复多次出现的相关文章

Struts2(十二)使用验证框架验证数据较验

一.数据验证 1.1.为什么要进行数据验证 对数据的合法性进行检查,只允许合法的数据进入应用程序 1.2.在哪里实现数据验证 客户端验证: 数据提交前在客户端验证 可使用JavaScript或者JQuery实现 特点:减少客户等待时间,减小服务器压力 服务器端验证: 在数据提交后服务器端验证 特点:防止“绕过”客户端验证提交非法数据 可以在服务器端处理数据前确保数据的合法性 1.3.Struts2有两种方式实现服务器端数据验证 使用ActionSupport编码实现验证 使用验证框架实现验证 二

服务器端验证--验证框架验证

优点:无须写代码,简化工作量,修改验证无须修改代码,利于后期维护. 在那个需要验证的action中写xml文件  文件名有讲究啊   那个action的类名-validation.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" &quo

struts2(三)---struts2中的服务端数据验证框架validate

struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个action中进行数据验证时,可以重写这个方法.数据验证往往是在客户端向服务端提交表单信息时进行的,比如execute方法负责处理表单信息并返回相应的结果,在此之前,validate会先对提交的表单信息进行验证: ->验证通过:会执行execute的相应操作. ->验证失败: –>定义了失败后的re

struts2学习笔记(三)—— 在用户注冊程序中使用验证框架

实现目标: 1.使用验证框架对用户注冊信息进行验证 2.验证username.password.邮箱不能为空 3.验证username.password长度 4.验证邮件地址格式 详细实现 一.Struts2应用的基础配置 这里不做具体阐述,具体为web.xml.相关jar包的配置 二.将页面显示的文本内容放到资源文件里 1.查看用户注冊程序中的全部页面,找到全部能够显示的文本内容,将它们分离出来放到资源文件里. 2.与相关的Action类同名,以.preperties为扩展名,与Action类

struts2学习笔记(三)—— 在用户注册程序中使用验证框架

实现目标: 1.使用验证框架对用户注册信息进行验证 2.验证用户名.密码.邮箱不能为空 3.验证用户名.密码长度 4.验证邮件地址格式 具体实现 一.Struts2应用的基础配置 这里不做详细阐述,具体为web.xml.相关jar包的配置 二.将页面显示的文本内容放到资源文件中 1.查看用户注册程序中的所有页面,找到所有可以显示的文本内容,将它们分离出来放到资源文件中. 2.与相关的Action类同名,以.preperties为扩展名,与Action类位于同一个包中,只能由该Action访问 R

[JavaWeb基础] 015.Struts2 表单验证框架

在web开发的过程中,我们经常要用到一些填写表单的操作,我们一般都要在提交表单信息的时候对表单的内容进行验证,struts2给我们提供了简单的实现接口,让我们可以很容易的对表单进行验证.下面讲解下最传统的方法配置表单验证框架,还有更简单明了的就是利用注解,这里就不解释了. 1.首先我们要在要进行配置的Action的同级目录下,新建一个.xml文件,命名格式为:ActionClassName-validation.xml. 例如我的Action类名为:RegisterAction   那么xml名

Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程

原创整理不易,转载请注明出处:Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程 代码下载地址:http://www.zuidaima.com/share/1778685765291008.htm 在<Struts2教程4:使用validate方法验证数据>中曾讲到使用validate方法来验证客户端提交的数据,但如果使用validate方法就会将验证代码和正常的逻辑代码混在一起,但这样做并不利于代码维护,而且也很难将过些代码用于其他程序的验证.在St

struts2验证框架

Struts的验证框架 一.字段验证器1.简单的用户输入验证,在接收数据的Action同一个包下,创建一个***-validation.xml文件,然后对验证规则进行配置示例: <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <val

Struts2 验证框架 validation.xml 常用的验证规则

Struts2 验证框架 validation.xml 常用的验证规则 validation.xml 的命名规则和放置路径:文件名:<ActionClassName>-validation.xml<ActionClassName>就是要验证的Action类的名字. 要将此文件放于Class文件相同的目录.如果在Action类在struts配置中有多个action实例(action name),那么对应某个action的验证文件名规则如下:文件名:<ActionClassNam

(七)Struts2 验证框架

所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 验证简介 Struts2 基于Struts2 拦截器,为开发者提供了一套易用的验证框架,并可扩展:一般的验证都支持. 第二节:Struts2 内置验证 一,普通字段验证 二,验证表达式: <s:actionerror/> 第三节:自定义验证