Action类真正实现应用程序的事务逻辑,它们负责处理请求。在收到请求后,ActionServlet会为这个请求选择适当的Action

  1. 如果需要,创建Action的一个实例
  2. 调用Action的perform()方法

如果ActionServlet不能找到有效的映射,它会调用默认的Action类(在配置文件中定义)。如果找到了ActionServlet将适当的ActionMapping类转发给Action,这个Action使用ActionMapping找到本地转发,然后获得并设置ActionMapping属性。根据servlet的环境和被覆盖的perform()方法的签名,ActionServlet也会传送ServletRequest对象或HttpServletRequest对象。

所有Action类都扩展org.apache.struts.action.Action类,并且覆盖类中定义的某一个perform()方法。有两个perform()方法:

处理非HTTP(一般的)请求:

public ActionForward perform(ActionMapping action,AcionForm form,ServletRequest request,ServletResponse response)throws IOException,ServletException

处理HTTP请求:

public ActionForward perform(ActionMapping action,AcionForm form,HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException

Action类必须以“线程安全”的方式进行编程,因为控制器会令多个同时发生的请求共享同一个实例,相应的,在设计Action类时就需要注意以下几点:

  1. 不能使用实例或静态变量存储特定请求的状态信息,它们会在同一个操作中共享跨越请求的全局资源。
  2. 如果要访问的资源(如JavaBean和会话变量)在并行访问时需要进行保护,那么访问就要进行同步。

Action类的方法

除了perform()方法外,还有以下方法:

可以获得或设置与请求相关联的区域:

public Locale getLocale(HttpServletRequest request)public void setLocale(HttpServletRequest request,Locale locale)

为应用程序获得消息资源:

public MessageResources getResources()

检查用户是否点击表单上的“取消”键,如果是,将返回true:

public Boolean isCancelled(HttpServletRequest request)

当应用程序发生错误时,Action类能够使用下面方法存储错误信息:

public void saveErrors(HttpServletRequest request,ActionErrors errors)

ActionError实例被用来存储错误信息,这个方法在错误关键字下的请求属性列表中存储ActionError对象。通过使用在struts标记库中定义的自定义标记,JSP页能够显示这些错误信息,稍后我们就介绍。

转载于:https://www.cnblogs.com/zhangxiangguo/p/6539452.html

初次了解struts的action类相关推荐

  1. Struts2教程6:在Action类中获得HttpServletResponse对象的四种方法

    在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和request.而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得H ...

  2. JAVA框架Struts2 Action类

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

  3. Struts2中的action类

    Struts2中的action类 action类在Struts2中承担了Model(模型)的角色,主要用于处理业务逻辑并存放HTTP请求处理过程中各个变量的值. 在Struts2里面,Action充当 ...

  4. Struts2 - 在Action类中获得HttpServletResponse对象

    Struts2 - 在Action类中获得HttpServletResponse对象 在struts1.x Action类的execute方法中,有四个参数,其中两个就是 response和reque ...

  5. 在Action类中获得HttpServletResponse对象的四种方法

    Struts2:在Action类中获得HttpServletResponse对象的四种方法 在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和req ...

  6. jsp页面,使用Struts2标签,传递和获取Action类里的参数,注意事项。s:a actions:iterators:paramognl表达式...

    在编写SSH2项目的时候,除了使用<s:form>表单标签向Action类跳转并传递参数之外,很更多时候还需要用到<s:a action="XXX.action" ...

  7. struts中action名称反复导致的神秘事件

    近期由于项目需求变更.须要本人对当中的某个业务功能进行改动.本人依照前台页面找action,依据action找代码的逻辑进行了改动(公司项目是ssh框架,struts配置全部是通过注解的方式进行.配置 ...

  8. struts一个action处理多个方法

    2019独角兽企业重金招聘Python工程师标准>>> 在前面的介绍中,我们了解了struts的action是实现execute()方法来完成业务逻辑的,可是,在实际开发中,让一个业 ...

  9. Struts2中XXX.Action类中方法的访问(三种方式)

    第一种:使用action标签的method属性(常规方法) Action类: package cn.tedu.web;import org.springframework.context.annota ...

  10. ssh备考-05Struts2 Action类下的重要API(原生Servlet的API、跳转配置、框架自身的数据封装、自定义拦截器)

    目录 一.Struts框架中如何使用原生Servlet的API 方法一.使用ActionContext类(完全解耦合的方式)(不好用,了解) demo1.jsp demo1Action.java    ...

最新文章

  1. [IE技巧] 查看HTTP 验证的用户名/密码
  2. Feature Pyramid Networks for Object Detection 论文笔记
  3. RabbitMQ消息可靠性分析和应用
  4. 怎样才能办理信用卡成功?
  5. network 网络带宽
  6. 东北大学物流工程考研经验贴
  7. Ubuntu18.04安装可视化软件Pyviz
  8. matlab 产生瑞利信道,瑞利信道仿真 matlab
  9. GSM UMTS E-UTRAN
  10. iOS企业ipa(299)证书制作、打包发布全流程(亲测,成功)
  11. 情感分类与朴素贝叶斯
  12. 清除PbootCms中的版权标识
  13. mysql某一列 赋值_[MySQL]定时把某一列值赋值给另一列
  14. 罗斯蒙特3051变送器维护
  15. Supercharger Keygen v1.3 + Keygen.linq (source code)-最简单好用
  16. 囚徒困境 matlab,matlab 囚徒困境(prisoner's dilemma)是指两个被捕 联合开发网 - pudn.com...
  17. 数据库系统日志的处理和作用
  18. 第一天:罗马房间记忆法(定桩记忆法)
  19. C#多线程加载控件界面卡死的解决
  20. 简评5G的室内分布频段

热门文章

  1. java spite截取_Java內功心法,行為型設計模式
  2. linux打开文件程序,linux – 获取打开特定文件的应用程序列表
  3. 4 pwm 什么时候采样电流_电机控制之电流采样及坐标变换第一部分
  4. 算法:874. 模拟行走机器人
  5. Charles 4.2 HTTPS抓包,乱码设置,证书信任,证书安装
  6. Google Code Review 如何编写代码评论
  7. 算法:回溯十 挑选卡片pickup cards
  8. SwiftUI实战三:创建List视图和导航Navigation
  9. python无法打开txt_在Python中打开“.txt”文件
  10. C++ 标准模板库STL