SSH学习(七)Struts2输入验证

17 篇文章 0 订阅

原文来自搬砖工,如需转载请注明出处


博主SSH框架专栏请戳这里http://blog.csdn.net/column/details/14227.html

一、验证的分类

对于我们javaweb应用程序来说,对输入的数据进行验证是必不可少的,数据验证主要分为客户端验证和服务器验证。对于客户端验证,一般是用js实现,通过js函数进行参数验证。对于服务器端验证,就是使用的java代码来对数据进行验证。在Struts2中有专门的服务器验证。

二、Struts2验证

1.Struts2的验证分类

在Struts2中分为手动验证和自动验证,手动验证就是我们自己定义验证函数实现验证逻辑。自动验证则是利用Struts提供的验证,结合我们所写的配置进行输入验证。

2.使用Struts手动验证流程

在Action中实现validate方法,把所以的验证逻辑写在里面。然后把提示信息使用this.addFieldError(params,msg)将提示信息和参数绑定,以确保提示信息显示在正确位置。

3.使用自动验证

需要建立一个配置文件RegistorAction-validation.xml,RegistorAction只要你是对什么Action进行验证就写它的名称。然后在配置文件中写入配置信息就可以了,对什么参数使用什么验证,并且有什么提示信息。

注意:Struts输入验证需要使用Struts的标签创建表单,否则验证信息无法提示

三、实例

1.手动验证

首先创建一个RegistorAction

package com.study.action;
import com.opensymphony.xwork2.ActionSupport;

public class RegistorAction extends ActionSupport{
	private String username;
	private String password;
	private String addr;
	private String email;
	private int age;
	public void validate() {
		//只对用户名和密码进行非空验证
		if(username==null||username.trim().equals("")){
			String msg = "用户名不能为空!";
			this.addFieldError("username", msg);
		}
		if(password==null||password.trim().equals("")){
			String msg = "密码不能为空!";
			this.addFieldError("password", msg);
		}
	}
	public String execute() throws Exception {
		return SUCCESS;
	}

	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
}
两个页面,一个注册页面和成功页面

registor.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
  <s:form action="registor" method="post">
  	<s:textfield name="username" label="username"></s:textfield>
  	<s:password name="password" label="password"></s:password>
  	<s:textfield name="addr" label="addr"></s:textfield>
  	<s:textfield name="age" label="age"></s:textfield>
  	<s:textfield name="email" label="email"></s:textfield>
  	<s:submit value="regist" label="regist"></s:submit>
  </s:form>
  </body>
</html>
Success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
  </head>
  
  <body>
    hello world!,${username}
  </body>
</html>
然后就是配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="example" namespace="/" extends="struts-default">
		<action name="registor" class="com.study.action.RegistorAction">
			<result name="success">/Success.jsp</result>
			<result name="input">/registor.jsp</result>
		</action>
	</package>
</struts>    
验证效果


这就是struts2手动验证的实现实例

注意:必须使用struts标签来创建表单,否则不生效

2.自动验证

以手动验证做比较,将Action中的验证方法注释掉,然后我们创建一个RegistorAction-validation.xml,把文件放在Action对应的包下面。

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator Definition 1.0//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">

<validators>
	<field name="username">
		<field-validator type="requiredstring">
			<message>用户名不能为空!</message>
		</field-validator>
	</field>
	<field name="password">
		<field-validator type="requiredstring">
			<message>密码不能为空!</message>
		</field-validator>
	</field>
</validators>
如果需要Struts2的标签提示,一定得把文件声明写对,不然myeclipse是不会给提示信息的。自动实现的效果和手动验证一样,当然,大家可以把message里面的内容定义为资源文件进行管理。

以上就是Struts2输入验证的全部内容,或许有些地方总结不足,请多多指正。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值