zoukankan      html  css  js  c++  java
  • 初次了解struts的action类

    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页能够显示这些错误信息,稍后我们就介绍。

  • 相关阅读:
    ECharts之柱状图 饼状图 折线图
    Vue自定义指令(directive)
    HDU 1231 最大连续子序列
    POJ 2533 Longest Ordered Subsequence
    HDU 1163 Eddy's digital Roots
    HDU 2317 Nasty Hacks
    HDU 2571 命运
    HDU 4224 Enumeration?
    HDU 1257 最少拦截系统
    HDU 2740 Root of the Problem
  • 原文地址:https://www.cnblogs.com/zhangxiangguo/p/6539452.html
Copyright © 2011-2022 走看看