Struts 如何工作的

Struts2工作原理及代码 【代码】Struts2工作原理及代码。 阅读详情
作者:东海之心 2003-11-28,来源:Struts How To: http://jakarta.apache.org/struts/faqs/works.html
Java Servlets 被设计用于操控(handle)Web浏览器的请求。Java ServerPage被设计用于创建哪些可发布宣传站点到在线应用系统中的动态Web页面。Struts使用一个特殊的Servlet作为“交换机”,将来自Web浏览器的请求转到相应的ServerPage。这使Web应用更加容易设计、创建和维护。
以下是有关Struts的机制和依存关系的更加详细说明:
l 你开发的web应用有一个必须要写的部署描述文件(WEB-INF/web.xml)。这个文件描述了你的web应用的配置,包括欢迎页面(welcome pages)(当请求没有指定时,出现在目录下的文件)、servlet(路径或者扩展名)和那些servlets的参数的映射。
在这个文件中,你配置Struts ActionServlet作为一个操控所有指定映射(通常以.do为扩展名)请求的servlet。这就是前面提到的“交换机”。
也在这个文件中,你配置ActionServlet使用一个或者多个用于Struts本身的配置文件。
在本教程中,假定我们将web应用安装在服务器的/myapp下,并且使用最简单的可能配置。
如果你需要了解有关部署描述符方面更加详细的情况,请阅读Servlet 规范,这个可以在Sun的Java站点获得。
l 在Struts配置文件中,你将路径和你应用程序的控制组件相关联,像Action类(例如:“login”=>LoginAction类)。这告诉Struts的ActionServlet,当来一个 http://myhost/myapp/login.do请求时,应该调用你的控制组件LoginAction。
注意在这个URL中的后缀.do。这个后缀导致你的容器(例如Tomcat)去调用ActionServlet,它将单词“login”看做你要做的一件事。当这个配置被引用后,你的LoginAction也配执行。
l 对于每个Action,你也可以用结果页面(resulting page)的名字配置Struts,这些结果页面可以显示作为动作的结果。动作的结果可以有不止一种的视图(通常的,它至少有两种:一个是成功,一个是失败)。你的Action(你写的控制组件)依赖于这些“逻辑”结果的映射名。它使用一些诸如“success”“、failur”、“ok”、“UserInIncompetent”等词向ActionServlet回报。Struts系统(通过你写的配置文件)知道如何转向到合适的指定页面。这就是通过简单的编写Struts XMl配置文件为视图层进行重新配置所带来的额外好处。
从这点来看,Struts知道如何委派你的控制组件,知道你的控制器处理结果要显示什么。应用程序的模型(model)部分完全取决于你,它从你的控制组件内被调用。
l 你也许要在Struts配置文件中将一个Java Bean和一个action(或者一组action)相关联。Java Bean被当做form或者显示数据的仓库(repository),它可以在view和controller层通信。
这些Beans对你的控制组件(像LoginAction)和任何与控制器(controller)相关联的显示页面都将自动可见。
在Struts系统的帮助下,这些Beans将被核准用于帮助确认用户在表单中输入正确的数据。它们可以被一个session携带,允许表单(form)跨越多个视图页面,而Actions在控制器中。
注意:为了使显示层看到这些数据,你必须使用一些服务端技术(JSP、Velcity、XSLT)(静态的HTML不起作用)。
Struts工作在服务端,因此客户的视图必须在那里编写。客户端通过一般的表单提交(POST/GET)方法反馈数据,Struts系统在调用你的控制组件之前更新Bean里面的数据。
l 在你的web应用中,将会有一些页面,这些页面用于表现你的用户将看到的视图。这些可以是JSP页面,Velocity模板,XSLT页面等等。一组JSP标签和Struts发行包绑定,这样,你可以立刻使用,但不是说任何标准的表示技术(presentation technology)都可以在Struts中使用。
当然,静态HTML文件可以在你的Struts应用中使用,但是它们将不能获得充分获得动态特点的好处。
在Struts JSP taglibs的例子中,提供了一些其他包,使这个framework更加容易使用你的一些喜好的表现技术。对于Velocity 模板,有用于Struts的Velocity的ViewTools。如果你要使用XSLT在你的应用中,你可以在stxx和StrutsCX之间选择。
这些包使标准的Struts框架元素看起来像是原来表现技术的不可分割的一部分。Struts也使它变得容易混合和搭配。如果需要,你可以在同一个应用中使用JSP、velocity模板和XSLT!
由于Struts依赖于标准的Servlet技术,所有你应该可以在Struts中使用任何Java表现技术。
l 虽然Struts框架的焦点在控制器(controller),但是表现层是任何一个应用的有机部分。Struts JSP标签库包括一些普通的和Struts特有的标签,用于帮助在你的视图中使用动态数据。
客户定制JSP标签占Struts基础代码的很大一部分。一个有教育意义的是,在1.1b3版本中,有关Struts的核心Java代码是大约28,000行,而标签库(包括tiles)的Java代码是将近41,000行。
这些标签有助于你将你的视图层和控制层粘合而不需要插入很多Java代码在JSP中。这使页面看起来像一个XML文件,比起一个寻常的JSP文件,这使web设计者更加容易处理。这也有助于减少控制和视图的耦合性。
客户定制标签用于创建表单(非显示的和前面提到的Bean相关),逻辑上指向其他页面,然后激活web应用中的其他action。
还有一些标签是帮助你进行国际化、错误消息处理等等。所有这些功能都依靠你在应用于Struts中的配置文件的一些方法。
你需要记住的重要一点是,这里所说的机制仅仅在ActionServlet操控请求时才有效。
既然这只发生当你的请求被提交然后致使容器调用ActionServlet的情况下,所以你必须确保任何依赖于Struts的页面的请求是映射到ActionServelt的。
如何快速下载Gaia DR3星表数据?中国虚拟天文台镜像站保姆级教程 本文提供了一份详细的保姆级教程,指导用户如何通过中国虚拟天文台镜像站高速、稳定地下载Gaia DR3星表数据。文章详细介绍了镜像站的访问地址、数据组织结构,并给出了使用wget、aria2c等工具进行批量下载的实战策略,帮助国内用户避开国际网络延迟,高效获取近20亿颗天体的海量数据。 阅读详情

相关推荐

(三) Debian 安装linuxcnc-ethercat中间件

1.在这里同样的也是需要下载一下依赖包 sudo apt install linuxcnc-uspace-dev 2.依赖包安装完成, 接着执行下面命令 sudo git clone https://github.com/sittner/linuxcnc-ethercat 还是可能出现下载网络错误下载不成功,可以直接下载我已上传百度云linuxcnc目录下 注意一下,后面make可能会出现头文件(xxx.h)的报错提示,在这里给大家一个处理办法 用aptitude 工具可以搞定 sudo apt-get

qq_30065813的博客 828

Struts2 入门(一) 之 控制器与执行步骤

Struts2是什么? 是一个MVC框架。框架都是半成品。借助框架可以提高开发效率。 Filter VS Servlet 过滤器要比Servlet要强大,开发中经常用Servlet作为控制器,Filter也可以作为控制器来使用。 public class ServletDemo implements Servlet{     void init(ServletConfig cfg);

稚枭天卓 1267

FFmpeg硬件加速实战:VAAPI驱动配置全攻略(含NVIDIA/Intel避坑指南)

本文详细解析了在Linux环境下配置FFmpeg使用VAAPI接口实现硬件加速的完整流程。针对NVIDIA、Intel等主流显卡,提供了从驱动安装、环境变量设置到多显卡切换的实战指南,并重点解决了闭源驱动冲突、国产系统适配等常见问题,帮助用户有效提升视频处理性能。

weixin_29306011的博客 454

Struts的工作流程

首先我们先来看一下struts2的框架结构图                      图 1   struts2体系的结构图 从图1我们不难看出struts2的工作流程大致分为一下几部分 1、客户端请求一个HttpServletRequest的请求,如在浏览器中输入http://localhost:8080/bookcode/Reg.action就是提交一个(HttpServletRequ...

weixin_35809316的博客 495

VulnHub靶机渗透实战(详细思路讲解)

使用kali中的namp工具扫描开放端口,这时kali会用一个端口号向目标主机的65535个端口发送TCP连接建立请求,回应了ack=1,syn=q的端口就是开放端口号,这里可以看到21,22,80,3306号端口是开放的。可以看到这里得到了很多哈希,带*号的是禁用的或者是空密码,将三个不带星号的密码复制下来,创建一个shell.txt文档,将三个密码复制进去。这里看到我们是没有成功进入这个网页的,应该是目录的问题,我们将目录修改一下,但是没有显示出来,可能是编码问题,再回到我们找到的源码。

weixin_65891791的博客 2545

Ansys-结构动力学分析-圆柱斜齿轮模态分析学习心得

模态分析的步骤基本一直,不同点在于选择什么单元类型,模型,节点约束等 圆柱斜齿轮模态分析的难点在于圆柱斜齿轮的模型建立,和所要约束的节点的选择。 用命令流方法建立齿轮模型效率较高,当然,在ansys里建立复杂的模型实在不敢恭维,对于自下而上建模,需要知道每个关键点的坐标位置。下图是创建圆柱斜齿轮模型的命令流方式。 模型不同使用的数据也就不同了。 对于施加约束的问题这就必须要熟悉select e...

weixin_45385183的博客 1831

Struts的工作原理

0、初始化 struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。 <servlet> <servlet-name>action</servlet-name> <servlet-clas

行者常至 851

Unity游戏开发实战:如何用科大讯飞离线语音合成SDK实现NPC对话(附完整代码)

本文详细介绍了如何在Unity游戏开发中使用科大讯飞离线语音合成SDK实现NPC对话系统。通过完整的代码示例和优化技巧,开发者可以快速集成本地语音合成功能,提升游戏沉浸感,同时避免网络延迟问题。文章涵盖SDK集成、核心语音合成模块实现以及高级应用技巧,特别适合RPG游戏开发者参考。

weixin_29268385的博客 182

Struts1工作原理

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

sinolover的专栏 2109

嵌入式工程师必学(118):MCU的硬件定时器和中断

大多数微处理器都有一个或多个可编程硬件定时器,这些定时器包括对中断的支持。可以有不同类型的计时器,用于不同的应用程序。例如,LPC1768 具有四个 32 位通用定时器、一个看门狗定时器、一个重复中断定时器、一个系统滴答定时器、一个正交编码器接口、6 个 PWM 输出和一个支持中断的实时时钟。硬件定时器用于计时和计数作,允许处理器在 timer 进程运行时继续执行其他进程。硬件定时器是一种使用 clock 信号来增加 register 的电路。

码农17年的博客 211

YOLOv8改进 | 独家创新篇 | 给YOLOv8增加辅助可逆分支结构(PGI,1:1改进)(全网独家创新,附视频讲解)

这张图(图3)展示了可编程梯度信息(PGI)及其相关网络架构和方法。这种网络结构主要用于改进特征融合,以提高目标检测的性能。然而,由于信息瓶颈的存在,网络中可能会丢失一些信息。这是一种旨在减少信息丢失的网络设计。它通过可逆的列结构来尝试维持信息流通不受损失,但如图中“Heavy Cost”所示,这种结构会增加计算成本。c) 深度监督:这种方法通过在网络的多个层次中插入额外的监督信号来提高学习的效率和最终模型的性能。图中显示了通过深度监督连接的各个层。

Snu77的博客 3744

Struts的工作机制

 

lxlong的博客 205

太空安全卫士:基于YOLOv5的空间态势感知系统(实现轨道碰撞预警与太空环境保护)

做完这个项目,你会发现自己完整走过了“数据采集→标注→模型训练→功能集成→界面开发”的毕设全流程,这不仅是技术能力的证明,更是对“技术守护宇宙安全”这一理念的实践。答辩时,你可以重点讲这几点:系统解决了航天监测的哪些痛点、YOLOv5在太空目标检测中的性能优势、系统未来能怎么优化(比如对接航天监测网络、实现实时轨道预测)。未来,这个系统还能往“更智能”的方向发展:比如结合轨道计算预测碰撞风险、开发移动端APP让天文爱好者参与太空垃圾上报、在航天任务中实现全自动避障决策……想象空间很大。

m0_71589036的博客 90

Struts2的工作机制

struts2的整体架构:     Struts2的工作机制   一个请求在Struts2框架中的处理大概分为以下几个步骤:   1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;   2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很

zdnlp的专栏 567

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Struts工作流程

Struts的工作流程详解: 1、客户端向Servlet容器(如Tomcat)提交一个请求,即HttpServletResponse 2、请求经过一系列过滤器(ActionContextCleanUp过滤器、其他过滤器、FilterDispatcher)       ActionContextCleanUp:已被JVM和WEB容器废弃的空对象       F

胡图图的鼻涕 637

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

struts工作流程

struts工作流程

龙在天涯的专栏 499

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

struts1的工作原理

struts1的工作原理图

littlethumbtack的专栏 430

struts工作原理

dongjun613的专栏 464

Struts2工作原理

1.客户端发送请求到达Struts2的控制器StrutsPrepareAndExecuteFilter; 2.StrutsPrepareAndExecuteFilter调用PrepareOperations类的findActionMapping方法; public void doFilter(ServletRequest req, ...

哈哈彬的博客 338

struts 和struts2的工作机制

struts2的工作机制  http://www.blogjava.net/lzhidj/archive/2008/07/10/213898.html ------------------------------------------- struts的工作机制    http://blog.csdn.net/logo616/article/details/6222984

afa的专栏 2064

【Struts】——工作流程

【Struts】——架构

相由心生-心随相改~ 454

struts1工作原理

最近刚刚结束了SSH的学习,其实我觉得那不叫结束,是java学习的一个真正的入门,其中包含很多非常精华的思想,让我想到一句话:“为人民服务”,不管是用户,还是开发人员,特点是都是人,老师说过:你设计的软件,xx都会用了,那你就是精英,其实更近一步说,如果一个框架能够让一般的开发人员很容易上手,那这个框架也是一个非常优秀的框架,在学习SSH的这段时间,我学习的每一步都能够体会到当初设计这个框架的人的智慧,真的很棒,首先从struts1说起。 虽然strut2被我们熟知,并且常用,但是没有s

变是永远不变的...... 2739

【合肥黑马程序员】Struts2的工作原理

这是我们合肥黑马程序员的技术老师总结的Struts2的工作原理,希望能够帮助到各位!

yyl3c61的博客 289
上一篇: 处理输入框中输入非法字符的办法,将输入的非法字符转化成合法字符。
下一篇: javascript实现calendar
eric88
博客等级 码龄24年 19粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值