struts2校验有两种实现方法:

手工编写代码实现(基本验证)

//login.jsp

<font color="red"><s:fielderror/></font>

<s:form action="login">

<s:textfield name="uname" label="user name"></s:textfield>

<s:password name="upass" label="pass word"></s:password>

<s:submit></s:submit>

</s:form>

//LoginAction.java里面重写validate方法

//校验失败则返回“input”,校验成功则执行execute方法

public void validate(){

if("".equals(uname)){

this.addFieldError("uname", "user name can not be null!");

}

if("".equals(upass)){

this.addFieldError("upass", "pass word can not be null!");

}

}

//如果针对不同的请求需要不同的验证方法

//比如说请求register和login两个不同的方法

//则对应书写validateRegister()和validateLogin()两个验证方法即可

基于XML配置方式实现(验证框架)

手动输入校验,虽然比在Servlet中能方便一点,但是还是出现了大量繁琐的编程代码。Struts2提供了更为高效、简易的校验框架,用户只需设置校验配置文件即可完成输入校验。

主要步骤就是在action同目录下创建一个xml格式的验证文件。

Login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>login page</title>

</head>

<body>

<s:form action="loginAction">

<s:textfield name="userName" label="用户名"></s:textfield>

<s:password name="passWord" label="用户密码"></s:password>

<s:submit></s:submit>

</s:form>

</body>

</html>

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.i18n.encoding" value="UTF-8"></constant>

<package name="struts2" extends="struts-default" >

<action name="loginAction" class="com.silvan.action.LoginAction">

<result>/index.jsp</result>

<result name="input">/login.jsp</result>

</action>

</package>

</struts>

loginAction.java

package com.silvan.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

private String userName;

private String passWord;

public String login(){

return SUCCESS;

}

Get/set……

}

LoginAction-validation.xml与对应的Action类放入同一个文件夹下,并且以XxxAction-validation.xml的命名方式:(该xml校验文件的书写模板在xwork-core-2.1.6.jar包下的xwork-validator-1.0.3.dtd中可以查看)

<?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">

<param name="trim">true</param>

<message>用户名不能为空xml</message>

</field-validator>

</field>

<field name="passWord">

<field-validator type="requiredstring">

<param name="trim">true</param>

<message>用户密码不能为空xml</message>

</field-validator>

</field>

</validators>

可拓展的知识点:

  1. 正则表达式;
  2. 实现错误提示信息的国际化。

Struts2校验的更多相关文章

  1. Struts2 校验

    Struts2校验格式: actionName-methodName-invalidation.xml  该配置文件必须和action类在同一个包下. <?xml version="1 ...

  2. Struts2 校验框架学习笔记

    Struts2 校验框架 Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更 ...

  3. struts2校验总结

    struts校验框架提供两种校验:客户端校验和服务端校验.它们都是主要检查浏览器输入数据是否合法的校验器. 服务端校验 服务端校验是在服务器上检查输入数据,它的实现方法是重写validate()方法. ...

  4. struts2 校验数据的有效性 2种方式

    Struts2的数据校验: 数据的校验分为客户端校验和服务器端两种: 客户端校验:JS完成的校验.(为了提升用户体验.减少用户的输入错误) 服务器端校验:在后台的校验.(必须的.) 手动编码进行校验: ...

  5. struts2校验の实现

    1.JSP <%@ page contentType="text/html; charset=utf-8" language="java" errorPa ...

  6. struts2校验器规范错误解决

    今天struts2的校验器的配置文件文件头出现了错误,配置如下: <!DOCTYPE validators PUBLIC        "-//OpenSymphony Group// ...

  7. 使用 Struts2 校验器校验用户注册信息

    基于验证框架的输入校验 一.创建一个struts2项目testValidators.Struts2 初体验:http://www.cnblogs.com/likailan/p/3280820.html ...

  8. 使用 Struts2 校验器校验用户注册信息的例子

    转自:https://blog.csdn.net/jin2005006/article/details/53999562 基于验证框架的输入校验 一.创建一个struts2项目testValidato ...

  9. struts2 校验demo

    综合练习: <validators> <field name="username"> <field-validator type="requ ...

随机推荐

  1. struts1——静态ActionForm与动态ActionForm

    在struts1中,我们能够使用ActionForm来获取从client端提交上来的数据.并通过action配置中的name属性.将某个ActionForm配置到某次请求应答的Action中.作为本次 ...

  2. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第六步--金币&amp;岩石加入而且管理

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  3. objective-c 中数据类型之四 字典(NSDictionary)

    // 1. 字典初始化.赋值方式1 NSMutableDictionary *m_dictionary = [[NSMutableDictionary alloc] initWithCapacity: ...

  4. JVM —— Java 对象占用空间大小计算

    零. 为什么要知道 Java 对象占用空间大小 缓存的实现: 在设计 JVM 内缓存时(不是借助 Memcached. Redis 等), 须要知道缓存的对象是否会超过 JVM 最大堆限制, 假设会超 ...

  5. 一张游览PHP内核迷宫的藏宝图

    PHP内核就像一个迷宫,假设没有一个纵览全局的图,仅仅是面对当中的一个点,就会像进了迷宫一样,走着走着就走到了死胡同.在这个迷宫里转悠了非常久之后,近期得到了一张PHP藏宝图.然后看着这张图去游览PH ...

  6. oc7--内存分析

    // // main.m // 第二个OC类 #import <Foundation/Foundation.h> @interface Person : NSObject { @publi ...

  7. 2.2Shiro架构

  8. c#约瑟环实现

    约瑟环问题就是有n个人坐成一个圈.从某个人开始报数,数到m的人出列,接着从列出的下一个人开始重新报数,数到m的人再次出列,如此循环,直到所有的人都出列,最后按出列的顺序输出.

  9. hihoCoder-1633 ACM-ICPC北京赛区2017 G.Liaoning Ship’s Voyage 线段与三角形规范相交

    题面 题意:给你一个20*20的地图,起点(0,0),终点(n-1,n-1),有障碍的点为‘#’,每次可以向8个方向走一步,还给了一个三角形,除了障碍以外,到这8个方向上的点的线段如果没有与三角形相交 ...

  10. Java常见面试题02-方法重写和方法重载的区别?方法重载能改变返回值类型吗?

    方法重写和方法重载的区别?方法重载能改变返回值类型吗?       A:Override方法重写和Overload方法重载的区别? Overload是否可以改变返回值类型?可以 方法重写 •  子类中 ...