`
pengjj2
  • 浏览: 139381 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

struts2验证框架小结

阅读更多

 最近使用了一下struts2的验证框架,感觉不错。但其中也发现了一些技巧和问题,先总结如下。

1、建立一个实体类,主要是对因为登陆而设置的这个验证框架,所以首先创建一个用户实体类

 

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

/*
 * 
 * 用户
 * 
 */

@Entity
@Table(name = "user_tbl")
public class UserEntity extends BaseEntity {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * 用户名
	 */
	private String name;
	
	/**
	 * 用户密码
	 */
	private String password;

	@Column(name = "name", length = 255, nullable = false)
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	@Column(name = "password", length = 255, nullable = false)
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}

 

 2、创建登陆的Action类

import com.opensymphony.xwork2.ActionSupport;
import com.zaotao.entity.UserEntity;
import com.zaotao.service.manage.IAdminService;

/**
 * 管理员的普通action
 * @author 管理员
 *
 */
public class AdminAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/**
	 * 用户实体
	 */
	private UserEntity user;
	
	/**
	 * 验证码
	 */
	private String code;
		
	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}
	
	public UserEntity getUser() {
		return user;
	}

	public void setUser(UserEntity user) {
		this.user = user;
	}
	
	/**
	 * 登录
	 * @return 登录成功
	 */
	public String loginAdmin()
	{
	        return "success";
	}


	
}

 3、由于struts2的查找机制(这个可以参考相关资料),我们在这两个类所在的包中分别新建UserEntity-validation.xml和AdminAction-validation.xml

    (1)UserEntity-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE validators PUBLIC 
  		"-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
  		"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
   	<field name="name">
		<field-validator type="requiredstring">
			<message>账号不能为空</message>
	    </field-validator>
	</field>
	
	<field name="password">
		<field-validator type="requiredstring">
			<message>密码不能为空</message>
		</field-validator>
	</field>
</validators>

 (2)AdminAction-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE validators PUBLIC 
  		"-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
  		"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
	<field name="user">
		<field-validator type="visitor">
			<message>用户:</message>
		</field-validator>
	</field>

	<field name="code">
		<field-validator type="fieldexpression">
			<param name="expression">
				#session.CODE.equalsIgnoreCase(code)
			</param>
			<message>${#session.CODE}:${code}</message>
		</field-validator>
	</field>
</validators>

 

4、建立登陆的jsp页面

<s:form id="loginForm" action="login_AdminAction">
		<div class="admin_main_top"></div>
		<div id="admin_main">
			<div class="admin_main_head"></div>
			<div id="admin_main_content">
				<ul class="admin_main_ul">
					<li>
						<label>用户名:</label>
						<s:textfield name ="user.name" id="name"/>
						<span id="usererror" class="errorMeg"></span>
				    </li>
				
					<li>
						<label>密码:</label>
						<s:password id="pwd" name="user.password" onfocus="clearError('pwderror')" />
						<span id="pwderror" class="errorMeg"></span>
					</li>
			
					<li>
						<label>验证码:</label>
						<img src="<%=contextPath %>/authImg.servlet"  id="authImg" onclick="refresh()" />
						<s:textfield  name="code" id="code"  onFocus="clearError('codeerror');" />
						<span id="codeerror" class="errorMeg"></span> 
					</li>
					
					<li>
						<s:submit id="login_button" value="登录" />
					</li>
				</ul>
			</div>
					</div>
		<div><s:fielderror cssStyle="color: red"></s:fielderror></div>
	</s:form>

 Action的配置就不写了,说一下注意点。

(1)

<field-validator type="visitor">
<message>用户:</message>
</field-validator>

这段代码中message标签内不能为空,否则将会报错,visitor类型的作用在于,当验证字段user时,将获得user的类型,并根据类型UserEntity查找UserEntity-validation.xml,执行验证。

(2)

当你使用了图形验证码,你想在验证框架中将其进行验证时。需要先将图形验证码的字符串放入session中,然后在验证框架中验证。
<message>${#session.CODE}:${code}</message>
写这句的原因是我在执行图形验证的时候,老是验证不正确,所以我使用这句话,将存放在session中的code和我输入的code在错误信息内输出,已查看是否出现问题

(3)

如果你的表单使用的是simple方式,那么s:form是不会显示错误信息的,那么

我们在jsp页面写入 <s:fielderror cssStyle="color: red"></s:fielderror>,用来输出错误信息,当然你也可以针对每个字段输出错误信息。如果错误信息重复显示,说明你的action采用的单例模式,请将其修改为scope="prototype"

(4)

使用struts验证框架,需要配置input结果跳转。

(5)

若校验同时提供XML和validate()两种方法,则都会被执行,而且是XML校验先执行,validate()方法后执行。而错误信息都会显示。"short-circuit"属性仅针对xml有效

 

分享到:
评论
2 楼 pengjj2 2009-10-15  
wangguanqiu 写道
我个人感觉UserEntity-validation.xml的命名不是很好,应该是Action的类名+struts.xml中定义的action名称+validation.xml,比较好。这样,同一个Action类,在配置文件中的不同定义就可以对应不同的验证文件。

恩,因为目前东西,还比较少,有些东西还在测试和验证,等到出现此类需求时。会采用2楼的建议,非常感谢你的意见
1 楼 wangguanqiu 2009-10-15  
我个人感觉UserEntity-validation.xml的命名不是很好,应该是Action的类名+struts.xml中定义的action名称+validation.xml,比较好。这样,同一个Action类,在配置文件中的不同定义就可以对应不同的验证文件。

相关推荐

    struts2 校验框架

    Struts2的校验框架基于Apache Commons Validator,提供了多种预定义的验证器类型以及自定义验证器的功能。这些验证器可以在配置文件中或代码中定义,用于检查表单字段的有效性。 #### 三、示例分析 ##### 1. 配置...

    Struts2输入校验总结

    综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。

    Struts框架中struts-config.xml文件配置小结

    ### Struts框架中struts-config.xml文件配置详解 #### 一、引言 在Java Web开发领域,Struts是一个非常重要的MVC(Model-View-Controller)框架,它极大地简化了Web应用程序的开发过程。而在Struts框架中,`struts...

    Struts2 in action中文版

    10.1.2 Struts 2工作流中的验证框架 219 10.2 将动作关联到验证框架 222 10.2.1 使用ActionClass-validations.xml声明验证元数据 223 10.2.2 研究内建的验证器 226 10.3 编写自定义验证器 227 10.3.1 检查密码强度的...

    Struts2+Hibernate+Spring项目小结――Struts2部分总结

    Struts2作为MVC框架,提供了丰富的功能和灵活性来处理表单验证、错误处理和服务端校验等问题。理解并熟练运用上述知识点,能够帮助开发者构建出更加健壮、用户体验良好的Web应用。在实际项目中,还需要结合Hibernate...

    Struts 2实战 Struts 2 in action 的中文版

    根据提供的信息,我们可以推断出这是一本关于Struts 2框架的书籍——《Struts 2实战 Struts 2 in action 的中文版》。本书主要介绍了Struts 2框架的相关概念、工作原理以及实际应用案例等内容。接下来,我们将根据...

    myeclipse6中整合struts2和spring框架

    本章节简要介绍了如何在 MyEclipse 6 中整合 Struts2 和 Spring 框架,包括下载 Struts2 开发包、开发简单的 HelloWorld 应用、使用国际化消息、自定义 Action 方法、表单处理、表单验证、文件上传下载以及访问 ...

    struts开发小结

    这篇博客"Struts开发小结"可能涵盖了作者在使用Struts框架进行开发过程中的经验总结和一些关键点。由于没有直接的描述内容,我们将基于Struts框架的一般特性来讨论相关知识点。 1. **Struts 2框架基础**: Struts ...

    深入浅出Struts2(附源码)

    跟随作者一道深入Struts 2,聆听大量来之不易的经验之谈,你对Struts 2开发框架的理解和应用水平都将更上一层楼。本书适合Java Web 程序员阅读和参考 第1章 Model 2应用程序 1 1.1 Model 2概览 1 1.2 带servlet...

    struts2+ajax 无刷新验证身份证号是否已注册,身份证号是否正确

    本文将详细介绍如何利用Struts2框架结合AJAX技术实现身份证号的前端验证与后端校验,以及如何通过动态显示来提高用户体验。 #### 二、技术原理 ##### 2.1 Struts2框架简介 Struts2是一个基于Java的开源Web应用...

    Struts2入门教程(全新完整版)

    一、准备工作及实例 3 ...小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 ...

    struts2例子.doc

    #### 小结 通过这个简单的Struts2实例,我们不仅学习了如何设置Struts2的环境,还掌握了基本的页面设计和交互逻辑。更重要的是,我们接触到了Struts2框架的一些核心概念,如过滤器配置、标签库使用、动态URL生成等...

    struts资料\前半阶段小结

    在"struts资料\前半阶段小结"这个主题中,我们可以理解为是对学习或使用Struts框架初期阶段的一个总结。以下是对Struts框架核心知识点的详细解释: 1. **MVC模式**:MVC是一种设计模式,用于分离应用程序的数据、...

    Struts框架响应客户请求的工作流程

    #### 小结 通过上述步骤,我们清晰地了解了Struts框架如何处理用户的请求并生成动态页面的过程。这种结构化的处理方式不仅提高了代码的可维护性和可扩展性,也使得开发者能够更加专注于业务逻辑的实现,而非繁琐的...

    关于struts实验时的临时总结

    **问题描述**:在Struts2框架中,尝试使用`onsubmit`事件调用JavaScript进行表单验证时发现无效。 **原因分析**:`onsubmit`事件默认情况下并不会阻止表单提交流程。若表单验证未通过,则需要通过JavaScript手动阻止...

    MyEclipse8下struts2开发例程及解析1.doc

    #### 五、小结 通过本文档的学习,我们不仅了解了如何在 MyEclipse 8 环境中快速搭建 Struts 2 开发环境,还掌握了 Struts 2 的基本配置文件 `struts.xml` 和 `web.xml` 的配置方法。这对于初学者来说是非常有价值...

    struts2

    通过本章的学习,我们不仅掌握了Struts2的基本开发流程,还深入了解了其与Spring框架的整合应用,以及如何处理文件上传下载、表单验证等关键问题。Struts2与Spring的结合,无疑为Java Web开发提供了一个强大而灵活的...

    struts2培训教程

    - **验证框架(Validation Framework)**:提供了一套完整的验证机制,支持客户端和服务器端的验证。 - **国际化(Internationalization)**:支持多语言,方便为不同地区用户提供本地化服务。 #### 五、小结 ...

Global site tag (gtag.js) - Google Analytics