Struts2中使用Validation数据验证

来源:互联网 发布:上市公司捐赠数据 编辑:程序博客网 时间:2024/05/21 11:34

1、新建一个【ActionName】-validation.xml的文件

注意:①文件的名字:ActionName对应你需要进行数据验证的Action类的名字,例如我需要对LoginAction类进行登录的非空验证,此文件为LoginAction-validation.xml)以下我以LoginAction.java为例进行讲解

   ②此文件的位置:与LoginAction.java在同一目录。就是编译后LoginAction-validation.xml要和LoginAction.class在同一包内

LoginAction-validation.xml内容如下

<?xml version="1.0" encoding="GBK"?>
<!-- 指定校验规则文件的DTD信息 -->
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<!--此处引入这个,有些使用OpenSymphony下的,此已经不能用了-->
<!-- 校验规则定义文件的根元素 -->
<validators>
<!-- 校验第一个表单域:username -->
<field name="username">
<!-- 该表单域必须填写 -->
<field-validator type="requiredstring">
<!-- 如果校验失败,显示user.required对应的信息 -->
<message>用户名不能为空</message>
</field-validator>
</field>
<!-- 校验第二个表单域 -->
<field name="password">
<field-validator type="requiredstring">
<!-- 如果校验失败,显示pass.required对应的信息 -->
<!-- <message key="pass.required"/> -->
<message>密码不能为空</message>
</field-validator>
</field>
</validators>

此文件的field中name属性要对应页面文本框的name属性

2、login.jsp页面内容如下

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">    
    <title>登陆页面</title>
  </head>
  
  <body>
    <!-- 提交请求参数的表单 -->  
    <s:form action="Login.action">
    <s:textfield name="username" label="用户名"/>
    <s:password name="password" label="密  码"/>    
    <s:submit value="登陆"/>    
    </s:form>
  </body>
</html>

3、Login.java类内容

package lee;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
//注意:此处一定要继承ActionSupport类,如果不继承验证输出信息只会输出在控制台,不跳转验证有误的页面
public class LoginAction extends ActionSupport{
//下面是Action内用于封装用户请求参数的两个属性
private String username;
private String password;
//username属性对应的getter方法
public String getUsername(){
return username;
}
//username属性对应的setter方法
public void setUsername(String username){
this.username=username;
}
//password属性对应的getter方法
public String getPassword(){
return password;
}
//password属性对应的setter方法
public void setPassword(String password){
this.password=password;
}
//处理用户请求的execute方法
public String execute() throws Exception{
//当用户请求参数的username等于scott,密码请求参数为tiger时,返回success字符串
//否则返回error字符串
if(getUsername().equals("sun") && getPassword().equals("123")){
ActionContext.getContext().getSession().put("user",getUsername());
return "success";
}else{
return "error";
}
}
}

4、struts.xml文件要在loginAction跳转那加一个input跳转,验证不通过就会再度跳转到登录页面,并提示相关的提示信息

<action name="Login" class="lee.LoginAction">
<!--定义处理结果和资源之间映射关系。-->
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
<result name="input">/login.jsp</result>
</action>

到这里就算是实现了一个登录用户名、密码非空的验证,我加红的字体都是着重要注意的地方

0 0
原创粉丝点击