频道栏目
首页 > 资讯 > 其他 > 正文

struts2的数据校验

16-10-09        来源:[db:作者]  
收藏   我要投稿

数据校验指对数据合法性进行检查,根据验证数据的位置可以分为客户端验证和服务器端验证,服务器端数据验证主要特点:

·数据提交后在服务器端验证

·防止绕过客户端验证提交的非法数据

·可以在服务器端处理数据前保证数据的合法性

Struts2中有两种实现服务器端验证的方式。采用手工编写代码实现、基于XML配置方式实现。本文主要介绍基于XML配置方式实现。

在实际开发中,很多验证是相同的,对于这些许重复实现的验证,完全可以统一实现,struts2的验证框架就实现了这一功能。使用验证框架时,所有的验证规则是写在配置文件中,便于开发与维护,所以这里详细介绍一下验证框架。

1、jsp代码编写

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
邮箱: email
密码: password
重复密码: repassword
电话: phone
   

2、编写Action类和struts.xml配置文件

package struts.org;
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport{
    //需要校验的字段必需在类中提供相应的字段和相应的get,set方法
    private String email;
    private String password;
    private String repassword;
    private String phone;
    
    public String execute() throws Exception {
    	System.err.println(111);
        return SUCCESS;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

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

    public String getRepassword() {
        return repassword;
    }

    public void setRepassword(String repassword) {
        this.repassword = repassword;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

}

	
	
	
	
	
		
        
            success.jsp
            
            register.jsp
        

	


3、编写validation配置文件

 

配置文件的命名必须为Xxx-yyy-validation.xml,Xxx为对应的action类名,yyy为配置文件中action元素的name属性值,这个文件只要与对应action类放在同一目录下就会被自动识别,这里命名为RegisterAction-register-validation.xml。





    
    
        
        
            ${getText("email.not.empty")}
        
        
        
            ${getText("email.form.error")}
        
    
    
    
        
            ${getText("pass.not.empty")}
        
        
        
            6
            ${getText("pass.min.lenght")}
        
    
    
    
    
        
            
            ${getText("repass.not.same")}
        
    
    
    
    
        
            
            ${getText("tel.form.error")}
        
    
    
实现效果:


另外可以使用Dojo插件实现类似于Ajax提交校验的效果

1、首先引入struts2-dojo-plugin-2.3.15.3.jar包

2、修改jsp页面(此处我使用的是另一个新的jsp)

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

邮箱
手机

重要的是添加部分

实现效果:

struts客户端校验很简单,在要提交的表单上加上validate="true"属性即可实现。

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

不过需要注意两点:

1、不能配置

2、form标签必须使用struts的标签,即等;

3、不能直接访问jsp页面,否则会出现如下错误,需要经过action进入jsp。

如果不想使用通过action进入jsp的方法,那么还有另一个解决办法:

即在action属性值后面加.action

实现效果:

相关TAG标签
上一篇:慕课网学习笔记之数据结构树(C++)
下一篇:java--会话管理(Cookie Session)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站