`

Struts1知识点总结

阅读更多

1.servlet的生命周期

 

servlet有良好的生存期的定义,包括如何加载、实例化、初始化、处理客户端请求以及如何被移除。

 

2.与CGI区别

在于servlet处于服务器进程中,
它通过多线程方式运行其service方法,
一个实例可以服务于多个请求,
并且其实例一般不会销毁,
而CGI对每个请求都产生新的进程,
服务完成后就销毁,
所以效率上低于servlet。

 

Struts优点与缺点

Struts是开源软件,使开发者能更深入的了解其内部实现机制。

Struts 优点:业界"标准"(很多成功案例),学习资源丰富。

Struts的优点主要集中体现在两个方面:Taglib和页面导航。

a、利用Struts提供的taglib可以大大节约开发时间。

b、维护扩展比较方便。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。

c、表现与逻辑分离

d、表单验证解决了请求数据的验证问题,增强了系统健壮性。

e、便于团队开发

Struts缺点:

a、大量的使用标签,对于初学者难度较大。

bActionForms使用不便、无法进行单元测(StrutsTestCase只能用于集成)

Struts提供了几个标签库?都是什么标签库?

Struts提供了五个标签库,即:HTMLBeanLogicTemplateNested

HTML 标签   用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单

Bean 标签      在访问JavaBeans 及其属性,以及定义一个新的bean 时使用

Logic 标签      管理条件产生的输出和对象集产生的循环

Template 标签      随着Tiles框架包的出现,此标记已开始减少使用

Nested 标签      增强对其他的Struts 标签的嵌套使用的能力

 

Tiles框架是什么?

Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。

 

你对MVC的理解,MVC有什么优缺点?结合Struts,说明在一个Web应用如何去使用?

MVC设计模式(应用观察者模式的框架模式)

M: Model(Business process layer),模型,操作数据的业务处理层,并独立于表现层 (Independent of presentation)

V: View(Presentation layer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。

C: Controller(Control layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图

MVC框架的一种实现模型

 

模型二(Servlet-centric) JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。

Struts MVC框架(Web application frameworks) Struts是使用MVC实现模式二来实现的,也就是以控制器为核心。

 

Struts提供了一些组件使用MVC开发应用程序:

ModelStruts 没有提供model 类。这个商业逻辑必须由Web 应用程序的开发者以JavaBeanEJB的形式提供

ViewStruts提供了action form创建form bean,用于在controllerview间传输数据。此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言, 可用于JSP中。

ControllerStruts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-configxml的特定配置文件中进行配置,接收JSP输入字段形成Action form,然后调用一个Action控制器。Action控制器中提供了model的逻辑接口。

 

叙述Struts ActionForm执行步骤

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

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

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

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

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

(6)form beanreset()方法备调用

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

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

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

 

简单叙述Struts 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表单。

 

简述Struts Form Bean的表单验证流程

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

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

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

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

 

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

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

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

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

(4)如果ActionFormvalidate()方法返回null或返回一个不包含ActionMessgeActionErrors对象,就表示表单验证成功。

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

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

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

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

 

Struts的工作机制,为什么要用?

工作机制:

web应用启动时就会加载初始化ActionServletActionServletstruts-config.xml文件中读取配置信息,把它们存放到各种配置对象,当ActionServlet接收到一个客户请求时,将执行如下流程。

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

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

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

    (4)如果ActionFormvalidate()方法返回null或返回一个不包含ActionMessageActuibErrors对象, 就表示表单验证成功;

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

    (6)Actionexecute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;

    (7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

为什么要用:

JSPServletJavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。

基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件

具体如图:



 

 

说下Struts的设计模式

MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-configxml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionFormValidate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Actionexecute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。

单例模式     Factory(工厂模式)

定义一个基类===》实现基类方法(子类通过不同的方法)===》定义一个工厂类(生成子类实例) ===》开发人员调用基类方法

struts中的几个关键对象的作用(说说几个关键对象的作用)

ActionServletrequestProcessActionFormAction等等

Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?如果是,说明原因

不是线程安全的。只要不申明类变量就可以保证线程安全。因为只存在一个Action类实例,所有线程会共享类变量。

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 22.1 KB
分享到:
评论

相关推荐

    Struts2知识点总结

    以下是对Struts2知识点的详细总结: 1. **Struts2核心组件** - **FilterDispatcher**(或现在的`StrutsPrepareAndExecuteFilter`):这是Struts2的核心过滤器,它负责拦截请求,处理Action映射,并转发到相应的...

    struts知识点总结

    struts知识点总结struts知识点总结,觉得有需要的就拿去看看吧

    struts2 知识点

    ### Struts2知识点详解 #### 一、Struts2框架概览 Struts2是Apache组织推出的一个基于Java EE的Web应用框架,它遵循MVC(Model-View-Controller)设计模式,为开发者提供了构建可扩展、易于维护的Web应用程序的...

    struts的知识点总结

    Struts是Apache软件基金会下的一个开源项目,是一个基于MVC(Model-View-...开发者可以通过学习和掌握这些知识点,提升项目开发效率和代码质量。同时,结合相关工具和源码阅读,能够进一步提升对框架的理解和应用能力。

    struts2一些知识点总结

    ### Struts2知识点总结 #### 一、Struts2简介与安装配置 ##### 1.1 Struts2.0资源获取 Struts2是Apache软件基金会的一个开源项目,旨在简化Web应用程序开发流程。针对初学者而言,理解Struts2的基本架构和安装...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    Struts1学习笔记总结.pdf

    下面是对Struts1学习笔记的总结,涵盖了Struts1的基本概念、工作流程、标签、国际化等方面的知识点。 Struts1和Servlet的关系 Struts1是基于Servlet的Web应用框架,它可以和Servlet一起使用。Servlet是一个基于...

    Struts2课堂学习总结

    以下是关于Struts2的一些核心知识点的详细说明: 1. **环境搭建**:要搭建Struts2的开发环境,首先需要配置Tomcat服务器和JDK。接着,将必要的Struts2库文件(jar包)添加到项目的类路径中,通常这包括Struts2的...

    我的struts2的总结

    根据提供的文件信息,我们可以整理出关于Struts2框架的一些关键知识点。尽管原文中的信息较为零散且不完整,但还是可以从中提炼出一些有价值的内容。接下来,我们将详细探讨这些知识点。 ### Struts2简介 Struts2...

    struts2总结大全

    通过以上知识点的详尽解析,开发者可以对Struts2有更深入的理解,从而更好地利用其特性来构建高效、可维护的Web应用。实践是检验真理的唯一标准,因此在理论学习的同时,不断通过实际项目来应用这些知识,才能真正...

    Struts学习总结.doc

    以下是关于Struts框架的一些核心知识点的详细解释: 一、Struts 中的主要类结构: 1. **ActionServlet**:这是Struts框架的核心组件,它是Servlet的子类,负责处理HTTP请求,根据配置文件中的映射信息来调度请求到...

    struts2知识总结.txt

    根据提供的文件信息,我们可以将Struts2的相关知识点总结如下: ### Struts2框架概述 - **Struts2** 是一个基于MVC模式的开源Web应用框架,它与JSP、XML、JDK以及Tomcat等技术紧密关联。Struts2在Java Web开发中...

    Struts开发模式经验总结

    以下是对Struts开发模式的一些关键知识点的详细说明: 1. **Struts1.1 标签使用**: Struts1.1 提供了一系列的JSP标签库,如logic、bean、html等,这些标签简化了视图层的开发。例如,`&lt;html:form&gt;`用于创建表单,...

    Strust知识点总结

    本资料是Struts2的知识点总结,可以快速回顾Struts的知识点。主要包括:拦截器、结果视图、OGNL、类型转换、国际化、上传下载

    关于struts实验时的临时总结

    ##### 总结1:Struts2 onsubmit 无法返回JavaScript进行验证 **问题描述**:在Struts2框架中,尝试使用`onsubmit`事件调用JavaScript进行表单验证时发现无效。 **原因分析**:`onsubmit`事件默认情况下并不会阻止...

    Struts2+Spring+Hibernate知识点总结

    ### Struts2+Spring+Hibernate知识点总结 #### Struts2框架概述 - **Struts2的工作流程**: 1. **客户端发起HTTP请求**:客户端浏览器向服务器发送HTTP请求。 2. **FilterDispatcher接收请求**:根据`web.xml`...

    struts1.x入门

    ### Struts1.x 入门知识点详解 #### 一、Struts 概念与起源 Struts 是一款基于 Java 的开源 MVC(Model-View-Controller)框架,最初由 Apache Jakarta 项目开发。其目的是简化 Web 应用程序的开发过程,并提供一...

Global site tag (gtag.js) - Google Analytics