struts2自带了一些标签库,运用好这些标签库会减少开发周期。

1.struts2标签库是在哪定义的?

struts2标签库定义在struts2-core-2.1.8.jar这个文件中,具体在这个jar的META-INF文件夹struts-tags.tld中。

2.如何引用struts2标签库?

使用<%@ taglib prefix="s" uri="/struts-tags" %>可以引用,其中uri是在struts-tags.tld中指定的。

重构昨天的应用:

<s:form action="login">
<s:textfield name="username" label="username"></s:textfield>
<s:password name="password" label="password"></s:password>
<s:submit label="submit"></s:submit>
</s:form>

其中注意的是form的action是login而不是html中的login.action,两者表示的意思一样。标签中的label属性值将显示在textfield前。

然后修改LoginAction类,让其继承ActionSupport类,以实现简单验证功能。昨天写的类是一个POJO,与struts2无关。而现在这个类的功能将更加强大。

override其方法validate,来实现验证功能。

内容:

if (null == this.getUsername() || "".equals(this.getUsername().trim())) {
this.addFieldError("username", "username required");
}
if (null == this.getPassword()|| "".equals(this.getPassword().trim())) {
this.addFieldError("password", "password required");
}
}

作用是来验证输入的内容是否为空(为什么不用JavaScript来验证???)

这里用到了一个小技巧,顺便提一下:

"".equals(this.getUsername().trim()) 

把常量放在前面可以避免当this.getUsername()为空时抛出异常

this.addFieldError("username", "username required"); 

可以在username上面显示出错信息(username required)

接着在struts2中指定信息没有输入完整时的处理方法,即在struts.xml中进行配置

<result name="input">/login2.jsp</result> 

在validate方法中只做一些简单的验证,判断是否为空等,不会涉及业务逻辑。

程序流程:

在login.jsp中输入数据提交后,struts2拦截用户请求,然后发送请求到LoginAction处理请求,LoginAction调用validate方法进行验证。

若不通过,则交给struts2再次转发给login.jsp处理,并显示出相应的出错信息,由(this.addFieldError())方法指定。

若通过,则进行相应的set操作,结束后调用execute方法,返回相应的处理结果到struts2。

然后struts2根据返回的结果转发到相应的页面(result.jsp)

下次将介绍一下struts2的局部类型转换。

原地址:http://blog.csdn.net/fanghao16/article/details/4710592

struts2学习笔记(2)——简单的输入验证以及标签库的运用的更多相关文章

  1. struts2学习笔记(7)---数据验证之validateXxx()方法

    validateXxx()方法 上一篇文章写了使用Action的validate()方法,validate()仅仅能对action的所有方法进行验证.而要实现对action中特定的方法进行验证,就须要 ...

  2. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  3. Struts2 学习笔记(概述)

    Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...

  4. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  5. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  6. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  7. JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  8. matlab学习笔记5--低级文件输入输出函数

    一起来学matlab-matlab学习笔记5 低级文件输入输出函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢张 ...

  9. Html学习笔记(二) 简单标签

    标签的重点 标签的用途 标签在浏览器中的默认样式 <body>标签: 在网页上显示的内容 <p>标签: 添加段落 <hx>标签: 添加标题 标签一共有6个,h1.h ...

随机推荐

  1. CSS3/jQuery创意盒子动画菜单

    作为前端开发者,各种各样的jQuery菜单见过不少,这款jQuery/CSS3菜单却是别具一格,菜单项嵌入到九宫格中,像小盒子一样,加上温馨的背景,菜单整体外观十分可爱.点击菜单项,盒子就会展开,展示 ...

  2. C#函数运行超时则终止执行(任意参数类型及参数个数通用版)

    /// <summary> /// 控制函数执行时间,超时返回null不继续执行 /// 调用方法 /// FuncTimeout.EventNeedRun action = delega ...

  3. ASP.Net网站部署失败

    部署站点时候,出现如下错误 “/”应用程序中的服务器错误. ---------------------------------------------------------------------- ...

  4. JAVA多线程学习1

    一.进程与线程 线程是指进程内的一个执行单元(可理解为程序内的一条执行路径),也是进程内的可调度实体. 线程与进程的区别: 1.线程是进程的一个执行单元,一个进程可以拥有多个线程,线程之间共享进程的地 ...

  5. 虚拟局域网VLAN

    6.5.1配置路由器广域网端口的PPP封装 (1)配置路由器A: Router>enable Router#config Router_config#hostname Router-A Rout ...

  6. 打包python脚本为exe可执行文件-pyinstaller和cx_freeze示例

    本文介绍使用cx_freeze和pyinstaller打包python脚本为exe文件 cx_freeze的使用实例 需要使用到的文件wxapp.py, read_file.py, setup.py ...

  7. Oracle定义常量和变量

    1.定义变量 变量指的就是可变化的量,程序运行过程中可以随时改变其数据存储结构 标准语法格式:<变量名><数据类型>[(长度):=<初始值>] 示例: declar ...

  8. java项目中读取src目录下的文件

    private void getUser(String tmpfile){ Properties props = new Properties(); props.load(DbTask.class.g ...

  9. poll实现

    struct pollfd {    int fd;     //当前描述符    short events;     //进程关心的该描述符的事件    short revents;    //返回 ...

  10. xcode 编译错误的 之 头文件 包含成.m了

    duplicate symbol _OBJC_CLASS_$_AutoTableViewViewController in: /Users/apple/Library/Developer/Xcode/ ...