Struts技术介绍

合集下载

Struts、Spring、Hibernate三大框架的原理和优点

Struts、Spring、Hibernate三大框架的原理和优点

Struts的原理和优点.Struts工作原理MVC即Model—View—Controller的缩写,是一种常用的设计模式。

MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。

MVC的工作原理,如下图1所示:Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。

Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.Struts的工作原理,视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。

控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。

ActionServlet是一个通用的控制组件。

这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。

它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。

另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。

动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。

最后动作类把控制权传给后续的JSP 文件,后者生成视图。

所有这些控制逻辑利用Struts-config.xml文件来配置。

模型:模型以一个或多个java bean的形式存在。

这些bean分为三类:Action Form、Action、JavaBean or EJB.Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。

Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。

Struts2的介绍及总结

Struts2的介绍及总结

Struts2在WebWork基础上发展起来的,可扩展的JAVA EE web框架。

框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。

Action类:Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。

Struts2提供一个ActionSupport基类去实现常用的接口。

Action接口不是必须的,任何有execute标识的POJO 对象都可以用作Struts2的Action对象。

线程模式:Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。

Servlet依赖:Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。

如果需要,Struts2 Action仍然可以访问初始的request和response。

但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。

可测试性:Struts2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

捕获输入:Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。

Action属性能够通过web页面上的taglibs访问。

表达式语言:Struts 2 使用"ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。

ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。

Struts2不仅支持JSTL,Struts2 还可使用OGNL进行类型转换。

提供基本和常用对象的转换器。

校验:Struts2支持通过validate方法和XWork校验框架来进行校验。

XWork 校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。

struts技术

struts技术

消息资源
Struts-config.xml—配置FromBean
表单bean声明:表单bean区段是给ActionForm子类命名的地 方,这一名字能够被用于struts-conifg.xml文件和JSP页面中。 具体声明由一个外围的<form-beans>标签以及一个或多个 <form-bean>标签组成。<form-bean>标签有两个属性:
Struts 技术
MVC的概念
MVC是Model-View-Controller的简称,即模 型-视图-控制器。 MVC是一种设计模式,它把应用程序分成三个 核心模块:模型、视图、控制器,它们各自处 理自己的任务。
MVC
模型(model)
模型是应用程序的主体部分,模型表示业务数 据和业务逻辑。 一个模型能为多个视图提供数据。 由于应用于模型的代码只需写一次就可以被多 个视图重用,所以提高了代码的可重用性。
通过这个声明,就能够使用名字 helloForm 来引用 ActionForm子类com.hello.HelloForm
Action类
Struts的控制器组件主要包括:
– – – ActionServlet组件:充当 Struts 框架的中央控制器 RequestProcessor组件:充当每个子应用模块的请求处理器 Action组件:负责处理具体的业务
Helloapp应用(1)
input.jsp
在 input.jsp 界面的文本框中输入除”monster”的 任何非空字符串,都会得到下面的结果
hello.jsp
Helloapp应用(2)
input.jsp
在 input.jsp 界面的文本框中什么也不输入时,会 得到下面的结果

struts2框架特征

struts2框架特征

struts2框架特征Struts2框架特征Struts2是一种流行的Java Web应用程序开发框架,其特征使其成为许多开发者的首选。

本文将介绍Struts2框架的特征,包括MVC 架构、强大的标签库、拦截器、数据验证、国际化支持以及灵活的配置等。

一、MVC架构Struts2采用了MVC(Model-View-Controller)架构,将应用程序的业务逻辑、数据模型和用户界面分离。

这种架构使开发者能够更好地组织代码、提高代码的可维护性,并能够更容易地进行代码重用和测试。

在Struts2中,Model代表数据模型,可以是POJO(Plain Old Java Object)或者是与数据库交互的实体类;View代表用户界面,通常是JSP页面;Controller则负责处理用户请求、调用业务逻辑,并将处理结果返回给用户。

二、强大的标签库Struts2提供了丰富的标签库,使开发者能够更轻松地构建用户界面。

这些标签库包括表单标签、数据展示标签、控制流标签等,可以大大简化页面开发的工作量。

例如,开发者可以使用Struts2的表单标签库来生成表单,并自动处理表单的数据绑定、验证和错误提示。

这样,开发者无需手动编写大量的HTML和JavaScript代码,能够更快速地完成表单开发。

三、拦截器Struts2的拦截器是其核心特性之一,可用于在请求到达Controller之前和之后执行一些通用的处理逻辑,如日志记录、权限验证、异常处理等。

开发者可以通过配置拦截器栈,将多个拦截器按照特定的顺序组合起来,实现复杂的请求处理流程。

拦截器的使用使得开发者能够将通用的处理逻辑从业务逻辑中分离出来,提高了代码的可维护性和重用性。

同时,Struts2还提供了许多内置的拦截器,如参数封装拦截器、文件上传拦截器等,方便开发者处理不同类型的请求。

四、数据验证在Web应用程序中,数据验证是一项重要的任务。

Struts2提供了强大的数据验证机制,开发者可以通过简单的配置实现对表单数据的验证。

Structs2框架技术简单介绍

Structs2框架技术简单介绍

优点
• 3. 强大的拦截器Struts2的拦截器是一个Action级别 的AOP,Struts2中的许多特性都是通过拦截器来实 现的,例如异常处理,文件上传,验证等。拦截器 是可配置与重用的,可以将一些通用的功能如:登 录验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能。在我实现的的一Web 项目中,就是使用Struts2的拦截器来完成了系统中 的权限验证功能。
第一步 创建index.jsp
<html><head> <title>第一个Struts简单示例</title> </head> <body> <form action="user/HelloAction" method="post"> 请输入你的大名:<input type="text" name="username" /> <br> <input type="submit" value="提交" /> </form></body></html>
Structs2工作流程
• 此外,如果struts.xml文件中还定义了被请 Action的一些拦截器,那么该Action实例被 调用前后,这些拦截器也会被先后执行。
Structs2工作流程
Structs2工作流程
• 第五步 Action对请求处理完毕以后将返回 一个逻辑视图,该逻辑视图将在struts.xml 文件相应的<result>元素中寻找相应的物理 视图,并返回给客户端 • <result name="success">/WEBINF/page/hello.jsp</result>

STRUTS2入门教程(全新完整版)

STRUTS2入门教程(全新完整版)

一、发展历史及简介发展历史Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages、Servlet、标签库以及面向对象的技术水准。

Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。

这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。

这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。

当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。

同样,软件工程师使用Struts为业务应用的每一层提供支持。

它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。

我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。

如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。

早期Smalltalk程序语言便采用了MVC(Model-View-Controller)模式(Patterns)以增加程序代码弹性,MVC模式将程序代码整理切割为三部分,Model部分是业务与应用领域(Business domain)相关逻辑、管理状态之对象,Controller部分接收来自View所输入的资料并与Model部分互动,struts业务流程控制(Flow Control)之处,View部分则负责展现资料、接收使用者输入资料。

在Java应用中,JFC/Swing、AWT、JSP皆是可用作View的技术规格,而JavaBean与Enterprise JavaBean规格则可用于Model程序代码,一旦应用程序以MVC模式加以适当的分割,Model部分程序代码可在不同使用者接口外观的应用程序中重复使用。

随着JSP与Servlet技术大量应用于以Web为基础的应用程序,Java开发人员群体认为应以较佳的模式以提升Web应用程序的可维护性与重复使用性。

第一章Struts2系统架构

第一章Struts2系统架构

第一章Struts2系统架构本章主要介绍的Struts2的系统架构,让学员对Struts2框架在结构上有一个整体概念为我们以后更加详细的学习Struts2打下一个良好的基础。

第一节Struts2的系统架构及处理的主要流程1.Struts1简介Struts1的历史比较久远,Struts1是世界上第一个发布的MVC框架,目前市场率最高的框架。

下面将简单讲解Struts1的基本架构。

图1-1显示了Struts1的数据流图。

图1-1 Struts1数据流图Struts1框架以ActionServlet为核心控制器,ActionServlet获得客户端请求。

然后ActionServlet根据请求信息调用匹配的业务逻辑控制器(Action)处理用户请求。

请求处理完成后,业务逻辑处理器调用相应的JSP显示处理结果。

Struts1框架实现了MVC模式,下面我们了解一下Struts1是怎样实现MVC模式的。

Struts1框架中并没有提供Model层的实现。

在实际的企业应用中,通过一个JavaBean 实现一个业务逻辑,在功能比较复杂的应用中也采用EJB或WebService服务实现业务逻辑。

Struts1框架的View层采用JSP实现。

Struts1提供了大量丰富的标签库。

这些标签库与Struts的组件兼容的特别好,可以很容易的输出控制器的处理结果。

Struts1框架中,控制器是它的核心,Struts1的控制器由两部分组成:核心控制器(ActionServlet)和业务逻辑控制器(Action),核心控制器由Struts1框架提供。

业务逻辑控制器需要由用户自己继承Struts1框架提供的Action类实现。

在Struts1框架中,JSP/Servlet耦合非常紧密。

这种紧密关系促使Struts1存在各种缺陷。

下面我们分析一下Struts1中存在的缺陷。

●支持的表现层技术单一●耦合性强,不便于单元测试●代码依赖于Struts1 API,侵入性强2.WebWork简介WebWork出自于开源组织opensymphony,实际的创始人是Java领域的名人Rickard Oberg(JBoss和XDoclet的作者)。

Struts2介绍

Struts2介绍

Struts2集成指南关于Struts2Struts是Apache软件基金会(ASF)赞助的一个开源项目。

它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。

它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller〔MVC〕设计模式的应用框架〔Web Framework〕,是MVC经典设计模式中的一个经典产品。

Struts,a history在Java EE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaServer Pages(JSP)的源代码中,采用HTML与Java代码混合的方式进行开发。

因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,都给前期开发与后期维护带来巨大的复杂度。

为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,Craig McClanahan采用了MVC的设计模式开发Struts。

后来该框架产品一度被认为是最广泛、最流行JAVA的WEB应用框架。

Craig McClanahan2006年,WebWork与Struts这两个优秀的Java EE Web框架(Web Framework〕的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为“Struts 2”,原Struts的1.x版本产品称为“Struts 1”。

至此,Struts项目并行提供与维护两个主要版本的框架产品——Struts 1与Struts 2。

Struts1 vs. Struts2侵入性Struts 1在编程方面是面向抽象类编程,而不是面向接口编程。

Struts 1要求自定义Action 类继承一个特定的抽象基类Action。

另一方面,Struts 1的 Action 依赖于 Servlet API,因为Struts 1 Action 的execute 方法中有HttpServletRequest 和HttpServletResponse 方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Jsp+servlet+model的开发模式
框架图
优点 使用这种架构进行应用程序 的开发,利用了servlet和jsp技 术的长处。Jsp主要作用是产生表 现层,servlet主要负责请求处理 和 jsp 使 用 对 象 的 创 建 , jsp 和 servlet的结合分离出了jsp的处 理逻辑,这种开发模式非常清楚 地实现了表现层和内容的分离, 实现了开发团队角色的分离 缺点 1、jsp中仍包括流程逻辑的代 码和业务逻辑的代码。 2、请求的处理转向分散,不 易维护。
MVC与Struts
MVC设计样式在Struts中的应用 Struts对应用程序开发方式的改变 Struts的工作原理 Struts开发环境配置
MVC设计样式在Struts中的应用
视图 Struts采用JSP作为MVC的视图。每一视图都是采用了定制标签库的JSP页面,这些定制标签库则 由Struts Framework提供。全部表单元素都是用定制标签编码的,所以这些页面能够很方便地同 控制器交互。每一个表单都通过映射JSP到servlet的请求这一方式指向控制器的特定入口点。 控制器 控制器就是Java servlet,由Struts Framework提供,负责视图和模型之间的交互。控制器的每 个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的 java类以进行相应的处理。控制器还指定下一个视图的位置。 模型 Java beans就是模型的代表。对进入控制器的每个入口点来说,bean的作用是存储从视图获取 的信息,Action类”一种Java类,被指定为对表单输入进行处理。行动类(action class)实现了 业务逻辑。
Struts 技术介绍
开发方式介绍 MVC介绍 MVC与Struts架构 Struts开发过程 Struts开发的建议
基于j2ee平台的软件开发方式
Jsp+model的开发方式 Jsp+servlet+model的开发方式
Jsp+model的开发方式
架构图
1 request 浏 器
jsp
览 4 Response 2 3
MVC架构
MVC的关键是商业模型的设计与实现可以独立于应用系统的结构设计与实现(控制)和界面 的设计与实现(视图) 应用程序按MVC模式划分为以下部分: 1、 Model: 是真正完成任务的代码。包括各种商业逻辑和保持系统状态的组件。包括一组表示应用系 统商业逻辑的对象。 2、 View: 即应用程序的界面部分,界面部分要求尽量少的包含业务逻辑的处理。是用一种向用户 表达信息的具体方式。它能够给用户提供一组互相有关的信息。 3、 Controller: 是应用系统处理具体流程和导向的核心部分。它检查通过界面输入的信息以及选择处理 输入信息的模型,把模型对象给出的信息翻译成视图可以理解的形式,并且处理系统流程的 走向。
Struts开发过程
设计应用程序的流程,确定客户要提交的FORM属性,属性的验证要求,应用程序要处理的业 务逻辑以及流程要跳转的界面。根据设计按角色分配工作。 业务逻辑层的开发 根据业务要求,开发人员根据客户的请求,通过与数据源或企业应用层的交互,完成业务处 理,并把处理结果返回到业务逻辑的调用层。包括使用JavaBean或Ejb封装业务逻辑,以 JavaBean的形式把处理结果返回到调用层。主要完成Ejb或JavaBean的开发。 控制层的开发 完成客户请求到业务逻辑的转化,错误的验证,流程的转向等工作。 1、创建ActionForm的子类,接受客户端的Form属性,完成Form属性属性值的验证。 2、配置struts-config.xml,完成form-bean和action的配置。 3、创建Action的子类,在perform中处理客户端请求和业务逻辑组件的调用,把响应结果通过 ActionForward提交给用户。 表现层的开发 完成业务信息的关联表现。主要使用jsp和tablib完成表现层逻辑和表现层数据的显示。 表现层的开发 完成上述配置和开发后,打包成war文件即可配置到应用服务器上。
Application.properties search.pageTitle=Customer search search.title=Search a customer by ID: search.enterID=Enter customer ID: error.noCustomerFound=No Customer found for ID: {0} error.customerID.required=You must specify an ID to search for a Customer ! index.search=search customers index.title=Title of first Struts Example Struts-config.xml <!-- CustomerSearch form bean --> <form-bean name="customerSearchForm" type="ch.thales.forms.CustomerSearchForm"/> <action path="/customerSearch" type="ch.thales.actions.CustomerSearchAction" name="customerSearchForm" scope="request" validate="true" input="/search.jsp"> <forward name="found" path="/customerDetails.jsp"/> <forward name="notFound" path="/search.jsp"/> </action>
Struts开发环境配置
Struts工具包的下载 工具包的下载 可以在 /struts/下载最新的struts开发工具包,目前的最新版本为 Release Notes 1.1-b2,建议使用比较稳定的 Release Notes 1.0.2 进行开发。 Struts开发配置 开发配置 1、将Struts目录的lib/struts.jar拷贝到web应用的WEB-INF/lib目录。 2、将Struts目录的lib/struts*.tld拷贝到web应用的WEB-INF目录。 3、修改Web应用目录的WEB-INF/web.xml文件,增加一个<servlet>元素来定义controller servlet, 增加一个<servlet-mapping>元素来建立URI请求与servlet的对应关系。 4、修改Web应用目录的WEB-INF/web.xml文件,使之包含tag库的定义。 5、创建一个WEB-INF/struts-config.xml文件来定义你的web应用的action映射关系。 6、拷贝Application.properies文件到WEB-INF/classes目录下。 应用程序结构
model Application Server
使用这种架构进行应用程 序的开发,虽然实现了表 现层和内容的分离,但是 他却要求jsp要处理大量的 客户端请求及流程控制, 特别是在复杂的应用程序 开发中,jsp中不可避免将 包含大量的脚本语言,这 将导致在应用程序的开发 过程中很难进行角色的分 离。(这种模式适合简单 应用程序的开发)
Struts对应用程序开发方式的改变
使用struts的架构图 的架构图 使用 使用struts前后的比较 前后的比较 使用
Struts的工作原理
Struts组件交互图 组件交互图
ActionServlet 它为到来的请求url映射到相应的actionmapping,创建或找到其实例; actionservlet调用在actionmapping中声明的action类,创建并生成相应的actionform bean实 例。然后把actionform bean传到action类; actionservlet对action类实例调用适当的perform方法,给它传递actionform bean,actionmapping,request和response对象; action在其perform方法里将产生处理好的业务逻辑的结果; actionservlet接受从perform方法返回的actionforward,转发response到由actionforward指定的 源 ActionForm 使用ActionForm bean来保存请求的参数,这些bean的属性名称与HTTP请求参数的名称相对 应,控制器将请求参数传递到ActionForm bean的实例,然后将这个实例传送到Action类。 典型的ActionFrom bean只有属性的设置与读取方法(getXXX),而没有实现事务逻辑的方法。 只有简单的输入检查逻辑,使用的目的是为了存储用户在相关表单中输入的最新数据,以便 可以将同一网页进行再生,同时提供一组错误信息,这样就可以让用户修改不正确的输入数 据。而真正对数据有效性进行检查的是ACTION类或适当的事务逻辑bean。 Action Action 类是业务逻辑的一个包装。Action 类的用途是将 HttpServletRequest 转换为业务逻辑, 有EJB或JavaBean部分处理业务逻辑;Action控制通过ActionForward控制应用程序流程。
WEB-INF Application.propertiess classes ……… Struts.jar Lib ……… Web.xml Struts_*.tld taglib Custom.tld Jsp
images
Web.xml <web-app> <servlet> <servlet-name>action</servቤተ መጻሕፍቲ ባይዱet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/taglib/struts-config.xml</param-value> </init-param> <init-param> <param-name>application</param-name> <param-value>Application</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <taglib> <taglib-uri>/struts-bean.tld</taglib-uri> <taglib-location>/ /taglib /struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/struts-html.tld</taglib-uri> <taglib-location>/taglib/struts-html.tld</taglib-location> </taglib> </web-app>
相关文档
最新文档