首页 存档 技术 查看内容

Java程序员从笨鸟到菜鸟之(四十一)细谈struts2(五)action基础知识和数据校验

2018-3-30 13:00 |来自: 互联网 353 0

摘要: 【新朋友】点击标题下面(↑)蓝色字“Java那些事”关注 【老朋友】点击右上角,转发或分享本页面内容 一:首先看一下struts2中action的实现方式: 1.建立普通的pojo类:这种方式能够实现简单的action功能,但struts ...

【新朋友】点击标题下面(↑)蓝色字“Java那些事”关注

【老朋友】点击右上角,转发或分享本页面内容

一:首先看一下struts2action的实现方式:

1.建立普通的pojo类:这种方式能够实现简单的action功能,但struts2内自带的一些验证和其他功能不能够实现

2.继承ActionSupport类实现action,因为ActionSupport已经实现了Action接口,还实现了Validateable接口,提供了数据校验功能。通过继承该ActionSupport类,可以简化Struts 2Action开发。

3.实现action接口,这个接口里面定义了一些action所要实现的功能的标准,但验证等功能没有,所以一般还是继承actionsupport来实现action

Action Actionsupport 的区别:

当我们在写action的时候,可以实现Action接口,也可以继承Actionsupport这个类.到底这两个有什么区别呢?

Action接口有:

[java] view plaincopyprint?

  1. public static final java.lang.String SUCCESS = "success";

  2. public static final java.lang.String NONE = "none";

  3. public static final java.lang.String ERROR = "error";

  4. public static final java.lang.String INPUT = "input";

  5. public static final java.lang.String LOGIN = "login";

  6. public abstract java.lang.String execute() throws java.lang.Exception;


而Actionsupport这个工具类在实现了Action接口的基础上还定义了一个validate()方法,重写该方法,它会在execute()方法之前执行,如校验失败,会转入input处,必须在配置该Action时配置input属性。

另外,Actionsupport还提供了一个getText(String key)方法还实现国际化,该方法从资源文件上获取国际化信息.

这样在自定义标签时可以定义一个变量为new actionsupport对象实现国际化。

ActionSupport类的作用

struts2不要求我们自己设计的action类继承任何的struts基类或struts接口,但是我们为了方便实现我们自己的action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重写此类里的public String execute() throws Exception方法。因为此类中实现了很多的实用借口,提供了很多默认方法,这些默认方法包括国际化信息的方法、默认的处理用户请求的方法等,这样可以大大的简化Acion的开发。

Struts2中通常直接使用Action来封装HTTP请求参数,因此,Action类里还应该包含与请求参数对应的属性,并且为属性提供对应的gettersetter方法。

二.action数据校验

在上面应用中,即使浏览者输入任何用户名、密码,系统也会处理用户请求。在我们整个HelloWorld应用中,这种空用户名、空密码的情况不会引起太大的问题。但如果数据需要保存到数据库,或者需要根据用户输入的用户名、密码查询数据,这些空输入可能引起异常。为了避免用户的输入引起底层异常,通常我们会在进行业务逻辑操作之前,先执行基本的数据校验。

Action数据校验功能是struts2给我们提供的一个服务器端简单验证的功能,这个功能使我们简化了一些没必要的代码。下面看一下具体实现:

1.继承ActionSupport
ActionSupport类是一个工具类,它已经实现了Action接口。除此之外,它还实现了Validateable接口,提供了数据校验功能。通过继承该ActionSupport类,可以简化Struts 2Action开在Validatable接口中定义了一个validate()方法,重写该方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldErrors域中,然后通过OGNL表达式负责输出为了让Struts 2增加输入数据校验的功能,改写程序中的LoginAction,增加重写validate方法。下面看一下具体代码实现:

[java] view plaincopyprint?

  1. package com.bzu.action;

  2. import com.opensymphony.xwork2.ActionSupport;

  3. public class LoginAction extends ActionSupport {

  4. private String username;

  5. private String password;

  6. public String getUsername() {

  7. return username;

  8. }

  9. public void setUsername(String username) {

  10. this.username = username;

  11. }

  12. public String getPassword() {

  13. return password;

  14. }

  15. public void setPassword(String password) {

  16. this.password = password;

  17. }

  18. public void validate() {

  19. if("".equals(username))

  20. this.addActionError("soory,the username can't blank");

  21. if("".equals(password))

  22. this.addActionError("soory,the password can't blank");

  23. }

  24. public String execute(){

  25. if(username.equals("admin")

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部