`

5_struts重要组件。

阅读更多

1 Action

    每个Action在第一次请求的时候初始化,而不是在ActonServlet启动读取配置的时候初始化。

    在web环境中,Actioni一旦被初始化就一直存在于容器中,也就是单例模式。如果处理不当会产生并发问题,所以一般不能在Action中保存用户状态。

    即使在<action>配置中多个path路径都指向同一个Action类,在内存中也只有一份Action,也就是说多个url访问到的Action都是同一个。

    如果要统计Action被访问的次数,则可以利用Action的单例性在Action中设置一个属性来进行统计。

    在Action的execute()方法中,一般需要返回一个ActionForward对象,但是如果返回null,这时,ActionServlet就不会做相应的转发处理,而只是简单的返回。所以如果业务逻辑很简单的话,也可以在execute()中直接调用response.getWriter(),得到PrintWriter对象,然后和普通servlet一样,用pw对象输出响应。

 

 

2 ActionMapping

    struts-config.xml中的<action>元素的配置都被一个org.apache.struts.action.ActionMapping实例所封装,包括path,name,forward属性。通过这个对象可以得到action对应的配置属性。

    这个实例对象也在Action.execute()方法中作为第一个参数传递,所以我们可以在execute()方法中得到这个Action的配置信息。

    ActionMapping中有一些set/get方法,但是在execute()中进行set时,会抛出异常,操作被frozen,set只能在struts框架中调用,初始化完成后就被禁止访问了。

 

 

3 ActionForward

    ActionForward类封装了在<forward>标签中的配置,可以通过逻辑名称name得到path指向的页面或者资源路径。其中的redirect属性如果为true则指明使用sendRedirect方法重定向,否则默认就是请求转发。还有个重要的属性,contextRelative 指明了path中的/是站点根目录context-relative还是应用根目录module-relative。默认是false指明是应用根目录。如果不写 / 的话,就必须是完全绝对路径,http://...这样加协议头的。

 

4 ActionForm

    生命周期:

 

  1. 检查Action的映射,确定存在对应的Action
  2. 根据name属性,查找formbean的配置信息
  3. 检查ActionForm的使用范围(request or session),确定在此范围下是否已经存在一个实例
  4. 如果已经存在了这样一个formbean,就重用,否则就重新构建一个formbean对象,并且置入相应的范围(request or session)中,scope属性需要在<action>元素中配置,如果不配置scope属性,默认是session!
  5. 调用reset方法
  6. 调用form的set方法为属性赋值
  7. 如果<action>元素中的validate属性为true,就调用formbean的validate方法进行校验
  8. 如果vallidate方法没有返回错误信息,ActionServlet就将formbean作为参数传给Action.execute()方法,否则返回input页面

注:ActionForm基类中的reset和validate方法都没有实际处理能力,需要自己来覆写来实现功能。

分享到:
评论

相关推荐

    Struts1-1API.rar_Struts1_API_struts 1 api_struts1_struts1 api_st

    Struts1 API是开发者在使用Struts1框架进行开发时的重要参考文档,提供了框架的核心组件、类库以及方法的详细说明。 在描述中提到的"使用Struts的中文API",这对于不熟悉英文文档的开发者来说是一个宝贵的资源,它...

    Validate_code.rar_struts valida_struts valida_struts validate_v

    在Struts框架中,`validate`是用于表单验证的重要组成部分,帮助开发者实现业务逻辑中的数据校验。 在`struts validate`中,验证过程通常分为两个阶段:客户端验证和服务器端验证。客户端验证通常使用JavaScript...

    [轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发

    总之,掌握Struts2、Spring3和Hibernate的整合应用是成为一名合格的Java EE开发者的重要技能,它可以帮助我们构建出高效、稳定、易于维护的企业级应用。在学习过程中,不仅要理解各个框架的基本概念,还要熟悉它们的...

    struts2-scan_struts2-scan_struts2scan_scan_struts2漏洞_

    Struts2漏洞通常涉及到框架的核心组件,例如OGNL(Object-Graph Navigation Language)表达式,这是一种强大的语言,允许在运行时动态地操作对象属性。2017年,一个名为CVE-2017-9805的重大漏洞被发现,它允许远程...

    news.rar_Struts+Oracle_oracle_struts新闻发布系统

    Struts和Oracle是两个在IT领域中非常重要的技术,它们被广泛应用于构建高效、稳定的Web应用程序,特别是企业级的应用。这个"news.rar_Struts+Oracle_oracle_struts新闻发布系统"项目,显然就是利用Struts框架与...

    K8_Struts2_EXP S2-045 20170310.rar

    由于OGNL(Object-Graph Navigation Language)是Struts2中用于表达式语言的组件,恶意用户可以通过OGNL表达式来绕过安全控制,注入并执行恶意代码。 该描述提到的"Struct 2 S2-045/046 漏洞检测工具"是一个用于...

    BBS.rar_bbs_bbs struts_struts BBS

    而Struts作为控制器,协调各个组件协同工作,实现了业务逻辑和视图的分离,提高了代码的可维护性和可扩展性。对于初学者来说,通过学习这个项目,可以深入理解Web开发的基本流程,掌握Struts框架的工作原理和配置...

    struts-api.rar_struts a_struts api

    这个“struts-api.rar”压缩包包含的是Struts框架的重要API文档,对于深入理解和使用Struts是至关重要的。在本文中,我们将详细探讨Struts API及其相关知识点。 1. **Struts架构**: Struts框架的核心设计是基于...

    vote_struts_DAO

    在实际的“vote_struts_DAO”项目中,文件名列表“vote_struts_DAO”可能包括以下组件: 1. Action类:如`VoteAction.java`,实现投票业务逻辑。 2. DAO接口:如`VoteDAO.java`,定义数据库操作接口。 3. DAO实现类...

    struts2-hibernate-spring-configfile.rar_struts2_struts2 spring

    配置文件是任何框架的核心,因为它们定义了框架的行为和组件间的通信方式。 首先,让我们从Struts2的配置开始。`struts-default.xml`通常包含默认的拦截器栈和全局结果,而`struts-plugin.xml`则用于定义Struts2和...

    dangdang_struts1

    在这个项目中,Struts1扮演着核心控制器的角色,协调各个组件协同工作,实现用户交互和数据处理。 首先,让我们了解Struts1的核心概念。Action类是Struts1的心脏,它接收来自客户端的请求,执行相应的业务逻辑,并...

    jar_struts2

    在`jar_struts2`这个压缩包中,可能包含以下重要知识点: 1. **Struts2核心组件**:Struts2的核心组件包括Action、Interceptor(拦截器)、Result(结果类型)和Plug-in(插件)。Action负责处理用户请求,...

    lib_struts-2.0.12

    描述中提到的“开发时必须包含的5个核心包”可能指的是以下关键组件: 1. **Struts2 Core**:这是Struts2的核心模块,包含了处理请求、执行Action、管理配置信息等功能。它实现了MVC架构,提供了Action、Result、...

    Struts-connectin-config.rar_struts_struts database

    在Struts框架中,数据库连接池是一个重要的组件,它能够有效地管理数据库连接,提高应用性能并降低资源消耗。本篇文章将深入探讨如何在Struts中配置数据库连接池,并介绍相关的关键知识点。 首先,数据库连接池是一...

    cn.zip_Exitservlet_Struts 管理系统

    此系统采用Struts框架和ExitServlet进行设计,下面我们将深入探讨这两个关键组件及其在系统中的作用。 首先,Struts是一个开源的Java Web应用框架,它遵循Model-View-Controller(MVC)设计模式,旨在简化开发过程...

    黑马程序员_struts2框架2016版视频_struts2_day01笔记

    **JavaEE设计模式** 对于理解Struts2的工作原理非常重要。其中,**前端控制器模式**是Struts2中最为关键的设计模式之一。这种模式的主要作用是集中处理所有的HTTP请求,并将请求转发给合适的组件处理。 ### 2. ...

    ssh.rar_struts1_struts1.2 ssh

    Struts 1的核心组件包括ActionServlet、ActionForm、Action和Tiles等。ActionServlet作为控制器,负责转发请求;ActionForm用于封装用户输入的数据;Action则处理业务逻辑,与模型交互;Tiles用于页面布局。 **...

    ognl.rar_OGNL API_struts2 ognl api_struts2帮助文档

    OGNL(Object-Graph Navigation Language)是Struts2框架中重要的表达式语言,它用于在应用程序中进行数据绑定和表达式求值。这篇文档将详细解释OGNL API及其在Struts2框架中的应用。 首先,OGNL是一个强大的、动态...

    Struts1_Struts2

    Struts1的核心是ActionServlet,这是一个实现了Servlet API的控制器组件,负责处理HTTP请求,并将请求转发给相应的业务逻辑组件(Action)。ActionForm对象用于收集用户输入的数据,而视图通常是JSP页面,通过JSP...

    struts2-core-2[1].0.11.zip_struts2 2.0.11.2_struts2 core

    标题中的"struts2-core-2[1].0.11.zip"指的是Struts2的核心库版本2.0.11.2,这是一个重要的组件,包含了处理请求、动作映射、结果渲染等核心功能。 在描述中提到的"有错误是难免的",这通常是指任何软件,包括开源...

Global site tag (gtag.js) - Google Analytics