Struts之编程校验和声明式校验

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-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>My JSP 'index.jsp' starting page</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>

  <body>
 <!--Struts特有 :OGNL表达式-->
 <s:form action="Login" method="post">
 <s:textarea label="姓名" name="name"/>
 <s:textarea label="年龄" name="age"/>
 <s:submit/>
 </s:form>
  </body>
</html>

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
  <head>

  </head>

  <body>
  <s:debug/>

 <!--获取值 OGNL取值只需要写value ,无序表达式  -->
 姓名:<s:property value="name"/>
 年龄:<s:property value="age"/>
  </body>
</html>

1.编程式校验(action里面校验)

     实体类
     继承ActionSupport
     重写validate
     addFieldError("要校验的值(属性)", "错误信息!");

1.实体类

public class User {
private String name;
private Integer age;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public Integer getAge() {
    return age;
}
public void setAge(Integer age) {
    this.age = age;
}
@Override
public String toString() {
    return "User [name=" + name + ", age=" + age + "]";
}

}

2.Action继承ActionSupport

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class LoginAction extends ActionSupport implements ModelDriven<User> {
    // 声明对象
    private User user;
    //重写validate
    @Override
    public void validate() {
        // 校验用户名非空
        // 校验年龄范围
        if (user.getName() == null || "".equals(user.getName().trim())) {
            addFieldError("name", "用户名不能为空");
        } else if (user.getAge() <= 0 || user.getAge() > 150) {
            addFieldError("age", "年龄不合法");
        }

    }

    public String execute() {
        System.out.println("执行了()...");
        return "success";
    }

    @Override
    public User getModel() {
        if (user == null) {
            user = new User();
        }
        return user;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    // get和set方法

}

struts.xml

<package name="xxx" extends="struts-default">
    <action name="Login" class="com.lan.entity.LoginAction" >
    <result name="success">/success.jsp</result>
    <!-- 拦截一下  回调视图,当输入异常的时候,返回当前页面-->
    <result name="input">/index.jsp  </result>
    </action>
    </package>

声明式校验

配置validation.xml
继承ActionSupport

LoginAction-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="name">
<!-- 校验: 非空   长度
-->
<!--校验器-->
<field-validator type="requiredstring">
<message>姓名不能为空(*)</message>
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[[\u4e00-\u9fa5]{3,6}]]></param>
<message>姓名必须在3-6个中文字符之间</message>
</field-validator>
</field>

<!--年龄-->
<field name="age">
<field-validator type="required">
<message>年龄不能为空(*)</message>
</field-validator>

<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄必须在1-150之间</message>
</field-validator>
</field>


</validators>

Action

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class LoginAction extends ActionSupport implements ModelDriven<User> {
    // 声明对象
    private User user;

    public String execute() {
        System.out.println("执行了()...");
        return "success";
    }

    @Override
    public User getModel() {
        if (user == null) {
            user = new User();
        }
        return user;
    }

struts.xml

<package name="xxx" extends="struts-default">
    <action name="Login" class="com.lanou.entity.LoginAction" >
    <result name="success">/success.jsp</result>
    <!-- 拦截一下  回调视图,当输入异常的时候,返回当前页面-->
    <result name="input">/index.jsp  </result>
    </action>
    </package>

所需要的jar包
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.2.jar
freemarker-2.3.22.jar
javassist-3.11.0.GA.jar
log4j-api-2.2.jar
log4j-core-2.2.jar
ognl-3.0.6.jar
struts2-core-2.3.24.jar
xwork-core-2.3.24.jar

猜你喜欢

转载自blog.csdn.net/qq_31334119/article/details/80194143