struts校验是什么呢?
就是对一些字段进行是否为空或者长度的校验。比如登录的时候,我们需要对用户名和密码进行校验,往常,我们是通过在jsp页面写js脚本,然后进行用户名和密码的校验,如今,struts2为我们提供了一些常用的校验器,所以,我们只需要编写相应的action的配置文件,就可以进行用户名和密码的校验。
实例如下:
1、新建一个web工程,struts-validation,添加struts支持
2、新建login.jsp页面:
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<form action="login.action" method="post">
用户名:<input name="user.username"/><s:fielderror fieldName="user.username"></s:fielderror><br/>
密码:<input type="password" name="user.password"/><s:fielderror fieldName="user.username"></s:fielderror><br/>
年龄:<input name="user.age"/><s:fielderror fieldName="user.age"></s:fielderror><br/>
<input type="submit" value="登录"/>
</form>
</body>
</html>
3、在src下新建com.etc.vo包,在包下新建User.java类:
package com.etc.vo;
public class User {
private String username;
private String password;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
4、在src下新建com.etc.action,在包下新建LoginAction.java类:
package com.etc.action;
import com.etc.vo.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 5282197184219501014L;
private User user;
public String login(){
return Action.SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
5、配置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>
<constant name="struts.custom.i18n.resources" value="message"></constant>
<package name="login" extends="struts-default" namespace="/">
<action name="login" class="com.etc.action.LoginAction" method="login">
<result>/success.jsp</result>
<!-- 校验失败之后返回的页面 -->
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
6、在com.etc.action包下新建LoginAction-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 name="user.username">
<!-- 属性校验器 requiredstring 必填的字符串,不能为空 -->
<field-validator type="requiredstring">
<!-- 去掉前后的空格 -->
<param name="trim">true</param>
<!-- 如果校验失败,就提示错误信息 -->
<message>username should not be blank</message>
</field-validator>
</field>
<field name="user.password">
<!-- 属性校验器 requiredstring 必填的字符串,不能为空 -->
<field-validator type="requiredstring">
<!-- 去掉前后的空格 -->
<param name="trim">true</param>
<!-- 如果校验失败,就提示错误信息 -->
<message>password should not be blank</message>
</field-validator>
</field>
<!-- 长度校验器 -->
<field name="user.password">
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">20</param>
<param name="trim">true</param>
<message>密码长度必须在${minLength}到${maxLength}之间</message>
</field-validator>
</field>
<!-- 整数校验器 -->
<field name="user.age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">100</param>
<message>年龄必须在在${min}到${max}之间</message>
</field-validator>
</field>
</validators>
7、新建success.jsp页面:
<body>
登录成功
</body>
8、运行:http://localhost:8080/struts-validation/login.jsp
什么都不输入,直接点击登录按钮时,效果如下:
密码输入的长度不满足时,页面效果如下:
总结:
校验器的存在,使得我们不需要在jsp页面写js代码也可以实现简单的字段校验。
注意:
校验文件的名称:Action类名-validation.xml
校验器的种类:可以在struts 2.1 Liberary下的xwork-core-2.2.1.jar下的 com.opensymphony.xwork2.validator.validators下的default.xml中可以找到: