zoukankan      html  css  js  c++  java
  • Struts2-数据校验

    1、数据校验分为2类,一类是前端的数据校验,一般通过js实现,一类是后端的数据校验。在对一些安全级别要求较高的项目都需要对其进行后端验证。struts2提供了两种后端校验方法(一种是编码实现,一种是检验框架实现)

    2、如果要使用struts2的数据校验功能,action需要继承ActionSupport类。在该类中提供了一个validate方法,可以将验证规则写在该方法中,只有方法直行通过后,才会执行业务方法。

    3、编码实现实例:

    • Jsp 页面:一定要加上<s:actionerror/>或者是<s:fielderror/>
    <%--suppress ALL --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@taglib prefix="S" uri="/struts-tags" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
      <head>
        <title>Struts2的数据处理</title>
      </head>
      <body>
      <s:actionerror/>
      <form action="register.action" method="post">
        用户名:<input type="text" name="name"/><br>
        密码:<input type="password" name="pwd"/><br>
        年龄:<input type="text" name="age"/><br>
        生日:<input type="text" name="birthday"/><br>
        <input type="submit" value=" 登录 "/>
      </form>
      </body>
    </html>
    • Action 代码
    package cn.ht.action;
    
    import cn.ht.vo.User;
    import com.opensymphony.xwork2.ActionSupport;
    
    import java.util.Date;
    
    /**
     * @Classname UserAction
     * @Description TODO
     * @Date 2019-8-15 14:44
     * @Created by Administrator
     */
    public class UserAction extends ActionSupport {
    private String name;
        private String pwd;
        private int age;
        private Date birthday;
        @Override
        public String execute() throws Exception {
            System.out.println("execute");
            return SUCCESS;
        }
        public String register(){
            System.out.println("register");
            return SUCCESS;
        }
        public void validateRegister(){
            System.out.println("validate age");
            if(age>100||age<1){
                this.addActionError("年龄不合法");
            }
        }
        /*
         *   先执行validate方法,该方法通过后执行execute方法
         *   默认该方法是通过的
         *   在validate方法中,添加FieldError或者ActionError那么该方法将执行不能通过 并且放回的结果集为INPUT
         */
        public void validate() {
            System.out.println("validate");
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    }
    • Struts.xml 配置文件
    <package name="default" namespace="/" extends="struts-default">
            <action name="register" class="cn.ht.action.UserAction" method="register">
                <result>/success.jsp</result>
                <result name="input">/register.jsp</result>
            </action>
        </package>

    4、struts2 的验证框架实例:

    truts2 的验证框架
    使用验证框架的步骤:在对应的 action 的包下添加一个验证框架的配置文件
    该文件名为:actionName-validation.xml

    • Jsp 页面
    <%--suppress ALL --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@taglib prefix="S" uri="/struts-tags" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
      <head>
        <title>Struts2的数据处理</title>
      </head>
      <body>
      <s:fielderror></s:fielderror>
      <form action="register.action" method="post">
          用户名:<input type="text" name="name"/><br>
          密码:<input type="password" name="pwd"/><br>
          年龄:<input type="text" name="age"/><br>
          生日:<input type="text" name="birthday"/><br>
          <input type="submit" value=" 登录 "/>
      </form>
      </body>
    </html>
    • Action 类
    package cn.ht.action;
    
    import cn.ht.vo.User;
    import com.opensymphony.xwork2.ActionSupport;
    
    import java.util.Date;
    
    /**
     * @Classname UserAction
     * @Description TODO
     * @Date 2019-8-15 14:44
     * @Created by Administrator
     */
    public class UserAction extends ActionSupport {
        private String name;
        private String pwd;
        private int age;
        private Date birthday;
        @Override
        public String execute() throws Exception {
            System.out.println("execute");
            return SUCCESS;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    }
    • struts.xml 配置
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    
    <struts>
        <package name="default" extends="struts-default" namespace="/">
            <action name="register" class="cn.ht.action.UserAction">
                <result>/index.jsp</result>
                <result name="input">/register.jsp</result>
            </action>
        </package>
    </struts>
    • UserAction-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">
                <param name="trim">true</param>
                <message>用户名必填</message>
            </field-validator>
            <field-validator type="stringlength">
                <param name="trim">true</param>
                <param name="maxLength">10</param>
                <param name="minLength">4</param>
                <message>用户名去掉 2 端空格后 长度为${minLength}到
                    ${maxLength}</message>
            </field-validator>
        </field>
        <field name="age">
            <field-validator type="int">
                <param name="min">1</param>
                <param name="max">150</param>
                <message>年龄范围为 1~150</message>
            </field-validator>
        </field>
    </validators>
  • 相关阅读:
    第二周读书笔记——《人月神话》
    第一次读书笔记——《编程匠艺》
    自我介绍 and 阅读感想
    2017-2018-1 20155217 《信息安全系统设计基础》第八周学习总结
    2017-2018-1 20155217 20155236实验二 固件程序设计
    2017-2018-1 20155217 《信息安全系统设计基础》第七周学习总结
    20155217 20155236 20155324 《信息安全系统设计基础》实验一 开发环境的熟悉
    2017-2018-1 20155217 《信息安全系统设计基础》第五周学习总结
    2017-2018-1 20155217 《信息安全系统设计基础》第四周学习总结
    2017-2018-1 20155217 《信息安全系统设计基础》第三周学习总结
  • 原文地址:https://www.cnblogs.com/Anemia-BOY/p/11359360.html
Copyright © 2011-2022 走看看