Struts2 Validation 验证

一个Struts2简单验证实例,eclipse。

其他文件见上篇简单登录实现。改了下Action和login.jsp然后加了个validation.xml。

结构

Action中以Action方法验证User登录

package com.struts2;
import java.util.regex.Pattern;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

	private String account;
	private String passWord;

	   public String getPassWord() {
	    return passWord;
	}
	   
	   public void setPassWord(String passWord) {
	    this.passWord = passWord;
	}
	   
	   public void setAccount(String account) {
		      this.account = account;
		   }
	   
	   public String getAccount() {
		      return account;
		   }

	  
	public String Administrator() {
		System.out.println("Administrator登录信息");
		System.out.println("账户:"+account);
		System.out.println("密码:"+passWord);
		return "adminsuccess";
	   }
	public String User() {
		System.out.println("User登录信息");
		System.out.println("账户:"+account);
		System.out.println("密码:"+passWord);
		return "usersuccess";

	   }
	


		//只对user方法有效的validate
		public void validateUser() {
			if (account==null||"".equals(account.trim()) ){
				
				this.addFieldError("account", "姓名不能为空");
			}
			if (passWord==null||"".equals(passWord.trim())){
				this.addFieldError("passWord", "密码不能为空");
			} else if(!Pattern.matches("^\\w+$", passWord)){
				this.addFieldError("passWord", "密码必须由数字、字母或下划线组成");
			}
			// TODO Auto-generated method stub
			super.validate();
		}
	}

Struts同时更改

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
   "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
 <!-- 使用!方法时需要开启DMI功能 -->
 <!-- <constant name="struts.enable.DynamicMethodInvocation" value="true" /> --> 

   <package name="struts2" extends="struts-default">

      <global-allowed-methods>regex:.*</global-allowed-methods>
      
<!-- 这个{1}代表的是前面的name属性中的第一个* -->    
      <action name="Login*" class="com.struts2.LoginAction"  method="{1}">
            <result name="usersuccess">/UserWelcome.jsp</result>
            <result name="adminsuccess">/AdministratorWelcome.jsp</result>
            <result name="input">/Login.jsp</result>
      </action>
   </package>
</struts>

单独增加validation文件以验证Administrator登录方法

LoginAction-LoginAdministrator-validation.xml,命名方式:类名-Action名-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE validators PUBLIC
  		"-//Apache Struts//XWork Validator 1.0.3//EN"
  		"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
	<field name="account">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>用户名不能为空</message>
		</field-validator>
	</field>
		
	<field name="passWord">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>密码不能为空</message>
		</field-validator>
		
		<field-validator type="regex">
		<!-- <![CDATA[]]>这个标记所包含的内容将表示为纯文本 -->
			<param name="regex"> <![CDATA[^\w+$]]> </param>
			<message>密码格式错误,仅由数字、字母及下划线组成</message>
		</field-validator>
		
		<field-validator type="stringlength">
			<param name="minLength">4</param>
			<message>密码长度在4位及以上</message>
		</field-validator>
	</field>	
</validators>

最后login.jsp

加入如下标签显示验证结果

<s:fielderror/>

就行了,OJBK。

如果验证文件没反应,可能是开头dtd的版本号不匹配。

猜你喜欢

转载自blog.csdn.net/Dalek11/article/details/82831290
今日推荐