• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
第二天半
博客园    首页    新随笔    联系   管理    订阅  订阅

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方法进行校验

 

posted @ 2015-03-25 12:08  第二天半  阅读(282)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3