struts与struts 2 框架浅析

原创:struts2-045漏洞浅析 这是小弟写的第一篇网文,文笔一般,请大家多包涵。近期发生了很多事,使我醒悟要回归自我的同时,要作些改变,所以开始写网文,且把这些网文分享至个人的微信公众号(公众号名:永记士多)和优快云博客(博客账号:rossrocket,昵称:永记士多)。此微信公众号和优快云博客现定位为:专门研究web应用的漏洞,性能,并发量,框架选择等问题,技术涵盖编程语言(java,php,python)、应用框架(st 阅读详情

1.struts

struts是开源框架。基于MVC的WEB框架.使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。

Struts 是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

框架结构图

相应框架结构如图:

Struts对Model,View和Controller都提供了对应的组件。

在上图中,ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。

Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。

Model部分

由JavaBean组成,ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。

JavaBean则封装了底层的业务逻辑,包括数据库访问等。

View部分

该部分采用JSP实现。

Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。

Controller组件

Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。

系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标准的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。

业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。

2.struts 2框架

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。Struts 2虽然是在Struts1的基础上发展起来的,但是实质上是以WebWork为核心的。Struts2为传统的Struts1注入了WebWork的先进的设计理念,统一了Struts1和WebWork两个框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

对比

Struts和Webwork同为服务于Web的一种MVC框架,从某种程度上看,Struts2是从WebWork2上升级得到的。甚至Apache的官方文档也讲:WebWork2到Struts2是平滑的过渡。我们甚至也可以说Struts2就是WebWork2.3而已。在很多方面Struts仅仅是改变了WebWork下的名称。Struts2对应的有自己的标签,并且功能强大。Webwork也有自己的标签。在2005年12月,WebWork与Struts Ti决定合并, 在此同时, Struts Ti 改名为 Struts Action Framework 2.0,成为Struts真正的下一代。


Struts2与Struts的异同与联系 总结起来,Struts2是Struts的升级版本,它在设计和实现上引入了更多现代化的概念和技术。然而,由于Struts2是Struts的升级版本,所以在某些方面仍然保留了一些Struts的设计和概念。Struts2和Struts是两个常用的Java Web开发框架,它们都是基于MVC(Model-View-Controller)设计模式的框架,用于构建灵活和可扩展的Web应用程序。此外,Struts2的模块化设计使得开发人员可以根据项目需求选择所需的功能模块,减少了框架的冗余。 阅读详情

相关推荐

百度文心大模型ERNIE全面解析

文章摘要:本文汇总了多个Python自然语言处理(NLP)工具库的应用实例,涵盖百度文心大模型ERNIE、Hugging Face Transformers、StanfordNLP、SymSpell等主流框架。内容涉及文本预处理、情感分析、命名实体识别、机器翻译、文本纠错等典型NLP任务,并包含ERNIE-Lite、BART、T5等模型的调用示例。各工具库的特色功能包括:ERNIE的知识增强技术、Transformers的多任务统一接口、SymSpell的高效拼写纠正等。文章还提供了知识图谱构建、Rasa对

keny-大成的博客 2526

Struts与Struts2的区别

Struts与Struts2的区别

weixin_42113716的博客 489

TP4056在单节锂电池充电管理中的创新应用与电路优化

本文深入探讨了TP4056线性充电管理芯片在单节锂电池充电电路中的创新应用与优化方案。针对“边充边用”的核心挑战,文章详细解析了利用PMOS管构建智能供电切换电路的原理,实现了外部电源与电池供电的无缝、安全切换,有效杜绝了电池“边充边放”的风险。同时,提供了关键的元器件选型、PCB布局布线技巧及常见问题排查指南,为创客和硬件开发者提供了高性价比、高可靠性的锂电池电源管理实践方案。

rock5的博客 501

struts1与struts2的区别

Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点:MVC 2模型的使用、功能齐全的标签库(Tag Library)、开放源代码。但是,正所谓“没有最好,只有更好”,Struts1.x自身也有不少的缺点:需要编写的代码过多,容易引起“类爆炸”、单元测试困难。这些缺点随着Web的发展越来越明显。这就促生了St...

ie0ie0ie的专栏 585

注册“Oracle Provider for OLE DB”和创建链接服务器

注册“Oracle Provider for OLE DB”和创建链接服务器 在sql server 数据库上创建链接服务器,连接oracle数据库,访问接口需要设置为:“Oracle Provider for OLE DB”。 如果电脑上没有这个驱动,安装一个完整的Oracle11gR2程序是一个有效的方法,但这个64位版本的安装包有2个多G, 相当庞大,如果仅仅...

weixin_30760895的博客 2384

为什么你的SiC MOSFET仿真不准?可能是离子注入的‘沟道效应’在捣鬼(Silvaco BCA模块详解)

本文深入分析了SiC MOSFET仿真中离子注入沟道效应的关键影响,揭示了Silvaco BCA模块在模拟SiC晶向和角度参数时的核心设置要点。通过详细解析晶圆偏切与注入角度的等效关系,提供优化MOSFET沟道区注入仿真的五步实战方法,帮助工程师将阈值电压仿真误差从26%降低到5%以内。

weixin_26789847的博客 409

Struts2框架的基本使用

前面已经介绍过了MVC思想,Struts2是一个优秀的MVC框架,大大降低了各个层之间的耦合度,具有很好的扩展性。从本篇开始我们学习Struts2的基本用法,本篇主要包括以下内容: Struts2的下载安装 理解整个框架的运行流程 自定义实现Action 自定义配置处理结果 一、下载和安装Struts2      登录Apache官网 http://struts.apache.org/downlo

Walker_YAM 4万+

在运行opencv时出现的两个问题:AttributeError: module ‘cv2‘ has no attribute ‘gapi_wip_gst_GStreamerPipeline‘

解决了opencv的两个问题:由问题一引出 AttributeError: module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' cv2.error:OpenCV(4.1.2)C:\projects\opencvpython\opencv\modules\highgui\src\window.cpp:717:error: (-2:Unspecified error) The function is not implemented...

hu_yinghui的博客 3274

Struts与Struts2的区别(简单详细)

从发展来看Struts2继承了Struts与WebWork的MVC框架,Struts2取两者之精华,形成新的框架,但是struts2还是更多的继承了struts的设计思想,并加入了WebWork的优点。 Stuts有个核心控制器,但是只提供了一个接口,也就是execute,还要配置actionform之类的,很麻烦,所以依赖性比较强; 而Stuts2是针对拦截器开发的,也就是所谓的AOP思想,可以配置多

NetSnake_的博客 1672

用友YonSuite产品实操手把手教学(图文版)

用友YonSuite

ct341688的博客 8158

rk3588平台USB 3.0 -OAK深度相机适配方法

摘要:本文记录了OAK摄像头设备的配置与测试流程。主要内容包括:1)添加USB设备udev规则;2)拉取相关依赖库;3)安装Python3和pip;4)安装项目依赖;5)安装FFmpeg工具;6)测试摄像头功能并转换视频格式;7)将测试视频拷贝到U盘查看。操作步骤涵盖了从设备驱动配置到功能测试的完整流程,提供了详细的命令行操作指引。通过该文档可快速完成OAK摄像头的环境搭建和基础功能验证。

yy_hear的博客 325

struts2框架浅析

Struts2 是一个基于 MVC 设计模式的 Web 应用框架,它本质上相当于一个servlet,在 MVC 设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互 核心: 1拦截器intercepter 2.action 3.ognl& valuestack struts2流程:   执行流程介绍 1.当通过浏览器发送一个请求 2.会被

martin_violet的博客 372

基石篇:多模态数据工程导论与核心概念

多模态数据工程不是写Python脚本处理几张图片,而是设计并构建一套系统,来规模化地生产高质量、可追溯、符合合规要求的模型就绪数据。本文将为你建立正确的数据工程思维框架,明确其在多模态AI生态中的战略地位,并为后续的深入学习奠定坚实基础。

jiaquan3011的博客 628

SSH框架--struts2浅析《一》之开发流程

struts2基础及开发流程

LY_优快云01的博客 482

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

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

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

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

SSH框架--struts2浅析《二》之配置文件

struts2配置文件详细解析

LY_优快云01的博客 409

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

框架学习总结

框架学习0-框架是什么以及框架怎么学框架学习1-struts1框架的结构和分析框架学习2-webWork框架和struts2框架的结构和分析框架学习3-hibernate框架的结构和分析框架学习4—ibatis框架的结构和分析框架学习5—ibatis框架和hibernate框架区别分析架构、框架和设计模式关系dinamic框架分析以及核心类说明DRP分层渐变MVC与三层架构区别浅析Java开发中的

luke_wang的专栏 2073

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【菜鸟学框架】——struts2结合框架分析执行流程

前提     本文基于上篇博文《【菜鸟学框架】——Struts2快速上手》基础,利用文章中的demo分析struts2的执行流程,目的解决初学者开始认为的配置复杂。小编如果理解偏颇之处,欢迎各位尽情拍砖!!! 问题     上篇文章讲到demo1.jsp跳转demo2.jsp之后的访问路径,本文就这个路径开始说起 http://localhost:8888/struts01day/Stru

漫漫长途,终有回转;余味苦涩,终有回甘 598

Struts2 浅析 Servlet 与 Struts2

Struts2 框架的意义 • 更便捷的开发   1.自动封装表单提交数据:属性驱动、模型驱动 属性驱动:表单中提交的数据,无需 request.getparameter 方法,数据自动置于属性之中,可以直接使用。 模型驱动:表单提交的数据提交到实体类对象之中,只需调用类方法就可以将数据持久化到数据库之中。 极大地提高了效率和简洁性。   2.便捷的实现上传文件:FileUpload

稚枭天卓 988

struts2.0与ognl浅析

struts2.0与ognl浅析(转载)(2010-02-24 11:34:17) 转载标签:struts2.0ognl杂谈分类:java<br />OGNL —— 完美的催化剂<br /><br />          为了解决数据从View层传递到Controller层时的不匹配性,Struts2采纳了XWork的OGNL方案。并且在OGNL的基础上,构建了OGNLValueStack的机制 ,从而比较完美的解决了数据流转中的不匹配性。<br /><br />          OGNL(O

zdy32032319861105的专栏 1076

Struts2源码浅析-请求处理

StrutsPrepareAndExecuteFilter doFilter方法为请求的入口 doFilter方法主要做以下几件事 一: 根据配置的常量  设置当前request 字符编码  response国际化Locale信息 二: 创建ActionContext数据对象 三: 请求处理          1.分析url   根据url 创建ActionMapping对象   这些操

天行健,君子以自强不息 8790

浅析模式与框架

现在软件设计里到处都是模式,框架。有次朋友问什么是模式?我也在学习中,就我的学习经验,给出以下小结。(注意:个人观点,仅供参考,欢迎指正。)1.什么是模式?模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,

键者天行 5656

Struts2源码浅析-ConfigurationProvider

ConfigurationProvider接口 主要完成struts配置文件 加载 注册过程 ConfigurationProvider接口定义 public interface ConfigurationProvider extends ContainerProvider, PackageProvider { } ContainerProvider接口定义 /** * 容器加载 注册

天行健,君子以自强不息 4513

浅析spring mvc和struts2的区别及个人总结

spring mvc和struts2使用后的区别总结 sturts2是基于类的设计,是类级别的拦截,每次发一次请求都会实例一个action,然后调用setter getter方法把 request中的数据注入,struts2实际上是通过setter getter方法与

nigel.wang 1万+

浅析Struts1和Struts2的Action线程安全问题

【问题描述】最近公司安排我面试Java的FreshMan,面试者一般是工作1年多点的新人(这里我就装老一下,其实我也才工作3年不到),在被问及Struts1和Struts2的Action的线程安全问题的时候,大多是支支吾吾,答不出所以然。所以在这里我整理一下我个人的理解。   【问题答案】 这是由于Servlet的工作原理产生的。我们先来简单回顾一下Servlet的生命周期“初始化->ini

virgoboy2004的专栏 1万+

Struts2原理浅析

JavaEE把MVC设计模式引入了web领域,并在此基础上机构出了称为Model2的体系。 从上图不难看出,其实在配置文件配置的拦截器顺序,在ActionInvocation调度的时候,其实是一个递归算法,每个interceptor类里面代码被invocation.invoke...

chifancui9836的博客 149

Struts2 原理浅析

JavaEE把MVC设计模式引入了web领域,并在此基础上机构出了称为Model2的体系。  从struts2.1.3版本开始,官方团队极力推荐用StrutsPrepareFilter取代原ActionContextCleanUp,用StrutsExecuteFilter取代原FilterDispatcher,并在全新的核心控制器StrutsPrepareAndExecuteFilter

heitdf 1186
下一篇: strcpy函数原型代码经典实现
scnuwilliams
博客等级 码龄10年 32粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值