struts2性能优化

Struts2性能优化拦截器编程 上述代码中,我们在拦截器的intercept方法中实现了性能优化的逻辑。首先,我们尝试从缓存中获取之前的处理结果,如果存在缓存,则直接返回结果,避免重复的处理。在上述配置中,我们定义了一个名为performanceInterceptor的拦截器,并将其添加到一个名为performanceStack的拦截器栈中。通过配置拦截器栈,我们可以将性能优化拦截器应用到Struts2应用程序中,从而提高应用程序的性能。它可以根据具体的需求,在拦截器的intercept方法中实现其他性能优化策略,如异步处理、批处理等。 阅读详情

 

前一段时间有反映说是一个使用了struts2的生产系统的页面显示速度太慢。登录后发现确实如此,于是进行了一番性能调优的研究和测试 。

    一,根据struts2官方的性能调优说明进行了一些参数的修改。

    http://struts.apache.org/2.x/docs/performance-tuning.html http://cwiki.apache.org/WW/performance-tuning.html

    Turn off logging and devMode.(关闭logging和Devmode)

    这个当然没问题,但是全部关闭logging不现实,我只是关闭了struts2相关package的logging

    Do not use interceptors you do not need.把struts.xml中不需要的interceptor统统删除

    Use the correct HTTP headers (Cache-Control & Expires)。

    不确定应该如何修改

    Copy the static content from the Struts 2 jar when using the Ajax theme (Dojo) or the Calendar tag.关于这点,后面会提到

    Create a freemarker.properties file in your WEB-INF/classes directory.照做

    Create the freemarker.properties file and add the following setting (or whatever value you deem fitting):template_update_delay=60000照做

    Enable Freemarker template caching As of Struts 2.0.10, setting the property struts.freemarker.templatesCache to true will enable the Struts internal caching of Freemarker templates. This property is set to false by default.照做

    进行上述修改后,发现页面打开的速度并没有明显的提高。

    二,此时我已经基本锁定网页打开速度慢的原因与ajax(或者说是dojo)有关。因为dojo的js库大概有450K左右,先尝试使用gzip压缩javascript,减小传输量,看能否加快页面的加载速度在Tomcat的server.xml的connector中添加如下配置,激活gzip功能compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript"进行上述修改后,发现页面打开的速度还是没有明显的提高。

    三,经过上述两个实验,觉得应该是struts2所封闭的dojo的性能问题了。于是引入JQuery. JQuery的js文件最小是55K, gzip后应该更小,页面的响应速度明显改善(一个数量级以上的提高),主要原因在于与服务器 交互的处理上极大地提升了效率。而且页面处理代码更加简洁明了。

    最后,我删除了所有的<s:head theme="ajax"/>和 <s:head/>(如果页面中加入<s:head />,那么在Struts2生成的html中后包含dojo.js),使用JQuery来完成所有的Ajax和javascript功能。

最近,继续研究了Struts2性能的调优方法,总结了一下,得出新三步曲:

4. 使用FreeMarker的最新版本2.3.13,因为在版本2.3.11中,FreeMarker针对性能进行了改进,以下是FreeMarker2.3.11的release notes:2.3.11 Date of release: 2007-12-04 This release contains several performance and usability improvements.

5. ognl2.7所称ognl2.7相对于2.6在性能上有了“显著”的提升,于是下载了2.7以及2.7所需要的javassist-3.8.0.GA.jar

其实,经过上面2个步骤,我并没有发现应用的性能有显著的改善,可能我的页面中从ValueStack中的存取操作并不是特别多,也不是特别的复杂,所以,Ognl对我的影响并不明显。

6. 最后使用了JProfiler对Tomcat进行了监控,最后发现问题在自定义模板上,我将页面的自定义模板全部删除,果然页面的响应速度有了较大的提升。

 

通过上两篇文章的研究,影响Struts2性能的原因在于Ognl的Value Stack的性能不佳。那么如果解决呢:我首先尝试使用JSF.一开始选择JSF的原因主要是:

    1、Stuts2自己提供了JSF的Plugin2、JSF是Sun作为标准提出,而且已经通过的。从Google的趋势搜索上也可以看出,搜索JSF的人在增多。

    3、JSF作为一种以组件为基础的Web Framework有其独到之处,其内建的和其他许多开源的组件使用起来相当方便、强大。当然,对于不同的应用来说也有不利之处(后面会提到),但是如果能够坚持长期使用,逐渐积累组件库的话,JSF是一个很好的选择。

    4、JSF的文档(或者说是书籍)还是比较多的。

    经过测试 使用后,发现其性能与Struts2相比确实提升不少。但是后来遇到了一个问题,所以最后还是放弃了JSF.这个问题是关于JSF的DataTable的,JSF提供的DataTable其实使用起来很方便,可定制化程度也不错,只是刚好缺少了我所希望的功能(也可能是我不知道如何实现)。我的应用中的DataTable是一个动态的结果集,也就是说输出的列是不能预先确定的,而DataTable却要求先声明好所有的DataColumn,我不知道如何解决这个问题。所以最后放弃了JSF.我的第二个选择是FreeMarker选择FreeMarker的原因是:

    1、FreeMarker是Struts2缺少的模板引擎,Struts2的标签大部分是使用FreeMarker的,使用FreeMarker的话,连Plugin都省去了。

    2、FreeMarker相对比较轻量级、因为他本身只是一个模板引擎,与JSF这样一个大而全的WebFramework相对,轻巧多了。

    3、FreeMarker的学习起来非常容易,只要把他网站上的Document过一遍,基本上就OK了。

    4、FreeMarker虽然体积小,功能还是相当强的,I18N,Converter之类的东西基本都全了,至少我所需要的功能全有。

    5、FreeMarker相当灵活,他不象JSF把底层的东西封装了以后,暴露出一些属性可以设置,如果你需要的属性不能设置,你就没有办法了。在FreeMarker你直接操作最底层的东西,拥有很大的灵活性。当然,牺牲了一些方便性,比如,要用FreeMarker生成一个下拉框,就需要较多的工作量了。

    测试 之后,使用FreeMarker的性能很不错,在大数据量操作的情况下,至少一个数量级的性能提升。

    我的最终结论,如果要在Struts2中,展示或者操作大量数据,强烈推荐使用FreeMarker.

 

Struts2.3.32:安全与性能优化的Java Web框架更新 Struts2是Apache软件基金会赞助的一个开源项目,它始于2001年的WebWork框架,并于2007年正式发布了Struts2的第一个版本。此框架是为了解决复杂企业级Web应用开发而设计的,它以MVC(模型-视图-控制器)的设计模式为核心,让开发者更高效地进行业务逻辑和用户界面的分离。性能优化是软件开发中至关重要的环节,对于框架来说尤其如此。良好的性能优化可以大幅提升用户体验,减少资源消耗。性能优化的目的是在保证系统稳定性的前提下,提高系统处理请求的效率,减少响应时间,并降低系统资源消耗。 阅读详情

相关推荐

搭建基于Eclipse的Struts2基础应用实例

Struts2是Apache软件基金会的顶级开源项目之一,它是一个基于MVC设计模式的Web应用框架。它将Web层的表示层和业务层进行分离,有助于提升代码的可维护性和可扩展性。Struts2通过拦截用户请求并将其分发到相应的业务逻辑处理组件中,简化了复杂请求的处理流程。

weixin_36122351的博客 1106

Struts2慢的原因

Struts2的慢要追溯到它的前身Webwork了,目前已知的主要原因包括:复杂的拦截器链、OGNL表达式解析、Struts2的标签等。 spring + spring JdbcTemplate + spring mvc struts2的核心是xwork,因为用到了ThreadLocal模式,所以那些Web容器中的对象会跟着当前Thread一跟到底,所以造成了struts2是很占用内存的...

iteye_4924的博客 529

Struts2框架核心Jar包清单与功能介绍

本文还有配套的精品资源,点击获取 简介:SSH(Spring、Struts2和Hibernate)是Java Web开发中常用的开源框架组合。本资源主要关注Struts2框架所需的基本jar包,这些包是构建企业级应用程序的核心。Struts2作为MVC框架,在应用中负责HTTP请求处理和业务逻辑管理。本文介绍了Struts2框架的核心jar包,包括struts2-core....

weixin_30336531的博客 980

struts2的启动故障问题。

刚开始看struts,结果出现了一些小的故障。错误提示如下的信息:严重: Dispatcher initialization failedjava.lang.RuntimeException: java.lang.reflect.InvocationTargetExceptionat com.opensymphony.xwork2.inject.ContainerImpl$MethodInject

fortheother的专栏 960

struts2项目性能调优三步曲.txt

纯属读书笔记,只是小结而已!对项目一个小点发现的自省!

从玩具车到手机充电:手把手带你用Multisim仿真Buck/Boost电路(附工程文件)

本文通过Multisim仿真软件,手把手教你搭建Buck降压电路和Boost升压电路,实现从12V到5V或3.7V到5V的电压转换。文章详细介绍了电路搭建步骤、关键波形观测技巧及常见故障排查方法,并附赠工程文件,帮助电子爱好者快速掌握电源转换技术。

weixin_29159127的博客 242

struts2 性能优化

本人文章是参照struts2官网性能优化翻译过来的,翻译错误的地方请大家指正,如果看不惯本人,就去struts2看官方文档,肯定比这边好多了! 1.关闭日志和DevMode。 DEVMODE可以重新载入配置和验证相关文件,但因为它们发生在每次请求时,该设置将完全影响你的性能。 使用日志记录时,一定要关闭日志记录(特别是Freemarker也产生了大量的日志记录),并检查在打印之前...

hacker5077的专栏 266

Python《打砖块》小游戏

Python《打砖块》小游戏!

PanDaoxi 1273

struts2的性能优化

转自:http://blog.youkuaiyun.com/rick_123/article/details/6135467 前一段时间有反映说是一个使用了struts2的生产系统的页面显示速度太慢。登录后发现确实如此,于是进行了一番性能调优的研究和测试 。     一,根据struts2官方的性能调优说明进行了一些参数的修改。     http://struts.apache.org/2.

水神 2532

详述字符集与汉字编码

字符集与字符编码是文本处理的基础概念。字符集定义字符集合(如ASCII、GB2312、Unicode),字符编码则规定字符如何存储为二进制数据。汉字编码经历了从区域化(GB2312、GBK、BIG5)到全球化(Unicode)的演进,Unicode通过UTF-8、UTF-16等编码方案实现跨语言兼容。UTF-8因兼容ASCII、节省空间且无乱码风险,成为中文互联网的主流编码。正确处理编码问题需统一标准、明确声明格式,并注意生僻字的特殊处理。

零零发不爱ai的博客 805

PX4与ROS协同仿真:从键盘控制到无人机自主飞行

本文详细介绍了如何搭建PX4与ROS协同仿真环境,实现从键盘控制到无人机自主飞行的完整流程。通过XTDrone项目整合PX4飞控、ROS通信框架与Gazebo物理引擎,逐步讲解环境配置、键盘控制实现原理,并深入剖析了迈向Offboard模式实现自主飞行的核心代码与数据流,为无人机算法开发与测试提供了安全的仿真沙盒。

weixin_29169899的博客 498

Struts2性能优化

<br />前一段时间有反映说是一个使用了struts2的生产系统的页面显示速度太慢。登录后发现确实如此,于是进行了一番性能调优的研究和测试 。<br />    一,根据struts2官方的性能调优说明进行了一些参数的修改。<br />    http://struts.apache.org/2.x/docs/performance-tuning.htmlhttp://cwiki.apache.org/WW/performance-tuning.html<br />    Turn off logging

rick_123的专栏 2137

STM32F4驱动海康工业相机实战:从PWM信号到精准触发拍照(附完整代码)

本文详细介绍了如何使用STM32F4开发板驱动海康工业相机,实现PWM信号精准触发拍照的完整方案。从硬件连接到PWM信号生成,再到相机触发配置与延迟补偿,提供了实战经验和完整代码,帮助开发者解决工业相机硬件触发中的关键问题。

weixin_33716941的博客 694

Unity WebGL构建报错unityLinker.exe与IL2cpp.exe排查全指南

在Unity开发中,WebGL平台的脚本后端强制使用IL2CPP,构建链路涉及C#转C++再编译为WebAssembly,其中unityLinker.exe负责裁剪托管程序集,IL2CPP.exe负责生成C++代码,两者任一失败都会导致“not run properly”这类构建中断。这类报错看似简单,背后却可能藏着路径非法、磁盘不足、杀毒软件误杀、缓存损坏等复杂诱因。从工具链原理出发,结合日志分析与环境排查,能快速定位根因。本文系统拆解了该报错的生成机制,给出从环境到工程再到代码的完整排查流程,并附解决方

weixin_34408717的博客 385

41页PPT | 华为业务流程架构全景视图:全业务域L1-L3级流程全案

TBD、收集和生成线索、验证机会点、TBD、管理销售授权、管理销售项目、管理销售项目群、管理合同要素/模板、验证和分发线索、标前引导、管理开票和回款、客户网络评估、管理销售评审、TBD、管理交付项目群、管理合同文档、管理结构化合同信息、跟踪和培育线索、制定并提交标书、管理合同/PO变更、客户网络规划、管理销售决策。:4.1 管理技术、服务请求、4.2管理备件、服务交付、4.3管理非技术、服务请求、4.4管理客户、投诉。:管理Idea、产生Idea、激发兴趣与协作、孵化、原型和验证、确认Idea与商业化。

zuoan1993的博客 4548

Flink 作业报错——TaskManager连接不上

Flink 作业报错——TaskManager连接不上

lm223的博客 1900

Struts2框架性能优化

  1.关闭logging和devMode 2.不要使用你不需要的拦截器(interceptors) 如果一个Action不需要全栈的拦截器的话,就使用basicStack拦截器或移除不需要的拦截器。 3.使用正确的HTTP头(缓存控制和过期时间) 当返回一个html页面的时候,要保证html页面包含正确的header,使得浏览器可以知道怎样缓存该html页面。...

q369535242的博客 165

YoloV8优化:感受野注意力卷积运算(RFAConv),效果秒杀CBAM和CA等 | 即插即用系列

感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4264

Struts2-Scan性能优化:提升扫描效率的10个技巧

Struts2-Scan是一款强大的Struts2全漏洞扫描利用工具,能够帮助安全测试人员快速发现和验证Struts2框架中的安全漏洞。对于新手用户来说,掌握一些性能优化技巧可以显著提升扫描效率,节省时间和资源。本文将分享10个实用的Struts2-Scan性能优化技巧,帮助你更高效地进行漏洞扫描。 ## 1. 合理设置扫描进程数 Struts2-Scan支持多进程并发扫描,通过调整进程数可以

gitblog_00724的博客 383

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Struts2数据库访问实战:从CRUD到性能优化

在Java Web开发中,数据库访问是构建企业级应用的核心技术环节。通过JDBC规范实现的数据持久化,需要结合连接池技术(如DBCP2)来管理数据库连接资源,这能显著提升系统性能并降低资源消耗。在MVC框架Struts2中,合理的数据库操作架构设计需要关注事务管理、SQL注入防御等关键点,特别是在高并发场景下,连接泄露检测机制尤为重要。本文以MySQL为例,详细解析了如何在Struts2中配置数据源、实现CRUD操作,并提供了事务控制与性能优化的工程实践方案,帮助开发者规避常见的数据库访问陷阱。

weixin_29224589的博客 242

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Spring,Hibernate,Struts2性能优化(一):Hibernate缓存性能优化

看到一篇不错的文章,于是转载过来. 几月前, 我接到一个银行的J2EE应用系统JSF+HIBERNATE+SPRING+WebService性能优化合同,静下心来几个月好好研究了一下J2EE 系统的关键性能优化问题,结果非常令人吃惊,提交测试后其并发运行性能得到几倍到几十倍的提高,我想把其中的一些关键技术点总结出来,与大家共享,今天就 贡献最重要的部分,HIBERNATE性能优化,以后再分别讨论JSF的分页技术,SPRING的WebServiceTemplate的应用,这些也都 是IBM

binyao02123202的专栏 5498

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Struts性能优化

在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;   The following are some tips and tricks tosqueeze the most performance out of Struts 2.   Important OGNL update   For

u010135775的专栏 591
上一篇: struts2标签和ongl表达式结合表示&&和||的写法
下一篇: struts2中session的使用
rocdream
博客等级 码龄19年 4粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值