struts2框架验证案例

基于配置文件的表单验证方式,可以减少java代码的编写。
如果要验证的Action是LoginAction,那么配置文件名需命名为LoginAction-validation.xml并把它放在与LoginAction同文件夹下即可。
范例:login.jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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%>">
    
    <title>登录</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  <body>
    <form action="firstC.action" method="post">
    	<p>用户名:<input type="text" name="name" value="${name }"/>${fieldErrors.name}</p>
    	<p>年龄:<input type="number" name="age" value="${age }"/>${fieldErrors.age}</p>
    	<p>生日:<input type="date" name="bir" value="${bir }"/>${fieldErrors.bir}</p>
    	<p>密码:<input type="password" name="password" value="${password }"/>${fieldErrors.password}</p>
    	<p>确认密码:<input type="password" name="repassword" value="${repassword }"/>${fieldErrors.repassword}</p>
    	<p>手机号:<input type="text" name="tel" value="${tel }"/>${fieldErrors.tel}</p>
    	<p><input type="submit" value="提交"/></p>
    </form>
  </body>
</html>

范例:CheckAction.java代码

package org.action;
import java.util.Date;
import org.bean.User;
import com.opensymphony.xwork2.ActionSupport;
public class CheckAction extends ActionSupport
	{
		private String name;
		private int age;
		private Date bir;
		private String password;
		private String repassword;
		private String tel;
		public CheckAction()
			{
				// TODO 自动生成的构造函数存根
			}
		@Override
		public String execute() throws Exception
		{
			// TODO 自动生成的方法存根
			return SUCCESS;
		}
		public String first()
		{
			System.out.println("first");
			return SUCCESS;
		}
		public String second()
			{
				return SUCCESS;
			}
		public String getName()
			{
				return name;
			}
		public void setName(String name)
			{
				this.name = name;
			}
		public int getAge()
			{
				return age;
			}
		public void setAge(int age)
			{
				this.age = age;
			}
		public Date getBir()
			{
				return bir;
			}
		public void setBir(Date bir)
			{
				this.bir = bir;
			}
		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 getTel()
			{
				return tel;
			}
		public void setTel(String tel)
			{
				this.tel = tel;
			}
	}

范例:CheckAction-validation.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  		"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
  		"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
	<field name="name">
		<field-validator type="requiredstring">
			<message>用户名不能为空!</message>
		</field-validator>
		<field-validator type="stringlength">
			<param name="minLength">2</param>
			<param name="maxLength">8</param>
			<message>用户名长度应为2-8个字符!</message>
		</field-validator>
	</field>
	<field name="age">
		<field-validator type="required">
			<message>年龄不能为空!</message>
		</field-validator>
		<field-validator type="int">
			<param name="min">1</param>
			<param name="max">150</param>
			<message>年龄必须在1-150之间!</message>
		</field-validator>
	</field>
	<field name="bir">
		<field-validator type="required">
			<message>生日不能为空!</message>
		</field-validator>
		<field-validator type="date">
			<param name="min">1900-01-01</param>
			<param name="max">2029-07-22</param>
			<message>超出日期范围!</message>
		</field-validator>
	</field>
	<field name="password">
		<field-validator type="requiredstring">
			<message>密码不能为空!</message>
		</field-validator>
		<field-validator type="stringlength">
			<param name="minLength">8</param>
			<param name="maxLength">16</param>
			<message>密码长度应为8-16个字符!</message>
		</field-validator>
	</field>
	<field name="repassword">
		<field-validator type="requiredstring">
			<message>确认密码不能为空!</message>
		</field-validator>
		<field-validator type="fieldexpression">
			<param name="expression">
				<![CDATA[repassword.equals(password)]]>
			</param>
			<message>两次密码不一致!</message>
		</field-validator>
	</field>
	<field name="tel">
		<field-validator type="requiredstring">
			<message>电话号码不能为空!</message>
		</field-validator>
		<field-validator type="regex">
			<param name="expression">
				<![CDATA[1[34578]\d{9}]]>
			</param>
			<message>电话号码格式不正确!</message>
		</field-validator>
	</field>
</validators>

范例:welcome.jsp代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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%>"> 
    <title>欢迎</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  <body>
    	<p>欢迎</p>
    	${name}<br>
    	${password}<br>
  </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="space" namespace="/" extends="struts-default">
		<action name="*C" class="org.action.CheckAction" method="{1}">
			<result name="success">/jsp_check/welcome.jsp</result>
			<result name="input">/jsp_check/login.jsp</result>
		</action>
	</package>
</struts>

通过以上代码可以发现,xml框架拦截此时会拦截Action的所有方法,此种拦截方式有时并不适合。
解决办法:使用xml框架拦截的方法拦截。
只需要把原来的xml拦截文件改写成action类名+请求action名+validation.xml即可。
例如此例子中form表单请求的action属性为:firstC.action,处理的action类为CheckAction.java,则xml验证文件为:CheckAction-firstC-validation.xml。此时xml验证文件只会验证表单action属性为firstC的请求。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值