问题!struts2基于xml配置文件的用户验证方法,比struts2用户验证validate方法更加简便的方法
环境要求:struts2的环境及相关的7个包。
1.基于XML配置文件的方式:
动作类中的所有方法进行验证:在动作类的包中,建立一个名称为:动作简单类名-validation.xml ,比如要验证的动作类名是AddUserAction AddUserAction-validation.xml 如;
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<!--http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd 这个文件在xwork.jar中有,设置不联网的时候也能用的方法和设置struts2的方法一样,详情请看:http://blog.csdn.net/mr_li13/article/details/49391329 -->
<validators></validators>
UserAction-user_add-validation.xml
2.案例说明:
实现ActionSupport的动作类AddUserAction.class
package com.itcast.web.addUser; import java.io.Serializable; import com.opensymphony.xwork2.ActionSupport; public class AddUserAction extends ActionSupport implements Serializable { private String username;//用户名不能为空,还要去掉首尾空格 private String password;//3~6位的数字 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } // 动作方法的实现add public String add(){ System.out.println("执行了user的add方法"); return SUCCESS; } public String update(){ System.out.println("执行了user的update方法"); return SUCCESS; } }
<?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 name="username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空!</message> </field-validator> </field> <field name="password"> <field-validator type="regex"> <!-- <![CDATA[]]>这是字符转义成普通字符 --> <param name="expression"><![CDATA[\d{3,6}]]></param> <message>密码请输入3~6位的数字</message> </field-validator> <field-validator type="requiredstring"> <param name="trim">true</param> <message>密码不能为空!</message> </field-validator> </field> </validators>
<?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> <!-- constant表示常量设置,设置配置文件自动更新,开发中很重要 --> <constant name="struts.action.extension" value="action,,do"></constant> <constant name="struts.devMode" value="true"></constant> <!-- 数据验证 validate --> <package name="validate" namespace="/validate" extends="struts-default"> <action name="user_*" class="com.itcast.web.addUser.AddUserAction" method="{1}"> <result name="success">/uploadSuccess.jsp</result> <result name="input">/{1}User.jsp</result> </action> </package> </struts>
addUser.jsp
<%@ taglib uri="/struts-tags" prefix="s" %> <body> <!-- 验证信息数据回显 --> <s:fielderror fieldName="username"></s:fielderror> <s:fielderror fieldName="password"></s:fielderror> <form action="${pageContext.request.contextPath}/validate/user_add.action" method="post"> 用户名:<input type="text" name="username"/><br/> 密码:<input type="text" name="password"/><br/> <input type="submit" value="保存"/> </form> </body>
<%@ taglib uri="/struts-tags" prefix="s" %> <body> <!-- 修改信息数据回显 --> <s:fielderror fieldName="username"></s:fielderror> <s:fielderror fieldName="password"></s:fielderror> <form action="${pageContext.request.contextPath}/validate/user_update.action" method="post"> 用户名:<input type="text" name="username" value="sds"/><br/> 密码:<input type="text" name="password" value="sdff"/><br/> <input type="submit" value="保存"/> </form> </body>
<body> 成功验证! </body>
相关属性查看。
三、基于xml验证文件,对action指定方法进行验证,如何做?
*动作类中指定的方法进行验证:
配置文件的名称书写有一定要求。
动作类名-动作名(配置文件中的动作名)-validation.xml
如:AddUserAction-user_add-validation.xml
注:跟上面的validation.xml文件一样,必须放在同一个包下。