zoukankan      html  css  js  c++  java
  • struts_20_对Action中所有方法、某一个方法进行输入校验(基于XML配置方式实现输入校验)

    第01步:导包

    第02步:配置web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
        xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     
         <!-- 第00步:启动Struts框架 -->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
    
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    第03步:编写bean

    package cn.itcast.bean;
    
    /**
     * 第01步:
     * ******编写bean
     * 下一步:package cn.itcast.action.PersonAction;
     */
    public class Person {
        private String name;
        private String mobile;
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getMobile() {
            return mobile;
        }
        public void setMobile(String mobile) {
            this.mobile = mobile;
        }
    }

    第04步:编写action

    package cn.itcast.action;
    
    import cn.itcast.bean.Person;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    /**
     * 第02步:
     * 编写action
     */
    public class PersonAction extends ActionSupport{
        private Person person;
        
        /**第03步:编写action方法update()、save(),下一步:struts.xml**/
        /**3.1**/
        public String update(){
            System.out.println("执行update!");
            ActionContext.getContext().put("message", "更新成功");
            return "message";
        }
        /**3.2**/
        public String save(){
            System.out.println("执行save!");
            ActionContext.getContext().put("message", "保存成功");
            return "message";
        }
        /**3.3**/
        public String other(){
            System.out.println("执行other!");
            ActionContext.getContext().put("message", "other");
            return "message";
        }
        
        /**set()、get()方法*/
        public Person getPerson() {
            return person;
        }
    
        public void setPerson(Person person) {
            this.person = person;
        }
        
    }

    第05步:编写校验器xml配置文件:

    名字如果是:PersonAction-validation.xml:对所有方法进行验证(类名+"-validation.xml")

    名字如果是:PersonAction-manage_*-validation.xml:对manage_*所指定的方法进行校验,manage_*是struts配置的

    名字如果是:PersonAction-manage_save-validation.xml:对save方法进行校验

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
    <validators>
        <!-- field指定action中需要校验的属性 -->
        <field name="person.name">
            <!-- 
                field-validator指定校验器,requiredstring是系统提供的校验器(校验不能为空),
                可以在com.opensymphony.xwork2.validator.validations下的default.xml中找到所有校验器,也可以扩展加入自己的校验器
             -->
            <field-validator type="requiredstring">
                <!-- 反射注入方式:实现去掉字符串前后的空字符-->
                <param name="trim">true</param>
                <!-- 提示的错误信息 -->
                <message>用户名不能为空!</message>
            </field-validator>
        </field>
        <field name="person.mobile">
            <field-validator type="requiredstring">
                <param name="trim">true</param>
                <message>手机号不能为空!</message>
            </field-validator>
            <!-- regex:正则表达式校验器,CDATA:xml的格式化,表明里面类容为字符串,不是xml元素 -->
            <field-validator type="regex">
                <param name="expression"><![CDATA[^1[358]d{9}$]]></param>
                <message>手机号格式不正确!</message>
            </field-validator>
        </field>
    </validators>

    第06步:配置strut.xml文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>     
         <package name="person" namespace="/person" extends="struts-default">
                <action name="manage_*" class="cn.itcast.action.PersonAction" method="{1}">
              <!-- 指定input视图 --> <result name="input">/index.jsp</result> <result name="message">/WEB-INF/page/message.jsp</result> </action> </package> </struts>

    第07步:编写界面

    index.jsp

    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>输入校验</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0"> 
      </head>
      
      <body>
      save方法校验
          <!-- s:fielderror显示失败信息 -->
       <s:fielderror/>
       <form action="person/manage_save.action" method="post">
               用户名:<input type="text" name="person.name"/>不能为空<br/>
               手机号:<input type="text" name="person.mobile"/>不能为空,并且要符合手机号的格式1,3/5/8,后面是9个数字<br/>
               <input type="submit" value="提 交"/></form>
    
      update方法校验
       <s:fielderror/>
       <form action="person/manage_update.action" method="post">
               用户名:<input type="text" name="person.name"/>不能为空<br/>
               手机号:<input type="text" name="person.mobile"/>不能为空,并且要符合手机号的格式1,3/5/8,后面是9个数字<br/>
               <input type="submit" value="提 交"/></form>
    
       所有方法校验
       <s:fielderror/>
       <form action="person/manage_other.action" method="post">
               用户名:<input type="text" name="person.name"/>不能为空<br/>
               手机号:<input type="text" name="person.mobile"/>不能为空,并且要符合手机号的格式1,3/5/8,后面是9个数字<br/>
               <input type="submit" value="提 交"/></form>
      </body>
    </html>

    message.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>结果</title>
      </head>
      
      <body>
        ${message }
      </body>
    </html>

    注意、需求:

    对所有方法进行校验
    1、基于XML配置方式实现action方法的校验
    
    需求:
    用户名:不能为空
    手机号:不能为空,并且要符合手机号的格式1,3/5/8,后面是9个数字
    
    注意:
    需继承ActionSupport类,
    需要在struts.xml中指定input视图, 校验文件放在action类同一包下, 文件格式为ActionClassName
    -validation.xml(类名+"-validation.xml")

      名字如果是:PersonAction-validation.xml:对所有方法进行验证

      名字如果是:PersonAction-manage_*-validation.xml:对manage_*所指定的方法进行校验,manage_*是struts配置的

      名字如果是:PersonAction-manage_save-validation.xml:对save方法进行校验

  • 相关阅读:
    codeforces round 512 F. Putting Boxes Together 树状数组维护区间加权平均数
    sgu 110 射线关于球的反射光线
    快速读模板
    HDU-3506 二维四边形不等式
    BZOJ 1563 四边形不等式
    HIT Summer Day17 计算几何初步 题解
    IME Starters Try-outs 2018 C. China Adventures
    IME Starters Try-outs 2018 J. JHADCBEIGF
    ACM International Collegiate Programming Contest, Amman Collegiate Programming Contest (2018) GYM 100810 K. League of Demacia
    Codeforces Round #493 (Div. 1) C. Sky Full of Stars
  • 原文地址:https://www.cnblogs.com/zjsy/p/4365268.html
Copyright © 2011-2022 走看看