Struts2框架中需要再动作类中使用execute返回字符串的方式与在struts.xml文件中注册的结果组件的name相对应的方式来进行页面的跳转。

execute中的返回字符串:

1. 返回字符串中的值必须与配置在声明性架构中期望的结果的名字匹配

return "SUCCESS"

相应的:

/helloworld.jsp

2. struts2动作不必实现Action接口,任何对象都可以通过实现一个返回控制字符串的execute()方法来非正式地实现动作与框架之间的契约。

3.但是框架本身提供了Action接口,及其一个实现类,为什么要使用呢?先来看一下Action接口:(详见strtus2 api)

Action接口:

只有一个方法: execute()

和一些有用的String常量

e.g

/NameCollector.jsp

这里没有指定动作类,因为没有内容要处理。Struts2智能默认值会提供继承的默认动作实现。这个默认的动作有一个空的execute()方法,并自动返回Action接口的SUCCESS常量作为控制字符串,其他什么也不做。

注意,通常不直接实现Action接口,因为有了一个可以借用的实现——ActionSupport类

ActionSupport类

它实现了Action接口,并提供了诸如数据验证,错误消息本地化等功能。

1.基本验证

前提:包要扩展struts-default包,以继承默认拦截器栈

动作只要提供validate()方法,便可以检查JavaBean属性接收到的数据的合法性逻辑。若验证不通过,workflow拦截器会自动将其转到名字为“input”的结果页面。

ActionSupport实现了ValidationAware接口,从而提供了以下两个方法用来提供验证功能:

addFieldError(String fieldName, String errorMessage)

addActionError(String errorMessage)

通过这种方法,清楚的将验证逻辑和业务逻辑分离了。原因:workflow拦截器控制着验证逻辑的执行。

e.g

public class CheckDB extends ActionSupport{

execute(){

//business logic

return SUCCESS;

}

validate(){

//validate logic

}

}

struts.xml文件中的注册内容应有name为"input"的结果:

/dbresult.jsp

/namequery.jsp

2.使用资源包处理文本消息

addFieldError("name", "Name is required!");

传入字符串会给后期维护带来很大的不便,尤其是国际化。广为接受的事件是将这些消息集中放入外部可维护的资源包中,通常使用简单的属性文件实现。

ActionSupport实现了两个接口,它们写作提供了本地化消息文本的功能。

TextProvider 接口,提供了对这些消息的访问。

e.gunknown.properties

name.required=Username is required.

为了让实现TextProvider接口的ActionSupport能找到这个属性文件,我们只需要把它放在包含该动作类的相同java包中。

属性文件就绪后,就可以使用TextProvider提供的某个getText()方法来取得我们的消息。

上面的代码可改为:

addFieldError("name", getText(name.required));

这种分层使得消息文件更加可管理。改变消息意味着只编辑属性文件,源代码中有意义的关键字永远不需要改变。

LocaleProvider 接口,为本地化消息文本提供了一个基本的国际化解决方案

该接口只提供了一个方法 getLocale()

根据浏览器发送来的地域设置取得用户所在的地域。

http://www.dengb.com/Javabc/735864.htmlwww.dengb.comtruehttp://www.dengb.com/Javabc/735864.htmlTechArticleStruts2框架中需要再动作类中使用execute返回字符串的方式与在struts.xml文件中注册的结果组件的name相对应的方式来进行页面的跳转。 execute中...

java action接口,Struts2 Action接口与ActionSupport类相关推荐

  1. java actionsupport_struts2中的Action接口和Actionsupport接口各有什么作用

    展开全部 1.Struts 2的Action无须实现任何接口或继承任何类型,普通的POJO类就可以用32313133353236313431303231363533e78988e69d83313333 ...

  2. Struts2框架中的Action接口和ActionSupport类

    Struts2框架中的Action接口和ActionSupport类 1.Action接口 2.ActionSupport类 3.登录案例 3.1.页面 3.2.控制器 3.3.struts.xml配 ...

  3. Struts2学习日记(二)简单的Struts2登陆实现(Action继承ActionSupport类)

    功能实现:实现登陆功能,输入用户名和密码,如果用户名不为hello或者密码不为world,便返回登陆页并提示错误,否则显示登陆结果. 1.打开MyEclipse,创建一个webProject项目. 2 ...

  4. Struts2实现Preparable接口和【struts2】继承ActionSupport类

    Struts2实现Preparable接口 实现preparable接口,实现public void prepare() throws Exception 方法.当你访问某问action指定方法之前, ...

  5. JAVA框架Struts2 Action类

    一.Action书写方式: 接口地址:https://struts.apache.org/maven/struts2-core/apidocs/index.html Action类就是一个POJO类. ...

  6. 【Java】Struts2配置默认Action和配置Action的默认处理类

    配置默认Action <package> <default-action-ref name="index"/> <action name=" ...

  7. struts2 Action获取表单数据

    1.通过属性驱动式 1.首先设置 表单中的数据的name值 如:<input type="text" name="username" value=&quo ...

  8. 深入分析JavaWeb 44 -- Struts2开发核心之动作类Action

    一.Action动作类(一般用**Action结尾) struts2 的Action可以是POJO(Plain Old Java Object) 为了让用户开发的Action更加规范struts2提供 ...

  9. 深入分析JavaWeb Item44 -- Struts2开发核心之动作类Action

    一.Action动作类(一般用**Action结尾) struts2 的Action可以是POJO(Plain Old Java Object) 为了让用户开发的Action更加规范struts2提供 ...

  10. java参数action_Struts2之Action接收请求参数和拦截器详解

    技术分析之在Struts2框架中使用Servlet的API 1. 在Action类中也可以获取到Servlet一些常用的API 需求:提供JSP的表单页面的数据,在Action中使用Servlet的A ...

最新文章

  1. MYSQL出错代码列表
  2. 【深度学习】CVPR 2021 全部论文链接公布!最新1660篇论文合集!附下载链接
  3. java数组复制用for_在JavaScript中复制数组的最快方法 - 切片与'for'循环
  4. php等待参数跳转,Thinkphp页面跳转设置跳转等待时间的操作
  5. Java编程的逻辑 (34) - 随机
  6. 用nginx部署前端项目
  7. 迅雷beat下载为php,迅雷beta版本下载
  8. 查找bug的方法(随笔)
  9. 346雷达有多少tr组件_S波段+C波段,我军346舰载雷达独具匠心,堪称神来之笔!...
  10. Fastjson小于1.2.67 UnSerializable RCE分析研究
  11. 数字逻辑·逻辑代数【运算、函数】
  12. 阿里云服务(三)—对象存储OSS和块存储
  13. 华南理工计算机电路基础试题,2017年华南理工大学计算机电路基础.doc
  14. 离散数学——中国剩余定理(孙子定理)
  15. MySql安装学习记录
  16. css 背景效果_软件技术:我写CSS的常用套路(附demo的效果实现与源码)
  17. idea插件 之~~~~mybatisx(忍者鸟)、lombox(小辣椒)
  18. Java图片处理框架
  19. 好心情平台送给抑郁症患者20个正能量句子
  20. (三十二)保证金与基差风险

热门文章

  1. Python3 + Scrapy爬链家深圳成交房信息
  2. 3w服务器把信息组织成,HTML小白入坑日记~qwq
  3. 调度算法学习_MIN-MIN及MAX-MIN算法
  4. Windows配置域名
  5. [转]94个比付费软件更好的免费软件
  6. Attention机制原理
  7. ptp输出内容包含什么_04-PTP命令
  8. 【C++初阶学习】之 懒人神器——模版(概念)
  9. 上手TaoTronics家用暖风机体验
  10. oppo云服务器怎么卸载,oppo手机小布助手卸载方法_oppo手机小布助手怎么卸载-硬件之家...