Struts的概念及体系结构与工作原理-Java基础-Java-编程开发

Struts 体系结构原理及编程实例 Struts 是一个开源的 Java Web 应用程序框架,它提供了一种基于 MVC(Model-View-Controller)模式的开发方式,用于构建可扩展、灵活和高效的 Web 应用程序。1.2 动作(Action):动作是处理用户请求的主要组件。本文介绍了 Struts 框架的体系结构原理,并提供了一个简单的编程实例来演示如何使用 Struts 框架创建一个基本的登录功能。在上述配置中,我们定义了一个名为 “LoginForm” 的表单 bean,并将它与名为 “/login” 的动作路径关联。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

  基本概念

  Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Java Servlets,JavaBeans,ResourceBundles与XML等标准技术,以及 Jakarta Commons 的一些类库。Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是一个传统 MVC设计模式的一种变化类型。

  Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,如 JDBC / EJB ,以及其它第三方类库,如 Hibernate / iBATIS ,或者 Object Relational Bridge(对象关系桥)。在视图层,Struts能够与JSP,包括 JSTL 与 JSF,以及 Velocity 模板,XSLT 与其它表示层技术。
Struts 为每个专业的 Web 应用程序做背后的支撑,帮助为你的应用创建一个扩展的开发环境。

  Struts的体系结构与工作原理

  MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图1所示:


图1

  Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的体系结构与工作原理如下图2所示:


图2

  从图2中我们可以知道,Struts的体系结构包括模型(Model),视图(View)和控制器(Controller)三部分。

  下面让我们从MVC角度来看看struts的体系结构(Model 2)与工作原理:

  1)模型(Model)

  在Struts的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ActinForm Bean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。 小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。 建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。

  2)视图(View)

  视图主要由JSP建立,struts包含扩展自定义标签库(TagLib),可以简化创建完全国际化用户界面的过程。目前的标签库包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。

  3)控制器(Controller)

  在struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成的,其中Action扮演了真正的业务逻辑的实现者,ActionMapping与ActionForward则指定了不同业务逻辑或流程的运行方向。struts-config.xml 文件配置控制器。

  Struts体系结构中的组件

图3
 上图3显示了 ActionServlet (Controller)、ActionForm (Form State) 和 Action (Model Wrapper) 之间的最简关系。

  体系结构中所使用的组件如下表:

ActionServlet控制器
ActionClass包含事务逻辑
ActionForm显示模块数据
ActionMapping帮助控制器将请求映射到操作
ActionForward 用来指示操作转移的对象
ActionError 用来存储和回收错误
Struts标记库可以减轻开发显示层次的工作

  Struts配置文件:struts-config.xml

  Struts配置文件struts-config.xml,我们默认可以在目录//WEB-INF//struts-config.xml找到这个文件。文件的配置包括全局转发、ActionMapping类、ActionForm bean 和JDBC数据源四个部分。

  1)配置全局转发

  全局转发用来在JSP页之间创建逻辑名称映射。转发都可以通过对调用操作映射的实例来获得,例如:
actionMappingInstace.findForward("logicalName");

  全局转发的例子:

<global-forwards>
 <forward name="bookCreated" path="/BookView.jsp"/>
</global-forwards>

属性描述
Name全局转发的名字
Path 与目标URL的相对路径

  2)配置ActionMapping

  ActionMapping对象帮助进行框架内部的流程控制,它们可将请求URI映射到Action类,并且将Action类与ActionForm bean相关联。ActionServlet在内部使用这些映射,并将控制转移到特定Action类的实例。所有Action类使用perform()方法实现特定应用程序代码,返回一个ActionForward对象,其中包括响应转发的目标资源名称。例如:

<action-mappings>
 <action path="/createBook" type="BookAction" name="bookForm" scope="request" input="/CreateBook.jsp">
 </action>
 <forward name="failure" path="/CreateBook.jsp"/>
 <forward name="cancel" path="/index.jsp"/>
</action-mappings>

属性描述
PathAction类的相对路径
Name 与本操作关联的Action bean的名称
Type连接到本映射的Action类的全称(可有包名)
ScopeActionForm bean的作用域(请求或会话)
Prefix用来匹配请求参数与bean属性的前缀
Suffix 用来匹配请求参数与bean属性的后缀
attribute 作用域名称。
classNameActionMapping对象的类的完全限定名默认的类是org.apache.struts.action.ActionMapping
input输入表单的路径,指向bean发生输入错误必须返回的控制
unknown设为true,操作将被作为所有没有定义的ActionMapping的URI的默认操作
validate设置为true,则在调用Action对象上的perform()方法前,ActionServlet将调用ActionForm bean的validate()方法来进行输入检查

  通过<forward>元素,可以定义资源的逻辑名称,该资源是Action类的响应要转发的目标。

属性描述
IdID
ClassNameActionForward类的完全限定名,默认是org.apache.struts.action.ActionForward
Name 操作类访问ActionForward时所用的逻辑名
Path响应转发的目标资源的路径
redirect若设置为true,则ActionServlet使用sendRedirect()方法来转发资源

  3)配置ActionForm Bean

  ActionServlet使用ActionForm来保存请求的参数,这些bean的属性名称与HTTP请求参数中的名称相对应,控制器将请求参数传递到ActionForm bean的实例,然后将这个实例传送到Action类。例子:

<form-beans>
 <form-bean name="bookForm" type="BookForm"/>
</form-beans>

属性描述
Id ID
classNameActionForm bean的完全限定名,默认值是org.apache.struts.action.ActionFormBean
Name表单bean在相关作用域的名称,这个属性用来将bean与ActionMapping进行关联
Type 类的完全限定名

  4)配置JDBC数据源

  用<data-sources>元素可以定义多个数据源:

属性 描述
Id ID
KeyAction类使用这个名称来寻找连接
Type 实现JDBC接口的类的名称

  下面属性需要<set-property>元素定义,在Struts 1.1版本中已不在使用,但你可用<data-source>元素。例如:

<data-sources>
 <data-source id="DS1" key="conPool" type="org.apache.struts.util.GenericDataSource"
  <set-property id="SP1" autoCommit="true" description="Example Data Source Configuration"
driverClass="org.test.mm.mysql.Driver" maxCount="4"
minCount="2" url="jdbc:mysql://localhost/test" user="struts" password="ghq123" />
 <data-source/>
</data-sources>

属性描述
desciption数据源的描述
autoCommit数据源创建的连接所使用的默认自动更新数据库模式
driverClass 数据源所使用的类,用来显示JDBC驱动程序接口
loginTimeout数据库登陆时间的限制,以秒为单位
maxCount最多能建立的连接数目
minCount要创建的最少连接数目
password 数据库访问的密码
readOnly创建只读的连接
User 访问数据库的用户名
urlJDBC的URL

  通过指定关键字名称,Action类可以访问数据源,例如:

javax.sql.DataSource ds = servlet.findDataSource("conPool");
javax.sql.Connection con = ds.getConnection();

[1] [2]

深入理解Java Web MVC框架:Struts与Spring MVC的工作原理及对比 Struts 1 是一个基于 MVC 设计模式的 Web 应用框架,它是早期 Java EE 开发者中最受欢迎的框架之一。Struts1 的主要目标是将业务逻辑与界面表现层分离,从而简化企业级应用的开发。Struts1 的工作流程可以简单分为接收请求、处理业务逻辑、返回响应三个步骤。拦截器是Struts2中非常重要的一个概念,它为处理请求提供了一个可插拔的机制。自定义拦截器的步骤如下:创建拦截器类并实现接口。在intercept方法中编写拦截逻辑。在struts.xml。 阅读详情

相关推荐

全面掌握Struts框架开发资料集

本文还有配套的精品资源,点击获取 简介:Struts框架是实现MVC模式的重要Java Web开发组件,支持构建可扩展和模块化的Web应用程序。本资料从基础到进阶详细介绍了Struts框架的使用,包括环境配置、Action类、struts.xml配置、国际化处理及数据验证等关键概念和实践方法。同时,涵盖了Servlet、JSP和JSTL等Java Web编程核心知识,帮助开...

weixin_30951515的博客 1226

浅析Struts 体系结构与工作原理(图)

基本概念    Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Java Serv...

weixin_34043301的博客 156

保姆级避坑指南:在Ubuntu 18.04上搞定速腾Helios雷达驱动与fast-LIO2的完整配置流程

本文提供了一份详细的速腾Helios雷达与fast-LIO2在Ubuntu 18.04上的配置避坑指南,涵盖驱动安装、数据格式转换到建图全流程。特别针对常见编译错误和数据转换问题提供了解决方案,帮助开发者高效完成环境搭建与建图任务。

weixin_27252001的博客 115

structs

建立基于Struts1.x的Web程序的基本步骤 1.        安装Struts。由于Struts的入口点是ActionServlet,所以得在web.xml中配置一下这个Servlet。 2.        编写Action类(一般从org.apache.struts.action.Action类继承)。 3.        编写ActionForm类(一般从org.apache...

shanlingwei的专栏 138

uni-app蓝牙MTU设置失效探因:从20字节限制到跨设备兼容性实战

本文深入探讨了uni-app蓝牙开发中MTU设置失效的常见问题,特别是20字节限制的成因及解决方案。通过分析设备兼容性、蓝牙协议栈特性和系统版本差异,提供了智能延迟策略、设备特征检测和渐进式MTU提升等实战方案,帮助开发者优化蓝牙数据传输效率。

weixin_29289821的博客 289

BLE蓝牙胎压监测

胎压监测系统新技术

qq_41851841的博客 1255

Struts的体系结构(学习转发)

http://www.donews.net/tssungeng/archive/2004/06/13/27940.aspx Struts的体系结构 Struts的体系结构 (Struts Framework Architecture) 胡长城(银狐999) 关键字 Struts,Framework,Architecture,Componennt,MVC 预备知识 在开始学习Struts以前,以

FutureInHands的专栏 1485

从12摄像头到纯视觉:小鹏AI鹰眼方案如何用LOFIC技术省掉激光雷达?

本文深入解析小鹏汽车AI鹰眼方案如何通过LOFIC技术实现纯视觉自动驾驶,替代传统激光雷达。LOFIC摄像头在动态范围、噪声控制和HDR优化方面表现卓越,结合800万像素双目广角摄像头,达到激光雷达级测距精度。该方案不仅降低成本,还提升系统可靠性和用户体验,展示了纯视觉路线的技术潜力与边界。

t8u9v0w1x的博客 935

Struts框架基础篇

本文主要是介绍Struts 1.1 框架基本原理,以后将会陆续介绍Struts 1.1 其它方面的知识。 1. Struts的起源 Struts是作为Apache Jakarta项目的组成部分。该项目的目标是为建立Java web 应用程序而提供的一个开源框架,目前大家一般使用的版本为1.1,但也出现了1.2。通过使用struts 框架可以改进和提高Java Server Pages (JSPs)

!Java 3322

电源工程师必看:平均电流模式BUCK双环控制详解(从传递函数到Psim仿真)

本文详细解析了平均电流模式BUCK变换器的双环控制策略,从传递函数推导到Psim仿真实现。针对电源工程师关注的环路设计和稳定性问题,深入比较了电压模式、峰值电流模式和平均电流模式的优缺点,并提供了12V/3A BUCK变换器的完整设计案例,帮助工程师掌握平均电流控制这一中高功率应用的首选方案。

weixin_42696271的博客 398

ADES1831和ADBMS6830

1、上电默认进入STANDBY模式,SPI发送0xFF也可以进入STANDBY模式2、看门狗定时器超时后,进入SLEEP状态3、配置寄存器中的REFON位使用WRCFGA命令将组A设置为1进入REFUP状态,此状态比待机状态更快地启动ADC转换。i<TOTAL_IC;i++)注意:读AFE数据时会随着AFE片数增加而增加,原因是唤醒时间和AFE片数密切相关,如果需要缩短时间,那么减少唤醒频次。

m0_61973119的博客 267

Struts体系结构和原理

Struts的体系结构与工作原理 MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图1所示: Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特...

weixin_30784501的博客 363

【毕设级教程】从0到1实现基于YOLOv8的xView卫星图像目标检测系统(含UI界面,助力遥感智能毕设)

本文基于YOLOv8模型设计了一个面向xView卫星图像的目标检测系统。首先对xView数据集进行了格式转换处理,将原始多边形标注转换为YOLO格式的边界框标注。随后通过配置YOLOv8模型参数完成训练,实现了对卫星图像中建筑、车辆等多类目标的准确识别。为提高系统交互性,采用PyQt开发了可视化界面,支持图像选择、实时检测和结果展示功能。整个系统兼顾学术价值和实用价值,为遥感领域的自动化目标检测提供了可行方案。

m0_64661770的博客 130

Struts 体系结构与工作原理

基本概念  Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Java Servlets,JavaBean

xxx专栏 592

【异常】Nacos 2.x 核心报错:Server check fail (gRPC 端口连不通) 深度排查

如果 Nacos 运行在 K8s 中,需确保对应的Servicemetadata:spec:ports:port: 8848port: 9848 # 必须暴露此端口selector:app: nacos在 Nacos 2.x 时代,“端口成套出现”是基础设施配置的基本要求。遇到连接失败时,首要检查的不是业务配置,而是网络链路上主端口 + 1000的 TCP 通讯是否被放行。更多关于 AI + 教育领域的干货,可以关注我的微信公众号一时间获取哦~

奶爸的编程之路,也就一周冷个三天 325

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Struts 体系结构与工作原理 图

Struts 体系结构与工作原理 图

fdyufgf的博客 257

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

浅析Struts 体系结构与工作原理

Struts采用面向对象设计/将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致/刚看完孙卫琴编著的《精通structs:基于MVC的Java Web》一书/感觉写的很不错/于是找了这篇文章贴出来/不过与那这篇文章像相比那本书可实惠的多了/。。。浅析Struts 体系结构与工作原理作者:务实基本概念  Struts是Apache 基金会Jakarta 项目组的一个Open Source 项

danning之道 3581

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Struts的概念及体系结构与工作原理

基本概念  Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Java Servlets,JavaBeans,

kucool的专栏 606

Struts 体系结构与工作原理(图)

    Struts 体系结构是目前基于java的 web系统设计中广泛使用的mvc构架。基本概念    Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用模型-视图-控制器(Model-View- Controller,简称MVC)模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面

冯立彬的博客 1万+

struts2的核心和工作原理

在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处? 设计目标     Struts设计的第一目标就是使MVC模式应用于web程序设计。在这儿MVC模式的好处就不在提了。 技术优势     Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The Java Servlet

蒋倩兰——蕙质兰心 38万+

Struts1工作原理

Struts1工作原理图 1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。(面向对象思想) 2、发送请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协...

sinolover的专栏 2109
上一篇: JAVA面试题集-Java基础-Java-编程开发
下一篇: Java Servlet 编程及应用之Cookie的使用方法-Java基础-Java-编程开发
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值