一个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的版本号不匹配。