读书人

Struts2证验框架-struts2学习笔记3

发布时间: 2012-08-30 09:55:54 作者: rapoo

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>

?

?

?

读书人网 >编程

热点推荐