`
孤星119
  • 浏览: 122670 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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" class="LogonAction">
        	<result name="input">/logon.jsp </result>
        	<result name="success">/index.jsp </result>
        </action>

    </package>
</struts>

 

3.Action

public class LogonAction extends ActionSupport {
	private String username;
	private String password;
	
	@Override
	public 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" class="zhuce.ZhuceAction">
        	<result name="input">/zhuce.jsp </result>
        	<result name="success">/index.jsp </result>
        </action>
    </package>
</struts>

 

3.Action

public class ZhuceAction extends ActionSupport {
	private User user;

	@Override
	public 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>

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics