资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 编程开发 >
Advertisement
文章正文

WebWork服务器端Validation的实现._编程

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   
  • 用Hibernate Interceptor很AOP的搞定对象修改纪录的保存 
  • Java 性能优化技巧集锦 (2) 
  • java_util_test 
  • 企业中的 RMI-IIOP 
  • FIFO与LRU 算法实现(java) 
  • 我的java开发环境配置 
  • java初学者必读-经验总结 
  • JBoss3.x和4.x下配SqlServer JDBC驱动 
  • Jsp中使用xmlhttp进行数据交互~ 
  • IBM的jxl方式(从数据库导出) 选择自 geyu 的 Blog 
  • 页面导航:

    正文内容:

    webwork服务器端validation的实现.

    使用webwork做web系统的demo已经基本完成了,经过几天的学习对webwork已经有一个基本的认识了.
      今天做了一个登陆界面,试了一试服务器端的validation.

    遇到了几个问题,记一下开发过程:

    webwork安装问题:
    tutoriallesson02中写到:
    validators.xml:
    again, at the root of the classpath, create a file called validators.xml, with the following content:
    .....
    this file defines the validators that are available for use.

    因为安装时没用到validation所以没太注意,随便以为就放到web-inf目录了,结果今天遇到问题了。说没找到校验类实现,查了半天,hehe.后来把validators.xml放到 /web-inf/classes就可以了。
      回头看看文档,其实上面说胡 root of the classpath 是指 /web-inf/classes.以后一定要注意看文档了,其实遇到问题时还是应静下心来想问题原因,可能是什么问题引起的,而不是胡乱试,结果浪费时间(其实每次解决完问题后我都会这么想,可是到下次遇到问题是我就又是胡乱试了,呵呵)

    言归正传,开发步骤如下:

    流程:
    login.jsp中输入用户名和密码提交给login.action处理,login.action对应配置loginaction.class实现loginaction-validation.xml配置验证内容和提示信息,如果验证失败返回login.jsp并显示提示信息。

    1.写login.jsp页面。
    2.写loninaction.java
    3.在loginaction.java同一个包下写loginaction-validation.xml。注意: loginaction-validation.xml 和loginaction.java要放在同一目录。-validation.xml文件要以前的名字要为类的名字并注意大小写。还有噢,如果错误提示信息为中文时要设置xml的encoding为gb2312(gbk应该也可以没试过。)(又另:为了对观众负责又特意把loginaction-validation.xml前的loginaction改为别的试了一下,确定要与文件名要用类名开头否则不执行验证。)
    4.配置xwork.xml.注意配置中要加<interceptor-ref name="validationworkflowstack" />以启用验证,验证不通过时返回的结果为“input",所以为了验证错误时返回输入页要配置名字为"input"的result

    顺便说一下,验证失败是要显示错误信息应该使用:fielderrors 详见login.jsp

    以下为实例代码:
    webwork2.1.7 tomcat5.5.4下测试通过:

    login.jsp:

    <%@ page contenttype="text/html; charset=utf-8"%>
    <%@ taglib uri="webwork" prefix="ww" %>
    <!doctype html public "-//w3c//dtd html 4.01 transitional//en">
    <html>
    <head> 
      <title>综合结算系统查询平台登陆界面</title>
     <meta http-equiv="content-type" content="text/html; charset=gb2312"> 
    </head>
    <body>
     <ww:if test="haserrors()">
      error:<br />
      <font color="red">
      <ww:iterator value="fielderrors">
      <ww:property/><br />
      </ww:iterator>
      </font>
     </ww:if>
    <form name="form1" method="post" action="login.action">
      <p>&nbsp;</p>
      <table width="75%" border="1" align="center">
      <tr>
      <td colspan="2"><div align="center">登录</div></td>
      </tr>
      <tr>
      <td width="50%"><div align="right">用户名:</div></td>
      <td width="50%"><input name="username" type="text" value="<ww:property value="username" />"></td>
      </tr>
      <tr>
      <td><div align="right">密码:</div></td>
      <td><input name="password" type="text" id="password4"></td>
      </tr>
      <tr>
      <td colspan="2"><div align="center">
      <input type="submit" name="submit" value="submit">
      <input type="reset" name="submit2" value="reset">
      </div></td>
      </tr>
      </table>
      <p>&nbsp; </p>
      <p>&nbsp; </p>
    </form>
    </body>
    </html>


    loginaction.java 就是验证通过后执行功能的类了,比如查数据库比较密码等。没具体实现。
    import com.opensymphony.xwork.actionsupport;

    /**
     * @author leo
     *登陆系统检查
     */
    public class loginaction extends actionsupport {
     
     private string username;
     private string password;
     
     public string execute() throws exception{
     
     return error;
     }
     //get set 方法略
    }


    loginaction-validation.xml(再说一次要与loginaction.xml同一目录噢。。。。)


    <?xml version="1.0" encoding="gb2312"?>
    <!doctype validators public "-//opensymphony group//xwork validator 1.0//en"
     "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
     
    <validators>
      <field name="username">
       <field-validator type="requiredstring">
       <message>你必须输入一个用户名.</message>
      </field-validator>
      <field-validator type="stringlength">
       <param name="minlength">4</param>
       <param name="maxlength">4</param>
       <message>用户名长度必须在 ${minlength} 和 ${maxlength} 之间.</message>
      </field-validator> 
      </field>
      <field name="password">
       <field-validator type="requiredstring">
       <message>你必须输入一个密码.</message>
      </field-validator>
      <field-validator type="stringlength">
       <param name="minlength">6</param>
       <param name="maxlength">8</param>
       <message>密码长度必须在 ${minlength} 和 ${maxlength} 之间.</message>
      </field-validator> 
      </field>
    </validators>

    xwork.xml配置:
     <action name="login" class="com.longshine.action.loginaction">
     <result name="success" type="dispatcher">index.htm</result>  
     <result name="input" type="dispatcher">login.jsp</result>
     <interceptor-ref name="validationworkflowstack" /> 
     </action> 

    注意 要配置name="input" 噢

    明天再试试客户端的javascript验证,不过听说webwork这方面不如struts.
    现在还不知道怎么做呢,明天看看文档再说,19:31累饿了,吃饭先。。
    噢,不明天不行,明天要到厦门开年会。。。

    webwork的文档的确没有struts多,不过我还是选择了webwork因为我觉得它比struts清析,比较符合我的想法,struts如何呢,我只写过hello world不敢乱说,不过感觉来说配置比较多,流程比较复杂,对,只是感觉....

     

    ------------------------------------------------------
    回头看看写得实在是太乱了。。。。。晕。。
    再一次的提醒自己下一次写东西要先列提纲。。。。

    再次提醒。。。

     


     

     
    热门推荐笔记本: IBM笔记本
    相关文章:
    webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
    ©2007 popbb.net All Rights Reserved