Struts2中的校验器
来源:互联网 发布:2016年网络第一红歌 编辑:程序博客网 时间:2024/04/29 09:43
输入校验在Web应用中具有重要的作用,因为我们不能保证用户提交给程序的数据都是符合要求的,而如果不符合要求,就会使程序运行出错,所以输入校验是每个结构严谨的应用程序都必须的。
对于输入校验Struts2提供了两种实现方法:1.手工编写代码实现 2.通过配置XML实现
1.
首先来说说第一种手工编写代码的实现,很简单,只需要在Action中重写方法validate(),代码如下
/** * 专门用于验证的方法validate,一有错误的时候,则会找到<result>节点的input所映射的路径 */@Overridepublic void validate() {if (user.getName() == null || "".equals(user.getName())) {// 该方法用于保存错误的信息this.addFieldError("user.name", "用户名不能为空"); }if (user.getAge() == null) {// 该方法用于保存错误的信息super.addFieldError("user.age", "年龄不能为空"); }if (user.getSalary() == null) {// 该方法用于保存错误的信息super.addFieldError("user.salary", "工资不能为空"); }if (user.getBirthday() == null) {// 该方法用于保存错误的信息super.addFieldError("user.birthday", "出生日期不能为空"); }}(Action和配置就不写出了)jsp页面
<%@ page language="java" pageEncoding="GBK"%><%@ taglib prefix="s" uri="/struts-tags"%><html:html lang="true"> <head> <html:base /> <title>struts2_simple_demo.jsp</title> </head> <body> <s:form action="user.action" method="post"> 姓名:<input type="text" name="user.name" value="<s:property value="user.name"/>"/> <s:property value="fieldErrors['user.name'][0]"/><br> 年龄:<input type="text" name="user.age" value="<s:property value="user.age"/>"/> <s:property value="fieldErrors['user.age'][0]"/><br> 工资:<input type="text" name="user.salary" value="<s:property value="user.salary"/>"/> <s:property value="fieldErrors['user.salary'][0]"/><br> 生日:<input type="text" name="user.birthday" value="<s:property value="user.birthday"/>"/> <s:property value="fieldErrors['user.birthday'][0]"/><br> <input type="submit" value="提交"/> <input type="reset" value="重置"/> </s:form> </body></html:html>以上就是直接使用代码的方法完成校验,但是如果我们在一个企业级应用中,需要用到大量的输入校验。如果全部用编码方式,工程会变得臃肿不堪,难于维护和管理,所以,鉴于此,当有大量的属性需要进行校验的时候,此时使用xml配置来实现不失为一个好方法
2.
首先看下Action:(ValidatAction.java)
package com.aheadetp.action;import com.aheadetp.model.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;/** * * @author xxxx * */// ModelDriven:直接把实体类当成页面数据的收集对象public class ValidatAction extends ActionSupport implements ModelDriven<User>{private User user = new User();@Override/** * */public String execute() throws Exception {System.out.println("i am execute!");return super.execute();}@Override/** * */public User getModel() {return user;}/** * @return the user */public User getUser() {return user;}/** * @param user the user to set */public void setUser(User user) {this.user = user;}}这里为什么要使用ModelDriver,往后在说,或者看下上一篇博文
在Action对应下的包下新建一个xml文件,该文件的命名规则是:Action名-validation.xml(这里的命名是ValidatAction-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"><field-validator type="visitor"><!-- 对应于User-userC-validation.xml中的userC --><param name="context">userC</param><!-- 是否在错误信息前添加message的信息作为前缀 --><param name="appendPrefix">true</param><message>用户的:</message></field-validator></field></validators>
POJO类:(User.java)
package com.aheadetp.model;import java.util.Date;public class User {private int age;private String name;private String pass;private String re_pass;private String email;private String url;private Date birth;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}public String getRe_pass() {return re_pass;}public void setRe_pass(String re_pass) {this.re_pass = re_pass;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth = birth;}}
在该pojo类目录下家里一个xml文件,该文件专门用户校验,命名规则:POJO类名-xxx-validation.xml(User-userC-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="name"><!-- 必填字符串校验器 --><field-validator type="requiredstring"><message><![CDATA[(Name should not be blank!)]]></message></field-validator><!-- 字符串长度校验器 --><field-validator type="stringlength"><param name="maxLength">6</param><param name="minLength">3</param><param name="trim">true</param><message><![CDATA[(Length of the name should between 3 and 6!)]]></message></field-validator></field><field name="re_pass"><!-- 必填字符串校验器 --><field-validator type="requiredstring"><message><![CDATA[(Re_pass should not be blank!)]]></message></field-validator><!-- 字段表达式校验器 --><field-validator type="fieldexpression"><param name="expression">re_pass.equals(pass)</param><message><![CDATA[(Pass should be same as re_pass!)]]></message></field-validator></field><field name="age"><!-- 必填校验器 --><field-validator type="required"><message><![CDATA[(Age should not be blank!)]]></message></field-validator><!-- 整数校验器 --><field-validator type="int"><param name="max">150</param><param name="min">1</param><message><![CDATA[(Age should be between 1 and 150!)]]></message></field-validator></field><field name="email"><!-- 必填整数校验器 --><field-validator type="requiredstring"><message><![CDATA[(Email should not be blank!)]]></message></field-validator><!-- 电子邮件校验器 --><field-validator type="email"><message><![CDATA[(The pattern of the Email is not good!)]]></message></field-validator></field><field name="url"><field-validator type="requiredstring"><message><![CDATA[(URL should not be blank!)]]></message></field-validator><!-- 网址校验器 --><field-validator type="url"><message><![CDATA[(The pattern of the URL is not good!)]]></message></field-validator></field><field name="birth"><field-validator type="required"><message><![CDATA[(birth should not be blank!)]]></message></field-validator><!-- 日期校验器 --><field-validator type="date"><param name="max">2013-5-27</param><param name="min">1999-10-1</param><message><![CDATA[(birth should before 2013-5-27 And after 1999-10-1!)]]></message></field-validator></field></validators>
此种类型也成为字段校验器,好了在来看看前台页面吧
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags"%><%@ taglib prefix="sx" uri="/struts-dojo-tags" %><%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>Convert Error</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><sx:head/></head><body><s:fielderror/><s:form action="valid"><s:textfield name="name" label="姓名" tabindex="1"/><s:password name="pass" label="密码" tabindex="2"/><s:password name="re_pass" label="确认密码" tabindex="3"/><s:textfield name="age" label="年龄" tabindex="4"/><sx:datetimepicker type="date" name="birth" label="生日" tabindex="5"/><s:textfield name="email" label="Email" tabindex="6"/><s:textfield name="url" label="URL" tabindex="7"/><s:submit></s:submit></s:form></body></html>
以上就基本上是一个校验器的知识,也有许多没涉及进去,后续会继续追加!^_^
- Struts2中的校验器
- struts2中的校验器
- Struts2中的输入校验
- Struts2中的校验框架
- Struts2中的校验框架
- Struts2中的校验框架
- Struts2中的校验框架
- Struts2中的校验框架
- Struts2中的校验框架
- Struts2中的校验框架
- Struts2中的校验框架
- Struts2 regex校验器
- Struts2内置校验器
- struts2校验器
- Struts2 校验器
- struts2 校验器概述
- Struts2校验器
- struts2---校验器
- oracle10g登录em后,提示“java.lang.Exception: Exception in sending Request :: null”
- Linux模块简介
- 不可表示的数(庞果网)完全解答
- oracle中dblink创建的两种方式
- HDU 1556 Color the ball
- Struts2中的校验器
- 智慧城市第二批试点落地 应规避激进风
- 5大常用的免费OCR软件
- Photoshop CS6简体中文完美破解版
- (Java 基础知识)Java TCP和UDP
- 数组遍历
- 简化的ajax +时间倒计时控件
- 用户级线程和内核级线程
- Red5 流处理架构设计解析