SSH学习(七)Struts2输入验证

来源:互联网 发布:淘宝上黄金是真的吗 编辑:程序博客网 时间:2024/04/30 13:56

原文来自搬砖工,如需转载请注明出处


博主SSH框架专栏请戳这里http://blog.csdn.net/column/details/14227.html

一、验证的分类

对于我们javaweb应用程序来说,对输入的数据进行验证是必不可少的,数据验证主要分为客户端验证和服务器验证。对于客户端验证,一般是用js实现,通过js函数进行参数验证。对于服务器端验证,就是使用的java代码来对数据进行验证。在Struts2中有专门的服务器验证。

二、Struts2验证

1.Struts2的验证分类

在Struts2中分为手动验证和自动验证,手动验证就是我们自己定义验证函数实现验证逻辑。自动验证则是利用Struts提供的验证,结合我们所写的配置进行输入验证。

2.使用Struts手动验证流程

在Action中实现validate方法,把所以的验证逻辑写在里面。然后把提示信息使用this.addFieldError(params,msg)将提示信息和参数绑定,以确保提示信息显示在正确位置。

3.使用自动验证

需要建立一个配置文件RegistorAction-validation.xml,RegistorAction只要你是对什么Action进行验证就写它的名称。然后在配置文件中写入配置信息就可以了,对什么参数使用什么验证,并且有什么提示信息。

注意:Struts输入验证需要使用Struts的标签创建表单,否则验证信息无法提示

三、实例

1.手动验证

首先创建一个RegistorAction

package com.study.action;import com.opensymphony.xwork2.ActionSupport;public class RegistorAction extends ActionSupport{private String username;private String password;private String addr;private String email;private int age;public void validate() {//只对用户名和密码进行非空验证if(username==null||username.trim().equals("")){String msg = "用户名不能为空!";this.addFieldError("username", msg);}if(password==null||password.trim().equals("")){String msg = "密码不能为空!";this.addFieldError("password", msg);}}public String execute() throws Exception {return SUCCESS;}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 String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}}
两个页面,一个注册页面和成功页面

registor.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%><%@ 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>  </head>  <body>  <s:form action="registor" method="post">  <s:textfield name="username" label="username"></s:textfield>  <s:password name="password" label="password"></s:password>  <s:textfield name="addr" label="addr"></s:textfield>  <s:textfield name="age" label="age"></s:textfield>  <s:textfield name="email" label="email"></s:textfield>  <s:submit value="regist" label="regist"></s:submit>  </s:form>  </body></html>
Success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%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%>">  </head>    <body>    hello world!,${username}  </body></html>
然后就是配置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><package name="example" namespace="/" extends="struts-default"><action name="registor" class="com.study.action.RegistorAction"><result name="success">/Success.jsp</result><result name="input">/registor.jsp</result></action></package></struts>    
验证效果


这就是struts2手动验证的实现实例

注意:必须使用struts标签来创建表单,否则不生效

2.自动验证

以手动验证做比较,将Action中的验证方法注释掉,然后我们创建一个RegistorAction-validation.xml,把文件放在Action对应的包下面。

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC        "-//Apache Struts//XWork Validator Definition 1.0//EN"        "http://struts.apache.org/dtds/xwork-validator-1.0.dtd"><validators><field name="username"><field-validator type="requiredstring"><message>用户名不能为空!</message></field-validator></field><field name="password"><field-validator type="requiredstring"><message>密码不能为空!</message></field-validator></field></validators>
如果需要Struts2的标签提示,一定得把文件声明写对,不然myeclipse是不会给提示信息的。自动实现的效果和手动验证一样,当然,大家可以把message里面的内容定义为资源文件进行管理。

以上就是Struts2输入验证的全部内容,或许有些地方总结不足,请多多指正。

3 2
原创粉丝点击