<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Apache_Struts</id>
	<title>Apache Struts - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Apache_Struts"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Apache_Struts&amp;action=history"/>
	<updated>2026-06-27T02:09:53Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Apache_Struts&amp;diff=2350353&amp;oldid=prev</id>
		<title>2024年11月25日 (一) 00:28 imported&gt;Iokseng</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Apache_Struts&amp;diff=2350353&amp;oldid=prev"/>
		<updated>2024-11-25T00:28:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Refimprove|time=2023-11-30T19:35:44+00:00}}&lt;br /&gt;
{{noteTA|G1=IT}}&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name                   = Apache Struts 2&lt;br /&gt;
| logo                   = [[File:Apache Struts 2 logo.svg|frameless|Apache Struts Logo]]&lt;br /&gt;
| developer              = [[Apache软件基金会]]&lt;br /&gt;
| released               = {{Start date|2006|10|10}}&lt;br /&gt;
| operating system       = [[跨平台]]&lt;br /&gt;
| programming language   = [[Java]]&lt;br /&gt;
| platform               = [[跨平台]]（[[Java虚拟机|JVM]]）&lt;br /&gt;
| license                = [[Apache许可证]] 2.0&lt;br /&gt;
| website                = {{URL|http://struts.apache.org/}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Apache Struts 2&amp;#039;&amp;#039;&amp;#039;是一个用于开发[[Java EE]][[網路應用程式]]的[[開放原始碼]]網頁應用程式架構。它利用并延伸了[[Java Servlet]] [[应用程序接口|API]]，鼓励开发者采用[[MVC]]架构。&lt;br /&gt;
&lt;br /&gt;
缘起于[[Apache Struts]]的{{tsl|en|WebWork}}框架，旨在提供相对于Struts框架的增强和改进，同时保留与Struts框架类似的结构。2005年12月，WebWork宣布WebWork 2.2以Apache Struts 2的名义合并至Struts。2007年2月第一个全发布（full release）版本释出。&amp;lt;ref&amp;gt;{{cite web |url=http://struts.apache.org/release/2.2.x/ |title=About Apache Struts 2 |deadurl=yes |archiveurl=https://web.archive.org/web/20140114170139/http://struts.apache.org/release/2.2.x/ |archivedate=2014-01-14 |accessdate=2014-04-11 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==开发目标==&lt;br /&gt;
Struts1设计的第一目标就是使[[MVC]]模式应用于web程序设计。在过去10年，Struts在更好的web应用方面所做的工作是值得肯定的。在某些方面，Struts社区注意到这一框架的局限性，所以这个活跃的社区通过对MVC运行模式的重新理解并同时引入一些新的建筑学方面的设计理念后，新的Struts2框架结构更清晰，使用更灵活方便。 &lt;br /&gt;
&lt;br /&gt;
这一新的结构包含应用逻辑的横切面拦截器，基于注释的配置以减少和去除XML形式的配置文件，功能强大的表达式语言，支持可更改、可重用UI组件的基于微MVC的标签库。Struts2有两方面的技术优势，一是所有的Struts2应用程序都是基于client/server HTTP交换协议，The Java Servlet API揭示了Java Servlet只是Java API的一个很小子集，这样我们可以在业务逻辑部分使用功能强大的Java语言进行程序设计。&lt;br /&gt;
&lt;br /&gt;
Struts 2提供了对MVC的一个清晰的实现，这一实现包含了很多参与对所以请求进行处理的关键组件，如：拦截器、OGNL表达式语言、堆栈。&lt;br /&gt;
&lt;br /&gt;
==漏洞处理手法==&lt;br /&gt;
Struts2开发组常被指漏洞修复手法不妥，要么修复后仍有可利用，要么无法修复并长期闲置。&lt;br /&gt;
&lt;br /&gt;
其中包括一个由标记为S2-003的漏洞报告引发了一连串的远程执行问题，官方多次修复仍没能完全解决，甚至是报告提交者多次提交其绕过方案警醒开发组注意。&amp;lt;ref&amp;gt;{{cite web|title=Struts2漏洞频出 祸根是Apache底层代码不严谨_中小企业_比特网|url=http://smb.chinabyte.com/426/12937426.shtml|access-date=2014-08-18|archive-url=https://web.archive.org/web/20140819083306/http://smb.chinabyte.com/426/12937426.shtml|archive-date=2014-08-19|dead-url=yes}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2013年7月发布了2.3.15.1发布版，但在修复事项中公开了一段远程执行漏洞的示例代码，被黑客圈内利用，导致了中国大陆大量使用Struts2的网站被入侵。&amp;lt;ref&amp;gt;{{cite web|title=struts2高危漏洞或引发互联网安全灾难-IT168 安全专区|url=http://safe.it168.com/a2013/0718/1509/000001509368.shtml|accessdate=2014-08-18|archive-date=2014-08-19|archive-url=https://web.archive.org/web/20140819085401/http://safe.it168.com/a2013/0718/1509/000001509368.shtml|dead-url=no}}&amp;lt;/ref&amp;gt;&amp;lt;!--这个漏洞还涉及其之前众多--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
* [[Web应用框架的对比]]&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* {{Official website|http://struts.apache.org/}}&lt;br /&gt;
* [http://cwiki.apache.org/S2PLUGINS/home.html Struts 2插件登记处] {{Wayback|url=http://cwiki.apache.org/S2PLUGINS/home.html |date=20130820200801 }}&lt;br /&gt;
* [http://code.google.com/p/struts2-jquery/ Struts2 jQuery插件]{{Wayback|url=http://code.google.com/p/struts2-jquery/ |date=20140304114234 }}&lt;br /&gt;
* [http://struts2tutorial.sourceforge.net/ Struts2指南]{{Wayback|url=http://struts2tutorial.sourceforge.net/ |date=20130602221312 }}&lt;br /&gt;
* [https://web.archive.org/web/20120504003348/http://mastertheboss.com/web-interfaces/190-jboss-struts-tutorial.html 在JBoss上进行Struts开发的教程]&lt;br /&gt;
* [https://web.archive.org/web/20140201204655/http://digitalsanctum.com/2010/01/25/how-to-test-struts-2-actions-without-a-container/ 如何在没有容器的情况下进行Struts 2 Actions测试]（参考：[[Web容器]]）&lt;br /&gt;
* [http://www.javatips.net/blog/2013/07/struts-2-example/ Struts 2示例]{{Wayback|url=http://www.javatips.net/blog/2013/07/struts-2-example/ |date=20140203182449 }}&lt;br /&gt;
* [http://www.javatips.net/blog/2013/07/struts-2-validation-example/ Struts 2校验示例]{{Wayback|url=http://www.javatips.net/blog/2013/07/struts-2-validation-example/ |date=20140203064805 }}&lt;br /&gt;
* [http://www.cvedetails.com/vulnerability-list/vendor_id-45/product_id-6117/Apache-Struts.html Apache Struts漏洞]{{Wayback|url=http://www.cvedetails.com/vulnerability-list/vendor_id-45/product_id-6117/Apache-Struts.html |date=20140408154204 }}&lt;br /&gt;
* [http://www.javabeat.net/2007/05/struts-2-0-introduction-and-validations-using-annotations/ Struts 2.0校验]{{Wayback|url=http://www.javabeat.net/2007/05/struts-2-0-introduction-and-validations-using-annotations/ |date=20131004175420 }}&lt;br /&gt;
{{Application frameworks}}&lt;br /&gt;
{{apache}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Apache软件基金会|Struts]]&lt;br /&gt;
[[Category:自由跨平台軟體]]&lt;br /&gt;
[[Category:用Java編程的自由軟體]]&lt;br /&gt;
[[Category:Java企业平台|Struts]]&lt;br /&gt;
[[Category:Web应用框架|Struts]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Iokseng</name></author>
	</entry>
</feed>