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方法进行校验
浙公网安备 33010602011771号