Struts2基于配置校验的内置类型及使用实例
2017-08-25 16:23
489 查看
好记性不如不如赖笔头…………
Struts2内置的校验配置文件内容如下 :
下面是创建的一个测试范例,步骤如下:
1、创建Student实体类
2、创建studentInfo.jsp文件
3、创建StudentController文件
4、创建基于配置的校验配置文件,配置文件与StudentController文件处于同一目录下,配置文件的命名规则为:动作类名-validation.xml,在本测试中,配置文件名为:StudentController-validation.xml
5、配置Struts.xml配置文件
6、添加studentSuccess.jsp文件
启动项目,测试效果如下:
备注:很多校验类型的参数如果不知道是什么,可以根据配置文件中的class名称查看源码,找到相对应的参数名,再注入即可
Struts2内置的校验配置文件内容如下 :
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators SYSTEM "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd" PUBLIC "-//Apache Struts//XWork Validator Definition 1.0//EN"> <!-- START SNIPPET: validators-default --> -<validators> <!-- END SNIPPET: validators-default --> <validator class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator" name="required"/> <validator class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator" name="requiredstring"/> <validator class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator" name="int"/> <validator class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator" name="long"/> <validator class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator" name="short"/> <validator class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator" name="double"/> <validator class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator" name="date"/> <validator class="com.opensymphony.xwork2.validator.validators.ExpressionValidator" name="expression"/> <validator class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator" name="fieldexpression"/> <validator class="com.opensymphony.xwork2.validator.validators.EmailValidator" name="email"/> <validator class="com.opensymphony.xwork2.validator.validators.URLValidator" name="url"/> <validator class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator" name="visitor"/> <validator class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator" name="conversion"/> <validator class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator" name="stringlength"/> <validator class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator" name="regex"/> <validator class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator" name="conditionalvisitor"/> </validators>
下面是创建的一个测试范例,步骤如下:
1、创建Student实体类
package com.ckinghan.bean; import java.io.Serializable; public class Student implements Serializable{ private String userName; //不能为空 private int age; //整数,介于1-180之间 private String email; //按格式输入 private String password; //密码长度8-18位 private String repassword; //确认密码:必须 和密码一致。注意模型中无需保存确认密码,只是为了演示 private int score; //成绩:必须是数字 private String url; //个人主页:必须符合URL格式 private String gender; //性别 public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } 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 int getScore() { return score; } public void setScore(int score) { this.score = score; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } }
2、创建studentInfo.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% 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> <s:head></s:head> <body> <s:form action="getStudentInfo.action"> <s:textfield label="学生姓名" name="userName"></s:textfield> <s:textfield label="学生年龄" name="age"></s:textfield> <s:textfield label="常用邮箱" name="email"></s:textfield> <s:textfield label="设置密码" name="password"></s:textfield> <%-- 如果没有这个,密码不一致的错误信息不会显示 --%> <s:actionerror/> <s:textfield label="确认密码" name="repassword"></s:textfield> <s:textfield label="个人成绩" name="score"></s:textfield> <s:textfield label="个人主页" name="url"></s:textfield> <s:radio list="{'男','女'}" name="gender" label="学生性别"></s:radio> <s:submit value="提交"></s:submit> </s:form> </body> </html>
3、创建StudentController文件
package com.ckinghan.web.action; import com.ckinghan.bean.Student; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class StudentController extends ActionSupport implements ModelDriven<Student> { private Student student = new Student(); public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } @Override public Student getModel() { return student; } @Override public String execute() throws Exception { return SUCCESS; } }
4、创建基于配置的校验配置文件,配置文件与StudentController文件处于同一目录下,配置文件的命名规则为:动作类名-validation.xml,在本测试中,配置文件名为:StudentController-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="userName"> <field-validator type="requiredstring"> <message>用户名不能为空</message> </field-validator> </field> <!--年龄范围:1-180之间 --> <field name="age"> <field-validator type="int"> <param name="min">1</param> <param name="max">180</param> <message>介于1-180之间的整数</message> </field-validator> </field> <!-- 邮箱格式验证 --> <field name="email"> <field-validator type="email"> <message>邮箱格式不正确</message> </field-validator> </field> <!-- 密码为8-18位的字符 --> <field name="password"> <field-validator type="stringlength"> <param name="maxLength">18</param> <param name="minLength">8</param> <message>密码长度8-18位</message> </field-validator> </field> <!-- 注意:这个与其它的校验不同,它在前端JSP页面的提示要加<s:actionerror/>才会显示,因为它不是基于字段的校验 --> <validator type="expression"> <!-- 表达式要注入的表达式内容 --> <param name="expression"> <![CDATA[password == repassword]]> </param> <!-- 要校验的input 属性名称--> <param name="repassword"></param> <message>两次输入密码不一致</message> </validator> <!-- 因为是测试的,成绩就随意定为了数字类型 --> <field name="score"> <field-validator type="regex"> <param name="regex"><![CDATA[\d+]]></param> <message>成绩必须为数字</message> </field-validator> </field> <!-- 校验URL的格式 --> <field name="url"> <field-validator type="url"> <message>请填写正确的URL</message> </field-validator> </field> <!-- 性别不能为空 --> <field name="gender"> <field-validator type="requiredstring"> <message>请选择性别</message> </field-validator> </field> </validators>
5、配置Struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts-devMode" value="true"></constant> <package name="userController" extends="struts-default"> <action name="getStudentInfo" class="com.ckinghan.web.action.StudentController"> <result name="input">/studentInfo.jsp</result> <result >/studentSuccess.jsp</result> </action> </package> </struts>
6、添加studentSuccess.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"> </head> <body> 学生信息提交成功 <br> </body> </html>
启动项目,测试效果如下:
备注:很多校验类型的参数如果不知道是什么,可以根据配置文件中的class名称查看源码,找到相对应的参数名,再注入即可
相关文章推荐
- JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置
- Struts2基于XML配置对Action方法的校验命名规则
- 个人总结的Struts2拦截器使用和拦截栈的配置,基于注解的方式
- JAVA_WEB Struts2学习:使用验证框架进行校验JSP页面元素 反编译工具的配置 Strtuts2 国际化学习
- Linux管理工作,实例讲解工作中使用ssh证书登录的实际流程,讲解ssh证书登录的配置原理,基于配置原理,解决实际工作中,windows下使用SecureCRT证书登录的各种问题,以及实现hadoo
- Spring:使用JdbcTemplate的简单实例-基于XML文件配置
- 使用struts2-convention-plugin-2.2.1.1.jar插件实现基于注解的配置。
- struts2 基于XML配置方式实现校验(指定方法)
- 关于mybatis的参数2个使用经验(类似于struts2的通配所有页面的action配置,xmlsq语句参数类型为基本类型时的快捷指定办法)
- 转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验
- 使用Struts2的输入校验(四)--基于Annotation的输入校验
- Struts2的类型转换及输入校验(数组类型的使用)
- JSP,mysql,tomcat下(基于struts2)中文及其乱码问题的解决 5大配置点 使用UTF-8编码
- Cocos2d-x3.0游戏实例《不要救我》第十篇(结束)——使用Json配置数据类型的怪物
- struts2基于xml配置方式对Action方法进行校验
- Struts2基于XML配置方式实现对Action方法进行校验
- 从源代码剖析Struts2中用户自定义配置转换器的两种方式——基于字段的配置转换器和基于类型的配置转换器(解决了实际系统中,因没有区分这两种工作方式的生命周期而引起的异常错误问题)
- struts2通过基于XML的配置实现校验没有提示信息
- Struts2 基于XML配置方式实现对action的所有方法进行校验
- struts2基于XML配置方式对指定action方法进行校验