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

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

西门子机床数据采集实战:从828D到840DSL的CNC设备联网与实时监控

本文深入探讨了西门子机床数据采集的实战方案,重点解析了从828D到840DSL等CNC设备如何实现免授权、低成本联网与实时监控。文章通过对比不同型号系统的数据接口差异,提供了详细的配置步骤、核心数据点清单以及避坑指南,旨在帮助工厂技术人员经济高效地挖掘机床数据价值,提升生产管理效率。

weixin_29181861的博客 1327

struts2 性能优化

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

hacker5077的专栏 266

音频DSP开发中的‘隐藏关卡’:那些SigmaStudio未公开的模块计算秘籍

本文深入探讨音频DSP开发中SigmaStudio未公开的模块计算秘籍,重点解析动态范围控制、均衡器参数映射和混响算法优化等核心模块计算公式。通过实际案例揭示如何利用这些非官方技巧提升音频质量与系统性能,为ADI DSP开发者提供宝贵的实战经验。

water的专栏 911

struts2的性能优化

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

水神 2532

5分钟搞定!Unity中Matcap玻璃材质快速实现(含免费贴图资源)

本文详细介绍了在Unity中快速实现Matcap玻璃材质的方法,从技术原理到实战操作,包括Shader编写、参数调节和性能优化。通过Matcap技术,开发者可以高效创建逼真玻璃效果,特别适合移动端和快速迭代项目。文章还提供了免费贴图资源和进阶优化技巧,帮助提升视觉效果和运行效率。

a1b2c的博客 219

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

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

【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘

虚拟化平台安装好之后,一般情况下,只有一个硬盘在工作,其他的外接硬盘(我的只有一个ssd硬盘,其他的均是usb外接,SATA接口的硬盘是否这样我暂时不清楚哈)没有在工作,但是一个硬盘明显不够我们使用的,所以我们需要去挂载外接的硬盘来扩容。...

Rubik Blog 4834

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

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

weixin_34408717的博客 385

安卓新奇玩机工具全攻略___联发科MTK v6 限时免费 刷写固件工具操作

摘要:该文介绍一款限时免费的联发科V6刷机工具,支持小米、Vivo、Moto等多品牌设备,包括红米Note14Pro等机型(Klimt/Goya等代码)。工具需注册使用,提供EFS分区备份功能。作者提示工具可能触发杀毒警报,强调禁止非法用途,并说明部分联网工具可能失效。

小马哥的专栏 1316

AUTOSAR进阶图解==>AUTOSAR_SWS_CANNetworkManagement

本文介绍了AUTOSAR架构中的CAN网络管理(CanNm)模块,主要内容包括: 模块概述:CanNm是协调CAN网络节点状态转换的基础组件,采用去中心化设计,通过周期性发送网络管理PDU保持网络活跃状态,支持网络唤醒、睡眠和部分网络功能。 架构设计:CanNm位于AUTOSAR中间层,连接上层通信管理器(ComM)和底层CAN接口(CanIf),包含状态管理、PDU处理和定时器管理等子组件。 状态机设计:定义了三种主要模式(总线睡眠、准备睡眠和网络模式)及其转换逻辑,网络模式又包含重复消息、正常操作和准备

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2040

Struts2框架性能优化

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

q369535242的博客 165

DeepSeek如何构建可扩展的 AI 驱动交易系统,基于 MetaTrader 5 与 Python 利用先进的数据处理、机器学习和容器化部署来优化算法交易。

MT5 Python API 架构设计分为三层:通信层:利用异步消息传递(例如 ZeroMQ 或标准套接字编程)支持每秒数万个数据请求。转换层: C++ 动态库有效地将 MT5 命令转换为 Python 对象(反之亦然),从而优化速度和内存使用率。接口层:提供Pythonic API,封装了所有终端功能,包括:1)实时价格订阅(滴答或秒级更新)2)历史数据检索(从M1到更高的时间范围)3)订单流监控(交易详情和市场深度)4)策略执行引擎(用于算法交易)

iCloudEnd的博客 1379

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

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

gitblog_00724的博客 383

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ssm框架搭建

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

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

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

weixin_29224589的博客 242

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

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

binyao02123202的专栏 5498

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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、付费专栏及课程。

余额充值