文档章节

输入校验(1)——struts2第三讲

一别经年
 一别经年
发布于 2014/06/13 21:16
字数 1002
阅读 14
收藏 0

输入校验 表单提交

注:本文系作者在看了浪曦的风中叶老师的struts2视频的个人总结,希望能帮助广大struts2的初学者。 

第一步: 
(这一步和其他一样,这里从简)依旧是新建一个web project,命名为shuruxiaoayn,导入struts2必须的包。在src目录下新建struts.xml,修改web.xml文件。 

第二步: 
将index.jsp改名为regt.jsp(这个不是必须的,事实上也没有必要,此处只是为了便于称呼)。reg.jap的代码如下 

Jsp代码  收藏代码

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  

  2. <%  

  3. String path = request.getContextPath();  

  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  

  5. %>  

  6. <%@ taglib prefix="s"  uri="/struts-tags"%>  

  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  

  8. <html>  

  9.   <head>  

  10.     <base href="<%=basePath%>">  

  11.       

  12.     <title>My JSP 'index.jsp' starting page</title>  

  13.     <meta http-equiv="pragma" content="no-cache">  

  14.     <meta http-equiv="cache-control" content="no-cache">  

  15.     <meta http-equiv="expires" content="0">      

  16.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  

  17.     <meta http-equiv="description" content="This is my page">  

  18.     <!--  

  19.     <link rel="stylesheet" type="text/css" href="styles.css">  

  20.     -->  

  21.   </head>  

  22.     

  23.   <body>  

  24.             <s:form action="reg" >  

  25.                     <s:textfield  name="username" label="username"></s:textfield>  

  26.                     <s:password name="password" label="password"></s:password>  

  27.                     <s:password name="repassword" label="repassword"></s:password>  

  28.                     <s:textfield name="age" label="age"></s:textfield>  

  29.                     <s:textfield name="birthday" label="birthday"></s:textfield>  

  30.                     <s:textfield name="graduation" label="graduation"></s:textfield>  

  31.                       

  32.                     <s:submit name="submit"></s:submit>  

  33.                     <s:reset name="reset"></s:reset>  

  34.             </s:form>  

  35.   

  36.   </body>  

  37. </html>  


第二步:action 
在src目录下新建新建包com.action 在其中新建一个RegAction.java文件 
代码如下 

Java代码  收藏代码

  1. package com.action;  

  2.   

  3. import java.util.Calendar;  

  4. import java.util.Date;  

  5.   

  6. import com.opensymphony.xwork2.ActionSupport;  

  7.   

  8. public class RegAction  extends ActionSupport  

  9.   

  10. {  

  11.         private String username;  

  12.         private String password;  

  13.         private String repassword;  

  14.         private int age;  

  15.         private Date birthday;  

  16.         private Date graduation;  

  17.           

  18.           

  19.         public String getUsername() {  

  20.             return username;  

  21.         }  

  22.         public void setUsername(String username) {  

  23.             this.username = username;  

  24.         }  

  25.         public String getPassword() {  

  26.             return password;  

  27.         }  

  28.         public void setPassword(String password) {  

  29.             this.password = password;  

  30.         }  

  31.         public String getRepassword() {  

  32.             return repassword;  

  33.         }  

  34.         public void setRepassword(String repassword) {  

  35.             this.repassword = repassword;  

  36.         }  

  37.         public int getAge() {  

  38.             return age;  

  39.         }  

  40.         public void setAge(int age) {  

  41.             this.age = age;  

  42.         }  

  43.         public Date getBirthday() {  

  44.             return birthday;  

  45.         }  

  46.         public void setBirthday(Date birthday) {  

  47.             this.birthday = birthday;  

  48.         }  

  49.         public Date getGraduation() {  

  50.             return graduation;  

  51.         }  

  52.         public void setGraduation(Date graduation) {  

  53.             this.graduation = graduation;  

  54.         }  

  55.           

  56.         public String execute() throws Exception  

  57.         {  

  58.             return  SUCCESS;  

  59.         }  

  60.           

  61.         public void validate()  

  62.         {  

  63.             System.out.println("已经调用了效验方法");  

  64.             if(null == username || username.length() <6 || username.length() >10)  

  65.             {  

  66.                 this.addFieldError("username","username needs 6 to 10 chars");  

  67.             }  

  68.             if(null == password || password.length() <6 || password.length() >10)  

  69.             {  

  70.                 this.addFieldError("password""password needs 6 to 10 chars");  

  71.             }  

  72.             if(null == repassword || repassword.length() <6 || repassword.length() >10)  

  73.             {  

  74.                 this.addFieldError("repassword""repassword needs 6 to 10 chars");  

  75.             }  

  76.             ifnull != password || null !=repassword)  

  77.             {  

  78.                  if(  !password.equals(repassword) )  

  79.                  {  

  80.                      this.addFieldError("repassword""two pasword should be same");  

  81.                  }  

  82.             }  

  83.               

  84.             if(age <=0 || age >150)  

  85.             {  

  86.                 this.addFieldError("age""age should between 1 to 149");  

  87.             }  

  88.             if(null == birthday )  

  89.             {  

  90.                 this.addFieldError("birthday""birthday required");  

  91.             }  

  92.             if(null == graduation)  

  93.             {  

  94.                 this.addFieldError("graduation""graduation required");  

  95.             }  

  96.             if(null != birthday && null != graduation)  

  97.             {  

  98.                   Calendar c1 =Calendar.getInstance();  

  99.                    c1.setTime(birthday);  

  100.                      

  101.                    Calendar c2 = Calendar.getInstance();  

  102.                    c2.setTime(graduation);  

  103.                      

  104.                    if( !c1.before(c2))  

  105.                    {  

  106.                        this.addFieldError("birthday""birthday should be after the graduation");  

  107.                    }  

  108.                          

  109.             }  

  110.               

  111.               

  112.         }  

  113.           

  114.           

  115.           

  116.           

  117.           

  118. }  




第四步: 
在WebRoot目录下新建另一个视图 success.jsp (此文件在这个效验中基本没有什么作用) 

第五步:修改struts.xml文件 代码惹下 

Xml代码  收藏代码

  1. <?xml version="1.0" encoding="utf-8" ?>  

  2. <!DOCTYPE struts PUBLIC  

  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   

  4.     "struts.apache.org/dtds/struts-2.0.dtd">  

  5. <struts>  

  6.         <package name="shuruxiaoyan" extends="struts-default">  

  7.                 <action name="reg" class="com.action.RegAction">  

  8.                         <result name="success">/success.jsp</result>  

  9.                         <result name="input">/reg.jsp</result>  

  10.                 </action>  

  11.         </package>  

  12.   

  13. </struts>  



ok,到此,已经完成了最最基本的输入校验工作; 
运行界面会是如下: 
图1 

 



图2 

 


显然。上面中图2中有些信息不是我们制定的,这是由于输入的数据没有通过类型转换造成的; 
当然,如果想让出错提示变得更友好些,在进行如下操作: 

第六步:配置属性文件 
在对应的action目录中新建一个RegAction.properties文件 过程如下 

1.新建这个文件 
2.打开jdk安装目录下的native2ascii应用程序 路径一般类似 作者的目录是 
O:\Program Files\Java\jdk1.6.0_10\bin\native2ascii 
在这个环境中,输入以下三行 分别按回车 

invalid.fieldvalue.age=年龄格式有问题或类型转化错误 
invalid.fieldvalue.birthday=出生日期格式有问题或类型转换错误 
invalid.fieldvalue.graduation=毕业日期格式有问题或类型转换错误 

会出现三行对应的Unicode代码 放入刚刚建立的属性文件即可: 
附图 

 







好了 现在是弄好了较简单的输入校验了 
预览一下: 
当填写如下表单时: 


 

完成后 

 

struts2的类型转换——Struts2第二讲 | Struts2输入校验2(框架效验)———stru ...


    本文转载自:http://javaweb.group.iteye.com/group/wiki/1508-input-validation-1---struts2-advanced

    共有 人打赏支持
    一别经年
    粉丝 17
    博文 173
    码字总数 58546
    作品 0
    西安
    程序员
    私信 提问
    .Java程序员从笨鸟到菜鸟之(四十一)细谈struts2(五)action基础知识和数据校验

    本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 一:首先看一下struts2中action的实现方式: 1.建立普通的pojo类:这种方式能够实现简单的action功能,但str...

    长平狐
    2012/11/12
    73
    0
    (总结)Struts1和Struts2的区别

    以前学的时候我们就是直接接触struts2,也没太关心这个struts1,正好我们公司用的是struts1,上网看过很多写这方面的博文的,写的也都很好、讲解的很详细、但是各有各的优点、我就总结了一下拿...

    IT妖姬
    2014/10/21
    0
    0
    Struts2学习(三):所有基本功能详解

    总结 struts2的常用东东: 一、验证,包括声明式(XML)和编程式验证(java),常用于后台验证 1.在action中复写 validate() 方法,此方法是通用验证 2.创建validateXxx()方法,此方法是专用于X...

    这个人很懒-啥都没写
    2013/08/22
    0
    1
    struts1-2,springMVC原理基本对比(单例,多例)-servlet与filter区别

    最近做项目用到了struts2,之前一直是用struts1和springMVC。感觉到了struts2从很大程度上和这两个还是有很大区别的,所以今天搜集了些资料,给他们做一下对比。 Struts1官方已经停止更新,现...

    tantexian
    2016/06/21
    322
    0
    Struts2与Struts1的对比

    Action 类: • Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。 • Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的...

    磊神Ray
    2011/08/26
    0
    0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    探索802.11ax

    802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

    linuxprobe16
    37分钟前
    2
    0
    使用linux将64G的SDCARD格式化为FAT32

    一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

    mbzhong
    今天
    4
    0
    深入理解Plasma(四):Plasma Cash

    这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

    HiBlock
    昨天
    1
    0
    命令参数的三大风格:Posix、BSD、GNU

    今天读到命令行中参数的风格有三大类,即Unix/Posix、BSD、GNU。分别有以下特征: Unix/Posix风格,即命令后的参数,可以分组,便必须以连字符开头,如ps -aux。 BSD风格,即命令后的参数,可...

    大别阿郎
    昨天
    2
    0
    PHP生成图片验证码

    PHP生成图片验证码 /** * PHP生成图片验证码 * Class VerifyImage */class VerifyImage{ // 生成随机字串 private $verifyCode; // 图片对象 private $image; /**...

    DrChenXX
    昨天
    1
    0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    返回顶部
    顶部