精华内容
下载资源
问答
  • Struts框架

    2019-09-16 11:09:00
    Struts框架 定义:Struts是流行和成熟的基于MVC设计模式的Web应用程序框架。 Model1 = JSP JavaBean Model2 = JSP Servlet JavaBean Struts中action就是Controller,Struts2是webwork的升级同时吸收两者的优势,...

    Struts框架

    定义:Struts是流行和成熟的基于MVC设计模式的Web应用程序框架。

    Model1 = JSP JavaBean

    Model2 = JSP Servlet JavaBean

    Struts中action就是Controller,Struts2是webwork的升级同时吸收两者的优势,不是一个全新的框架。

    Struts2:servlet2.4 jsp2.0 java5(注解)

    搭建struts2的步骤:

    Jar -> 创建web项目 -> 完成配置 -> 创建action并测试

    核心配置文件:web.xml struts.xml struts.properties

    Struts2不再与Servlet API耦合,无需传入HttpServletRequest和HttpServletResponse

    struts2提供了3种方式访问Servlet API

    1. ActionContext
    2. 实现Aware接口
    3. ServletActionContext

    动态方法调用

    1.指定method属性 2.感叹号方式 3.通配符方式 -> 解决action太多的问题

    多个配置文件的方式 方法:include包含的方式

    吧默认Action - 解决无法匹配的Action

    后缀名 struts.action.extension

    接收参数 1.使用Action的属性接收 2.使用DomainModel接收 3.实现ModelDriven接口

    代码地址:struts

    【感谢您能看完,如果能够帮到您,麻烦点个赞~】

    更多经验技术欢迎前来共同学习交流:一点课堂-为梦想而奋斗的在线学习平台 http://www.yidiankt.com/

    ![关注公众号,回复“1”免费领取-【java核心知识点】]file

    QQ讨论群:616683098

    QQ:3184402434

    想要深入学习的同学们可以加我QQ一起学习讨论~还有全套资源分享,经验探讨,等你哦!在这里插入图片描述

    展开全文
  • struts框架

    千次阅读 2005-11-29 17:02:00
    Struts有三个重要的组成部分:Action BeanActionServletActionForm Bean 和定制的标记Action Bean和ActionServlet struts提供了一个单独的ActionServlet(org.apache.struts.action.ActionServlet)来处理所有的...
    Struts有三个重要的组成部分:
    Action Bean
    ActionServlet
    ActionForm Bean 和定制的标记
    Action Bean和ActionServlet struts提供了一个单独的ActionServlet(org.apache.struts.action.ActionServlet)
    来处理所有的浏览器请求。这种类型的框架我们称为FrontController模式,每个浏览器
    的请求都有Struts的Action子类(org.apache.strtus.action.Action)的子类来处理
    每个浏览器的请求都被映射为strtus-config.xml文件内的一个Action子类。ActionServlet在
    初始化期间加载这些映射。要配置web项目使其把所有的浏览器请求都传递给ActionServlet
    请把所有以.do结尾的URI(例如:.do)都映射为web描述符中的ActionServlet。然后
    你可以在Strtus-config.xml文件中为各个请求URI(比如:/submit.do)提供实际的action映射。

    ActionForm Bean 浏览器请求时可带参数。当用户提交html表单后,Struts框架就把
    参数放在一个org.apache.struts.action.ActionFrom Bean中,你也可以用ActionFrom Bean
    把缺省值预先植入一个表单,这些缺省值可从数据库或其他的后端系统获的。如果用户在表单中输入了
    不正确的值,ActionForm可以进行验证。你可以用以前的输入重新显示表单。

    ActionServlet和Action类是MVC模型中控制器的核心,改控制器负责处理用户的请求,把请求路由到业务
    逻辑,并选择视图来响应用户。表单提交给submit.do后,Struts ActionServlet会
    根据struts-config.xml文件中的配置选择正确的action类来用。

    Struts Action 子类负责处理用户数据。在这个示例中,创建一个名为 SubmitAction 的 Struts
    Action 子类。它由诸如读和处理表单数据之类的操作组成。每一个表单都和该 Struts
    ActionForm 子类的一个实例关联在一起。请创建这个继承 ActionForm 的表单类。
    SubmitForm 是 ActionForm 的一个子类,它是用域的 getter 和 setter 方法创建的。getter
    和 setter 方法在 ActionForm 子类中都是必须有的。

    SubmitForm 怎样发挥作用? 每一个 Struts Action 类都必须和一个 Struts ActionForm 类
    关联在一起。您可以在 WebSphere Studio 中的 struts-config.xml 编辑器的 FormBean 页面
    中定义 SubmitForm 类。然后可以把它与 struts-config.xml 文件中的 SubmitAction 映射关
    联在一起。一个请求提交后,ActionServlet 把从 Web 浏览器上的实际表单中得到的数据自
    动植入 SubmitForm。在 SubmitAction 类中,用 SubmitForm f = (SubmitForm) form 来访问
    表单数据。

    struts框架对于MVC的实现:
    控制器-->
    Controller:控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响
    应结果送回到客户端。在Struts 中Controller 功能由图中ActionServlet 和ActionMapping 对
    象构成:核心是一个Servlet 类型的对象ActionServlet,它用来接受客户端的请求。
    ActionServlet 包括一组基于配置的ActionMapping 对象,每个ActionMapping 对象实现了一
    个请求到一个具体的Model 部分中Action 处理器对象之间的映射。
    模型-->
    Model: MVC 系统中的Model 部分从概念上可以分为两类――系统的内部状态,和改
    变系统状态的动作。Struts 为Model 部分提供了Action 和ActionForm 对象:所
    有的Action 处理器对象都是开发者从Struts 的Action 类派生的子类。Action
    处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的
    View 组件以产生响应。Struts 提供的ActionForm 组件对象,它可以通过定义属
    性描述客户端表单数据。开发者可以从它派生子类对象,利用它和Struts 提供的自定
    义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action 处理器对象可
    以直接对它进行读写,而不再需要和request、response 对象进行数据交互。通过
    ActionForm 组件对象实现了对View 和Model 之间交互的支持。Struts 通常建议
    使用一组JavaBean 表示系统的内部状态,根据系统的复杂度也可以使用像Entity
    EJB和 Session EJB 等组件来实现系统状态。Struts 建议在实现时把"做什么"
    (Action)和"如何做"(业务逻辑)分离。这样可以实现业务逻辑的重用。
    视图-->
    View:Struts 应用中的View 部分是通过JSP 技术实现的。Struts 提供了自定义
    的标记库可以使用,通过这些自定义标记可以非常好地和系统的Model 部分交互,通
    过使用这些自定义标记创建的JSP 表单,可以实现和Model 部分中的ActionForm
    的映射,完成对用户数据的封装,同时这些自定义标记还提供了像模板定制等多种显
    示功能。

    Struts 框架的处理流程清楚的体现了MVC 系统的特点,Struts Controller ActionServlet
    处理客户请求,利用配置的ActionMapping 对象把请求映射到Action 处理器对象
    进行处理。Action 处理对象访问ActionForm 中的数据,处理和响应客户请求,它
    还调用后台的Bean 组件,这些组件封装了具体的业务逻辑。Action 处理器对象根
    据处理结果通知Controller,Controller 进行下一步的处理。

    struts的开发流程:
    3.利用Struts 框架开发MVC 系统要做的工作
    由于Struts 已经为我们提供了一个非常好的MVC 框架,我们利用Struts 开发MVC
    系统时可以大大加快开发的速度。在开发时可以采用的一个开发流程如下:
    收集和定义应用需求。
    基于数据采集和显示的原则定义和开发"屏幕显示"需求 。
    为每一个"屏幕显示"定义访问路径。
    定义ActionMappings 建立到应用业务逻辑之间的联系。
    开发满足"屏幕显示"需求的所有支持对象。
    基于每一个"屏幕显示"需求提供的数据属性来创建对应的ActionForm 对象
    开发被ActionMapping 调用的Action 对象。
    开发应用业务逻辑对象 (Bean,EJB,等等)。
    对应ActionMapping 设计的流程创建JSP 页面。
    建立合适的配置文件struts-config.xml , web.xml。
    开发/测试/部署
    具体在使用Struts 框架时,对应各个部分的开发工作主要包括:
    Model 部分:采用JavaBean 和EJB 组件,设计和实现系统的业务逻辑。根据不同的
    请求从Action 派生具体Action 处理对象。完成"做什么"的任务来调用由Bean 构成
    的业务组件。创建由ActionForm 的派生类实现对客户端表单数据的封装。
    Controller 部分:Struts 为我们提供了核心控制部分的实现。我们只需要配置
    ActionMapping
    对象
    View 部分:为了使用Model 中的ActionForm 对象,我们必须用Struts 提供的自
    定义标记创建HTML 表单。利用Struts 提供的自定义标记库编写用户界面把应用逻辑
    和显示逻辑分离。Struts 框架通过这些自定义标记建立了View 和Model 之间的联
    系。Struts 的自定义标记还提供了很多定制页面的功能。

    写struts组件时应注意的一些原则:
    当你在写你的ActionForm beans 时,记住以下的原则:

    ActionForm 接口本身不需要特殊的实现方法。它是用来标识这些特定的beans 在整
    个体系结构中的作用。典型情况下,一个ActionForm bean 只包括属性的get 方法
    和set 方法,没有商业逻辑。
    通常在一个ActionForm bean 中只有很少的输入验证逻辑。这样的beans 存在的主
    要理由是保存用户为相关的表单所输入的大部分近期值 -- 甚至在错误被检测到时--
    这样同样的页面可以被重建,伴随有一组出错信息,这样用户仅仅需要纠正错误的字段。
    用户输入的验证应该在 Action 类中执行(如果是很简单的话),或者在适当的商业
    逻辑beans 中执行。为每个表单中出现的字段定义一个属性(用相关的getXxx()和
    setXxx()方法)。字段名和属性名必须按照JavaBeans 的约定相匹配。例如,一个
    名为 username 的输入字段将引起setUsername() 方法被调用。
    你应该注意一个“表单”在这里讨论时的意义并不必须对应于用户界面中的一个单独的
    JSP页面。在很多应用程序中一个“表单”(从用户的观点)延伸至多个页面也是很平常
    的。想想看,例如,通常在安装新的应用程序时使用的导航安装程序的用户界面。
    Struts 鼓励你定义一个包含所有字段属性的单独的ActionForm bean。不管字段实
    际上是显示在哪个页面上。同样的,同一表单的不同的页面应该提交到相同的Action
    类。如果你遵照这个建议,在大多数情况下,页面设计者可以重新组织不同页面中的字
    段而不需要改变处理逻辑。

    2.4 系统状态Beans
    系统的实际状态通常表示为一组一个或多个的JavaBeans 类,其属性定义当前状态。例如,
    一个购物车系统包括一个表示购物车的bean,这个bean 为每个单独的购物者维护,这个bean
    中包括(在其它事物之中)一组购物者当前选择购买的项目。分别地,系统也包括保存用户
    信息(包括他们的信用卡和送货地址)、可获得项目的目录和它们当前库存水平的不同的
    beans。
    对于小规模的系统,或者对于不需要长时间保存的状态信息,一组系统状态beans 可以包含
    所有系统曾经经历的特定细节的信息。或者经常是,系统状态beans 表示永久保存在一些外
    部数据库中的信息(例如CustomerBean 对象对应于表 CUSTOMERS 中的特定的一行),在
    需要时从服务器的内存中创建或清除。在大规模应用程序中,Entity EJBs 也用于这种用途。
    2.5 商业逻辑Beans
    你应该把你的应用程序中的功能逻辑封装成对为此目的设计的JavaBeans 的方法调用。这些
    方法可以是用于系统状态beans 的相同的类的一部分,或者可以是在专门执行商业逻辑的独
    立的类中。在后一种情况下,你通常需要将系统状态beans 传递给这些方法作为参数处理。
    为了代码最大的可重用性,商业逻辑beans 应该被设计和实现为它们不知道自己被执行于
    web 应用环境中。如果你发现在你的bean 中你必须import 一个 javax.servlet.* 类,你就把
    这个商业逻辑捆绑在了web 应用环境中。考虑重新组织事物使你的 Action 类(Controller
    任务的一部分,在下面描述)翻译所有从HTTP 请求中请求被处理为对你的商业逻辑beans
    属性set 方法调用的信息,然后可以发出一个对 execute() 的调用。这样的一个商业逻辑类
    可以被重用在除它们最初被构造的web 应用程序以外的环境中。
    依赖于你的应用程序的复杂度和范围,商业逻辑beans 可以是与作为参数传递的系统状态
    beans 交互作用的普通的JavaBeans,或者使用JDBC 调用访问数据库的普通的JavaBeans。
    而对于较大的应用程序,这些beans 经常是有状态或无状态的EJBs。
    展开全文
  • Struts框架面试题

    千次阅读 2016-08-18 10:19:02
    1. 简述Struts框架的初始化流程。 答案: 对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化控制器ActionServlet ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到...
    1. 简述Struts框架的初始化流程。

    答案:

    对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化控制器ActionServlet

    ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到ActionMappings对象中。

    在Struts framework中, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。

    其中,Action扮演了真正的控制逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。

    2. 简述Struts框架响应客户请求的工作流程

    答案:

    1.  检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。

    2.  如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。

    3.  根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。

    4.  如果ActionForm的validate()方法返回null或返回一个不包含ActionMessge的ActionErrors对象,就表示表单验证成功。

    5.  ActionServlet根据AtionMapping实例包含的映射信息决定将请求转发给哪个Action。如果应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。

    6.  Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。

    7.  ActionForward对象指向的JSP组件生成动态页面,返回给客户。

    对于以上流程的步骤(4),如果ActionForm的validate()方法返回一个包含一个或多个ActionError的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含客户提交表单的JSP组件。在这种情况下,不会再创建Action对象并调用Action的execute方法。

     

    3 Struts框架的数据验证可分为几种类型?

    答案:

    表单验证(由ActionForm Bean处理):如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误

    业务逻辑验证(由Action处理):如果用户在表单中输入的姓名为“Monster”,按照本应用的业务规则,不允许向“Monster”打招呼,因此将生成业务逻辑错误。

    4 简述Form Bean的表单验证流程。

    答案:

    1、当用户提交了HTML表单,Struts框架自动把表单数据组装到ActionForm Bean中。

    2、接下来Struts框架会调用ActionForm Bean的validate()方法进行表单验证。

    3、如果validate()方法返回的ActionErrors 对象为null,或者不包含任何ActionMessage对象,就表示没有错误,数据验证通过。

    4、如果ActionErrors中包含ActionMessage对象,就表示发生了验证错误,Struts框架会把ActionErrors对象保存到request范围内,然后把请求转发到恰当的视图组件,视图组件通过标签把request范围内的ActionErrors对象中包含的错误消息显示出来,提示用户修改错误。

    5在struts配置文件中action元素包含哪些属性和子元素?

    答案:

    path属性:指定请求访问Action的路径

    type属性:指定Action的完整类名

    name属性:指定需要传递给Action的ActionForm Bean

    scope属性:指定ActionForm Bean的存放范围

    validate属性:指定是否执行表单验证

    input属性:指定当表单验证失败时的转发路径。

    元素还包含一个子元素,它定义了一个请求转发路径。

    6. 简单叙述ActionForm Bean的作用

    答案:

    1、ActionForm Bean也是一种JavaBean,除了具有一些JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。

    2、Struts框架利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。

    3、Struts框架把View组件接受到的用户输入的表单数据保存在ActionForm Bean中,把它传递给Controller组件,Controller组件可以对ActionForm Bean中的数据进行修改JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。

    7 .叙述ActionForm执行步骤

    答案:

    (1)检查Action的映射,确定Action中已经配置了对ActionForm的映射

    (2)根据name属性,查找form bean的配置信息

    (3)检查Action的formbean的使用范围,确定在此范围下,是否已经有此form bean的实例。

    (4)假如当前范围下,已经存在了此form bean的实例,而是对当前请求来说,是同一种类型的话,那么就重用。

    (5)否则,就重新构建一个form bean的实例

    (6)form bean的reset()方法备调用

    (7)调用对应的setter方法,对状态属性赋值

    (8)如果validatede的属性被设置为true,那么就调用form bean的validate()方法。

    (9)如果validate()方法没有返回任何错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行。

    8.在下面的标签中哪些是struts标签

    A、

    B、

    C、

    D、

    答案:A B C

    9、FormBean的作用

    答:FormBean是一种JAVABean,除了具有JAVABean的常规方法,还包含一些特殊方法,用于验证表单数据,以及将其属性重新设置为默认值。 FormBean用来进行View组件和Controller组件之间表单数据的传递。View组件接收到用户输入的表单数据,保存在FormBean中,把它传递给Controller组件,Controller组件可以对FormBean中的数据进行修改。

    10、Forward与Global-Forward的区别

    答:Forward是根据Action return的值找到对应的JSP页。当多个Action共同return同一个值时,可将这个Forward元素写在Global-Forward中。

    11.问题:在Struts应用的视图中包含哪些组件?

    选项:

    (A) JSP

    (B) Servlet

    (C) ActionServlet

    (D) Action

    (E) 代表业务逻辑或业务数据的JavaBean

    (F) EJB

    (G) 客户化标签

    答案:A,G

    12问题:在Struts应用的控制器中包含哪些组件?

    选项:

    (A) JSP

    (B) Servlet

    (C) ActionServlet

    (D) Action

    (E)代表业务逻辑或业务数据的JavaBean

    (F) EJB

    (G) 客户化标签

    答案:B,C,D

    13.在struts配置文件中action元素包含哪些属性和子元素?

    答案:

    path属性:指定请求访问Action的路径

    type属性:指定Action的完整类名

    name属性:指定需要传递给Action的ActionForm Bean

    scope属性:指定ActionForm Bean的存放范围

    validate属性:指定是否执行表单验证

    input属性:指定当表单验证失败时的转发路径。

    元素还包含一个子元素,它定义了一个请求转发路径。

    14. 问题:在Struts应用的模型中包含哪些组件?     

    选项:

    (A) JSP

    (B) Servlet

    (C) ActionServlet

    (D) Action

    (E) 代表业务逻辑或业务数据的JavaBean

    (F) EJB

    (G) 客户化标签

    答案:F

    15. 问题: struts框架中,关于FormBean,下列说法正确的是:       
    A FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action
    B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证
    C 用户每次提交表单,都会产生一个新的FormBean实例
    D 动态FormBean不能进行验证操作

    答案:A

    16. 问题:struts框架中,在一个Action的配置信息中,name属性指的是:   
    A 当前action实例的名字
    B 当前action所在的类的名字
    C 该Action中调用的FormBean的实例的名字
    D 该Action中调用的FormBean的类的所在包名

    答案:C

    17. 问题:关于struts项目中的类与MVC模式的对应关系,说法错误的是?
       A Jsp文件实现视图View的功能
    B ActionServlet这一个类是整个struts项目的控制器
    C ActionForm、Action都属于Model部分
    D 一个struts项目只能有一个Servlet

    答案:D

    18、问题:以下哪些说法是正确的?

    选项:(A)每个HTTP请求对应一个单独的ActionServlet实例

    (B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。

    (C)每个子应用对应一个单独的RequestProcessor实例

    (D)每个子应用对应一个单独的web.xml文件

    答案:C

    19 ActionForm Bean对象是由谁创建的?

    选项:

    (A) 标签处理类

    (B) ActionServlet

    (C) RequestProcessor

    (D) Action

     

    答案:C

    20、struts框架,错误的是?
    A Struts中无法完成上传功能
    B Struts框架基于MVC模式
    C Struts框架容易引起流程复杂、结构不清晰等问题
    D Struts可以有效地降低项目的类文件数目

    答案:C

    21、问题:以下代码定义了一个变量,如何输出这个变量的值?



    选项:(A)

    (B) 

    (C)

    (D)  

    答案: A,D

    22、问题:把静态文本放在Resource Bundle中,而不是直接在JSP文件中包含这些静态文本,有什么优点?答案: 提高可维护性  提高可重用性  支持国际化

    23在struts配置文件中action元素包含哪些属性和子元素?

    答案:

    path属性:指定请求访问Action的路径

    type属性:指定Action的完整类名

    name属性:指定需要传递给Action的ActionForm Bean

    scope属性:指定ActionForm Bean的存放范围

    validate属性:指定是否执行表单验证

    input属性:指定当表单验证失败时的转发路径。

    元素还包含一个子元素,它定义了一个请求转发路径。

    24. 问题:关于struts项目中的类与MVC模式的对应关系,说法错误的是?
       A Jsp文件实现视图View的功能
    B ActionServlet这一个类是整个struts项目的控制器
    C ActionForm、Action都属于Model部分
    D 一个struts项目只能有一个Servlet

    答案:D

    Struts框架面试题

    展开全文
  • Struts框架的工作原理

    千次阅读 2015-07-09 15:43:55
    在J2EE企业级系统开发中,Struts框架占据了很重要的地位,熟练使用Struts框架可以大大地缩短开发周期,提高开发效率。本文将通过具体的代码实例和流程图对Struts框架的工作原理进行论述。 关键词:J2EE,Struts,...
    在J2EE企业级系统开发中,Struts框架占据了很重要的地位,熟练使用Struts框架可以大大地缩短开发周期,提高开发效率。本文将通过具体的代码实例和流程图对Struts框架的工作原理进行论述。
    关键词:J2EE,Struts,系统开发框架

      在J2EE企业级系统开发中,Struts框架占据了很重要的地位,熟练使用Struts框架可以大大地缩短开发周期,提高开发效率。本文将通过具体的代码实例和流程图对Struts框架的工作原理进行论述。
      关键词
      J2EE Struts 系统开发框架
      引言
      学习Struts框架普遍会遇到的问题是搞不清它的具体工作原理。整个Struts应用是一个分工明确的有机整体,各个组件各司其职,在控制中心的统一指挥下,按部就班地完成各个部门的处理工作。
      1.接收HTTP请求转到Struts控制器
      
      图1 :Struts工作原理流程
      在如图1所示的工作原理流程中描述了客户端浏览器从发出请求到获得响应的整个处理过程:
      从图1中可以看出,服务器首先对接受到的客户端请求进行过滤:属于Struts处理范围的请求被自动提交给Struts控制器处理,否则将按照传统的方式作出响应。具体说来,在Web应用程序中,凡是“*.do”格式的页面请求URI(Uniform Resource Indicator,统一资源指示符)均属于Struts处理范围,将由一个名为ActionServlet的Servlet负责处理,Struts实现这一控制逻辑并没有引入新的机制,来看Web应用下web.xml的一段代码:
      <servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      </servlet>
      <servlet-mapping>
      <servlet-name>action</servlet-name>
      <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      上述代码片段中使用标准格式配置了名为action的控制器Servlet,并在<servlet-mapping>元素中将所有“.do”结尾的页面请求URI映射到该Servlet。类型org.apache.struts.action.ActionServlet是Struts API 中定义的最重要组件类之一,该类继承了javax.servlet.http.HHttpServlet,因此其对象可以被作为 Servlet使用。
      2.FormBean分发请求
      控制器Servlet开始工作,它先使用一个制定的JavaBean来自动接收客户端请求中包含的表单数据,这在Struts配置文件struts-config.xml中可以找到,声明该JavaBean的代码为:
      <form-beans>
      <form-bean name=”loginForm” type="com.struts.from.UserForm" />
      </form-beans>
      为了实现属性的自动填充功能,该JavaBean必须是org.apache.struts.action.
      ActionForm类型(实际上是其子类)的对象。论文格式。指定使用该Bean的代码同样位于文件struts-config.xml中:
      <action-mappings>
      <action input="/login.jsp" name="loginForm"path="/login" scope="request" type="com.struts.action.LoginAction">
       </action>
      <action path=”/regist” forvard=”/regist.jsp”>
      </action-mapping>
      上述代码片段的作用是,使用<action-mapping>元素的子元素<action>来事先约定控制器(ActionServlet对象)分发HTTP请求的规则:
      (1)如果请求的页面URI是login.do,则使用先前说明过的loginForm来自动接收请求表单中的数据,并将该请求分发给一个LoginAction类型的实例来处理。该实例起到类似于java程序中事件监听器的作用,要求其所属类型必须是org.apache.struts.action.Action的子类。
      同样地,控制器Servlet对象有时也被称为“AectionServlet对象”。和使用JavaBean的情形类似,如果找不到该Action对象(第一次用到时),则系统会自动实例化一个。
      (2)如果请求的页面URI是reqist.do,则直接转向到“/regist.jsp”页面做出响应。此时对应的是图2-9中的一条“短路”流程“1->7->9”。论文格式。
      显然,如果需要还可以在<action-mapping>中定义更多的<action>子元素,来实现多分支效果。
      3.执行execute()方法
      Action对象接收到分发来的请求和先前由ActionServlet对象填充过的表单Bean(以及一些其他相关信息)后,会调用其execute()方法进行处理,execute()方法返回一个封装了下一目标页面信息的AoctionForvard对象给控制器ActionServlet。此时,mapping对象调用findForward()方法查找的是配置文件中<forward>元素所包含的映射信息:
      <global-forwards>
       <forwardname="failed" path="/error.jsp"/>
       <forwardname="successed" path="/right.jsp"/>
       </global-forwards>
      最终的效果是,身份验证通过则由ActionServlet将原客户端HTTP请求再次转发至/error.jsp页面,否则转发至right.jsp页面。论文格式。
      4.归纳Struts应用程序的基本原理
      (1)ActionServlet接收客户端HTTP请求,使用ActionForm自动接收请求表单信息,然后将请求分发给相应的Action对象。
      (2)Action对象调用execute()方法处理请求,然后返回ActionForward对象给ActionServlet
      (3)根据AoctionForward对象封装的信息,ActionForward将HTTP请求再次转发给其它页面,最终发送响应回客户端。

    参考文献
    1. 《Struts Kick Start》 作者: (美)比德尔 (美)特纳 
    译者: 孙勇 电子工业出版社
    2.《精通Struts:基于MVC的Java Web设计与开发》
    展开全文
  • struts框架jar包

    千次下载 热门讨论 2008-07-11 18:55:33
    logging-1.0.4.jar commons-validator-1.3.1.jar jstl-1.0.2.jar oro-2.0.8.jar standard-1.0.2.jar struts-core-1.3.8.jar struts-el-1.3.8.jar struts-extras-1.3.8.jar struts-faces-...
  • 搭建Struts框架

    千次阅读 2013-09-16 14:44:01
    搭建Struts框架 新建项目-> 点击项目右键-> MyEclipse-> Add Struts Capabilities选择Struts1.2 ->Finish 简单Struts1案例 index.jsp String path = request.getContextPath(); String basePath = ...
  • 从《深入浅出学习Struts框架(一):一个简单mvc模式代码示例开始》分析mvc和三层关系开始,引出这个mvc设计模式实例,到《深入浅出学习Struts框架(二):重构MVC模式代码中跳转路径和业务逻辑》抽象封装业务处理和...
  • Struts框架结构

    千次阅读 2010-04-26 13:26:00
    Struts框架结构  Struts是一个开放资源框架,包含了一系列相互的类、Servlet和JSP标记。Struts框架是基于MVC框架开发Web应用程序的具体应用。使用Struts框架可以将商业逻辑、控制和数据显示功能模块区分开来,...
  • Struts框架中怎么把来自模型层的数据存放到ActionForm中?思路怎样啊,怎样把模型层数据取出传向ActionForm?
  • 1、Struts框架学习

    2016-05-05 22:56:49
    Struts框架学习 a. 框架学习概述 SSH框架在mvc模式的的位置作用: 框架: 软件中的框架,是一种半成品; 我们项目开发需要在框架的基础上进行! 因为框架已经实现了一些功能,这样就可以提高开发效率!b. ...
  • 分步学习Struts(四) 自己写Struts框架

    千次阅读 多人点赞 2013-05-18 11:31:21
    上次我们已经讲解分析了一下Struts原理,这次我们来自己构建一个简单的Struts框架,通过构建Struts框架来了解Struts是如何实现MVC的。
  • struts2框架之struts框架介绍

    千次阅读 2016-04-05 18:40:27
    如今,在Java Web 学习中,框架的学习是很重要的一个环节,大家很熟悉的名词SSH,代表的就是Struts、Spring、Hibernate三大框架。SSH也是现如今企业主流的JavaEE开发的一套架构。那么什么是框架呢?我们又为什么要...
  • 扩展Struts框架

    千次阅读 2005-06-10 15:20:00
    扩展Struts框架一个好的软件框架应该具备可扩展特性。在Struts框架中提供了许多可扩展之处,不放将其称为可扩展点(Extension Point)。以下是Struts的扩展点:· 一般性扩展点:Struts插件(PlugIn)、扩展Struts...
  • Struts框架命名空间问题答疑

    万次阅读 2016-09-02 17:00:22
    Struts框架的namespace 1. Struts设计namespace用来做什么的 Struts官网上有一段话描述了namespace的含义: The namespace attribute subdivides action configurations into logical modules, each with its own...
  • 深入剖析Struts框架原理

    千次阅读 热门讨论 2013-10-03 20:27:43
    Struts是web层的框架,主要用于页面流转的控制,但是如果你不知道它的执行过程,你就无法很好的驾驭它。本文将从Struts框架的执行过程的讲解,来让你更好的掌握它,并举一反三,来学习其他框架的使用。
  • Struts框架之转发和重定向

    千次阅读 2015-07-07 13:27:01
    本文简要介绍了Struts框架的转发和重定向操作以及之间的区别。
  • 有关struts框架的问题

    2015-01-24 03:57:36
    用的是struts框架。运行程序后数据仍然未保存至数据库中。 2015-01-23 15:46:12,727 [localhost-startStop-1] DEBUG [org.springframework.web.context.support.XmlWebApplicationContext] - Bean factory for Root ...
  • Struts框架配置详解

    千次阅读 2011-01-13 17:44:00
    Struts是一个非常优秀的MVC框架,是应用最广泛的 Java Web 应用开发框架。 基于Struts开发的应用有3类组件构成:控制器组件、模型... Struts框架主要是基于配置文件的,它最主要的配置文件为 struts-config.xml (Strut
  • 如何学习Struts框架

    2008-07-19 12:27:00
    由于STRUTS框架在全球的广泛使用,学习它的人也非常之多,但是大部分人花费了太多不必要的时间和精力在一些不太重要的地方,导致学习代价高昂,成效也不是很好。我这里根据多年培训经验的总结,精心设计了一套学习...
  • Struts框架简介

    千次阅读 2008-06-11 23:47:00
    (一)个人整理Struts框架简介一,什么是框架? 所谓框架就是提供了一组统一的接口和编程方式的可以重用组件,同时我们可以在框架中扩充我们自己的特定逻辑。 二,MVC设计模式 将应用程序分为3个部分:模型 Model...
  • Struts框架可扩展性

    2009-06-17 22:12:00
    Struts框架可扩展性原文地址:http://liaoyixun.javaeye.com/blog/190523 Struts框架的优势在于允许开发人员根据实际需求来扩展框架,定制客户化的功能.不过作为一个优秀的软件框架是应该具备可扩展的功能的.在...
  • 由于Struts框架在全球的广泛使用,学习它的人也非常之多,但是大部分人花费了太多不必要的时间和精力在一些不太重要的地方,导致学习代价高昂,成效也不是很好。我这里根据多年培训经验的总结,精心设计了一套学习...
  • struts框架入门的第一小程序专门提供给新入门者写第一struts程序: java代码 /** * struts第一个程序hello world * 1.选择发布方式G:\higher * class\Struts\apache-tomcat8.0.36\conf\Catalina\localhost * 2....
  • java Struts框架原理

    千次阅读 2009-09-17 17:41:00
    Struts 框架原理 1.Struts 的流程 服务器启动后,根据 web.xml 加载 ActionServlet 读取 struts-config.xml 文件内容到内存。以登陆为例 :第一次进 login.jsp 会先实例化 Form 、把默认值赋给表单元素。输入用户名...
  • 今天我们来介绍一下struts框架,让struts解决这个问题。 首先,看一下粗略的时序图: ActionServlet是中央控制器,负责集区URL或分发; ActionForm负责收集表单数据,并且,struts会将表单数据转换成相应的数据...
  • struts(三)——struts框架实现登录示例

    千次阅读 2013-06-28 16:03:24
    前两篇讲解了struts框架的基本实现,自己感觉讲的也有些枯燥,今天拿登录的例子来做一个实现。 1、新建一个javaweb项目,并将struts的jar包拷贝到WebRoot/WEB-INF/lib下。   2、拷贝完jar包还不能进行工作,用户的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,040
精华内容 18,416
关键字:

struts框架