第二个示例:XML配置式校验器---登录和注册页面
user_login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2中基于XML配置式的校验器使用示例</title>
</head>
<body>
<h3>XML配置式校验器---登录页面</h3><hr/>
<div style="color:red"><s:fielderror/></div>
<form action="user_login.action" method="post">
<table>
<tr>
<td>登录名</td>
<td><input type="text" name="user.name" value="${param['user.name']}"/></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="user.pwd"/></td>
</tr>
<tr><td colspan="2"><input type="submit" value=" 提交 "/></td></tr>
</table>
</form>
</body>
</html>
user_registe.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2中基于XML配置式的校验器使用示例</title>
</head>
<body>
<h3>XML配置式校验器---注册页面</h3><hr/>
<div style="color:red"><s:fielderror/></div>
<form action="user_registe.action" method="post">
<table>
<tr>
<td>ID</td>
<td><input type="text" name="user.id" value="${param['user.id']}"/></td>
</tr>
<tr>
<td>登录名</td>
<td><input type="text" name="user.name" value="${param['user.name']}"/></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="user.pwd"/></td>
</tr>
<tr>
<td>重复密码</td>
<td><input type="password" name="user.pwd2"/></td>
</tr>
<tr>
<td>时间</td>
<td><input type="text" name="user.registed_date" value="${param['user.registed_date']}"/></td>
</tr>
<tr>
<td>email</td>
<td><input type="text" name="user.email" value="${param['user.email']}"/></td>
</tr>
<tr>
<td>考试成绩</td>
<td><input type="text" name="user.score" value="${param['user.score']}"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value=" 提交 "/></td>
</tr>
</table>
</form>
</body>
</html>
src/struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!-- 请求参数的编码方式 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开 -->
<constant name="struts.action.extension" value="action,do,go,xkk"/>
<!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.devMode" value="false"/>
<!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 是否允许在OGNL表达式中调用静态方法,默认值为false -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
<!-- 指定由spring负责action对象的创建
<constant name="struts.objectFactory" value="spring" />
-->
<!-- 是否开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<package name="my" extends="struts-default" namespace="/">
<action name="user_*" class="com.javacrazyer.web.action.UserAction" method="{1}">
<result name="success">/info.jsp</result>
<result name="input">/user_{1}.jsp</result>
</action>
</package>
</struts>
UserAction.java
package com.javacrazyer.web.action;
import com.javacrazyer.domain.User;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private static final long serialVersionUID = -2554018432709689579L;
private User user; //自定义类型Field
public String registe() throws Exception{
System.out.println("registe======================");
return SUCCESS;
}
public String login() throws Exception{
return SUCCESS;
}
/*
public void validate(){
System.out.println("调用validate方法");
}
//执行exceute方法前调用
public void validateRegiste(){
System.out.println("调用validateRegiste方法");
String lname = user.getLoginname();
if(null != lname && !lname.trim().matches("[a-zA-Z_]\\w{3,19}")){
this.addFieldError("loginname", "用户名不能为空,且只能由4-20个字母和数字组成");
//this.addActionError("用户名不能为空,且只能由4-20个字母和数字组成");
}
}
public void validateLogin(){
System.out.println("调用validateLogin方法");
}
*/
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
UserAction-user_login-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<!-- 针对自定义Field使用visitor校验 -->
<field name="user">
<field-validator type="required" short-circuit="true">
<message>用户的信息必填</message><!-- 消息前缀 -->
</field-validator>
<field-validator type="visitor">
<param name="context">userLoginContext</param><!-- 指定本visitor校验的上下文 -->
<param name="appendPrefix">true</param><!-- 是否要添加校验失败消息的前缀 -->
<message>用户的</message><!-- 消息前缀 -->
</field-validator>
</field>
</validators></span>
UserAction-user_registe-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<!-- 针对自定义Field使用visitor校验 -->
<field name="user">
<field-validator type="required" short-circuit="true">
<message>用户的信息必填</message><!-- 消息前缀 -->
</field-validator>
<field-validator type="visitor">
<param name="context">userContext</param><!-- 指定本visitor校验的上下文 -->
<param name="appendPrefix">true</param><!-- 是否要添加校验失败消息的前缀 -->
<message>用户的</message><!-- 消息前缀 -->
</field-validator>
</field>
</validators>
第三个示例:注解方式校验器---注册页面
acc2_registe.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2中基于Annotation配置式的校验器使用示例</title>
</head>
<body>
<h3>Annotation配置式校验器---注册页面</h3><hr/>
<div style="color:red"><s:fielderror/></div>
<form action="acc2_registe.action" method="post">
<table>
<tr>
<td>ID</td>
<td><input type="text" name="id" value="${param.id}"/></td>
</tr>
<tr>
<td>登录名</td>
<td><input type="text" name="name" value="${param.name}"/></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="pwd"/></td>
</tr>
<tr>
<td>重复密码</td>
<td><input type="password" name="pwd2"/></td>
</tr>
<tr>
<td>时间</td>
<td><input type="text" name="registed_date" value="${param.registed_date}"/></td>
</tr>
<tr>
<td>email</td>
<td><input type="text" name="email" value="${param.email}"/></td>
</tr>
<tr>
<td>考试成绩</td>
<td><input type="text" name="score" value="${param.score}"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value=" 提交 "/></td>
</tr>
</table>
</form>
</body>
</html>
src/struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!-- 请求参数的编码方式 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开 -->
<constant name="struts.action.extension" value="action,do,go,xkk"/>
<!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.devMode" value="false"/>
<!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 是否允许在OGNL表达式中调用静态方法,默认值为false -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
<!-- 指定由spring负责action对象的创建
<constant name="struts.objectFactory" value="spring" />
-->
<!-- 是否开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<package name="my" extends="struts-default" namespace="/">
<action name="acc2_*" class="com.javacrazyer.web.action.Account2Action" method="{1}">
<result name="success">/info.jsp</result>
<result name="input">/acc2_{1}.jsp</result>
</action>
</package>
</struts>
Account2Action.java
package com.javacrazyer.web.action;
import java.util.Date;
import org.apache.struts2.interceptor.validation.SkipValidation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.FieldExpressionValidator;
import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.Validations;
import com.opensymphony.xwork2.validator.annotations.ValidatorType;
/**
* 使用注解来配置校验的示例
*
*/
public class Account2Action extends ActionSupport {
private static final long serialVersionUID = -1418893621512812472L;
private Integer id;
private String name;
private String pwd;
private String pwd2;
private Double score;
private Date registed_date;
private String email;
@Validations(
requiredStrings={@RequiredStringValidator(fieldName="name",message="我的用户名是必须的",shortCircuit=true,trim=true,type=ValidatorType.FIELD),
@RequiredStringValidator(fieldName="pwd",message="我的密码是必须的",shortCircuit=true,trim=true,type=ValidatorType.FIELD)},
fieldExpressions={@FieldExpressionValidator(fieldName="pwd", message="两次密码不相同",expression="pwd==pwd2")},
regexFields={@RegexFieldValidator(expression="^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+((\\.com)|(\\.cn)|(\\.net)|(\\.org)|(\\.info)|(\\.edu)|(\\.mil)|(\\.gov)|(\\.biz)|(\\.ws)|(\\.us)|(\\.tv)|(\\.cc)|(\\.aero)|(\\.arpa)|(\\.coop)|(\\.int)|(\\.jobs)|(\\.museum)|(\\.name)|(\\.pro)|(\\.travel)|(\\.nato)|(\\..{2,3})|(\\..{2,3}\\..{2,3}))$")}
)
public String registe() throws Exception{
System.out.println("registe-------------------");
return SUCCESS;
}
@SkipValidation
public String login()throws Exception{
return SUCCESS;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
public Date getRegisted_date() {
return registed_date;
}
public void setRegisted_date(Date registedDate) {
registed_date = registedDate;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPwd2() {
return pwd2;
}
public void setPwd2(String pwd2) {
this.pwd2 = pwd2;
}
}
http://hi.baidu.com/kangjun118/blog/item/ad9219f5151eeede0b46e0e9.html
struts2在学习(十一)--表单验证的两种方式
猜你喜欢
转载自aguang520.iteye.com/blog/1043903
今日推荐
周排行