Struts2验证框架---struts2学习笔记3
struts2 客户端验证
一. 直接对属性进行验证.
1. jsp页面. 注意 若struts配置文件中 action 有namespace, form中 也必须写明namespace. 关键的代码如下
<s:form action="logonAction" namespace="/"><s:textfield name="username"></s:textfield><s:password name="password"></s:password><s:submit value="submit"></s:submit></s:form>
?
2.struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="default" namespace="/" extends="struts-default"> <action name="logonAction" name="code">public class LogonAction extends ActionSupport {private String username;private String password;@Overridepublic String execute() throws Exception {return "success";}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;}}?
4.最关键的 验证的xml文件. 文件命名必须是 <ActionName>-validation.xml, 且必须和Action放在一个目录下, 此处为 ActionName 为LogonAction,所以验证文件名为LogonAction-validation.xml
<!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="username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空</message> </field-validator> </field> <field name="password"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>密码不能为空</message> </field-validator> </field> </validators>
?
?
二.struts2 visitor方式验证
?1.jsp文件? 注意from内的属性名称. 如"user.username", user和Action内的名称要一样, username则要和User类中的属性名称完全一样
?
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>Insert title here</title></head><body><s:form action="zhuceAction" namespace="/"><s:textfield name="user.username" label="用户名"></s:textfield><s:password name="user.password" label="密码"></s:password><s:textfield name="user.mobile" label="手机"></s:textfield><s:submit value="submit"></s:submit></s:form></body></html>
?
?
2.struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="default" namespace="/" extends="struts-default"> <action name="zhuceAction" name="code">public class ZhuceAction extends ActionSupport {private User user;@Overridepublic String execute() throws Exception {return super.execute();}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}?
4.Action内的bean
public class User {private String username;private String password;private String mobile;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;}public String getMobile() {return mobile;}public void setMobile(String mobile) {this.mobile = mobile;}}?
5.ZhuceAction-validation.xml文件
? 要求: 1).文件名? Action名-validation.xml,
????????? 2).目录? ?和Action一样
<!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="user"><!-- 此名字要和Action中的名字(以及页面内的名称一样) --><field-validator type="visitor"><param name="context">userContext</param><!-- "userContext" 起什么名字都无所谓, 但要和后面的User-userContext-validation.xml保持一致--><param name="appendPrefix">true</param><message></message></field-validator></field></validators>
?
?
6.User-userContext-validation.xml 验证文件.?
要求: 1).文件名 Bean名-5中配置的context值-validation.xml
???????? 2).目录 和Bean一个目录(此处要和User一个目录)
<!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="username"> <field-validator type="requiredstring"> <message>请输入用户名称</message> </field-validator> </field> <field name="password"> <field-validator type="requiredstring"> <message>请输入登录密码</message> </field-validator> </field> <field name="mobile"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>手机号不能为空</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[^1[358]\d{9}$]]></param> <message>手机号格式不正确</message> </field-validator> </field> </validators>?
?
补充: 其实二中的 5,6 完全可以用ZhuceAction-validation.xml 替代, 文件内容是
<!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="user.username"> <field-validator type="requiredstring"> <message>用户名不能为空</message> </field-validator> </field> <field name="user.password"> <field-validator type="requiredstring"> <message>密码不能为空</message> </field-validator> </field> <field name="user.mobile"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>手机号不能为空</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[^1[358]\d{9}$]]></param> <message>手机号格式不正确</message> </field-validator> </field></validators>?
?
?