- 浏览: 717422 次
- 性别:
- 来自: 上海
最新评论
-
A741841403:
附件怎么看不到了呢?
介绍一个PDF的生成方案 -
chunguang_yao:
写得非常好
《Struts2技术内幕》 新书部分篇章连载(一)—— 如何学习开源框架 -
su_chunlong:
rrredriver 写道极赞的文章,感谢楼主!有一个问题想请 ...
SpringMVC深度探险(三) —— DispatcherServlet与初始化主线 -
qq_32671287:
...
SpringMVC深度探险(一) —— SpringMVC前传 -
shenghuorulan:
看的好爽,可不可以这么笼统的概括一个框架的学习过程1,框架要解 ...
SpringMVC深度探险(二) —— SpringMVC概览
Struts2提供了一种非常灵活的扩展方式,这种被称之为plugin的扩展方式与Eclipse或者Firefox的plugin具备相同的概念,通过独立于主体之外的程序,来扩展或者增强主体的自身功能。
无疑,plugin的扩展方式是当前最为流行,也最为合理的一种扩展方式。通过plugin,你可以扩展、替换Struts2中的某些功能点,你也可以加入自己的实现类,从而使得Struts2具备新的功能。而plugin的方式也使得任何的功能扩展,都与Struts2的主体程序保持独立性。也使得任何人都可以按照自己的意愿去实现自己的plugin。
plugin的方方面面
依赖关系
这段摘自Struts2自身reference的描述已经比较清晰的告诉我们:Struts2的plugin为Struts2的主程序本身提供额外的功能支持。所以plugin本身是依赖于Struts2的主程序,也就是struts-core.jar。当然,针对某个特定功能的plugin可能还会有其他的library的依赖,不过这些依赖绝不应该影响到Struts2主程序本身。但是,不同的plugin之间,互相之间不应该形成依赖。
表现形式
很显然,Struts2的plugin以JAR包的形式存在。
安装使用
如果你要获得某个plugin的功能支持,你只需要将plugin的JAR包放到classpath下即可,同时别忘记了plugin自身所依赖的JAR包。
构成要素
清楚的不要再清楚了。plugin的内部需要一个名为struts-plugin.xml的文件,这个文件与struts.xml的格式相同。在这个文件中,可以对这个plugin对Struts2的扩展点进行配置,而这些扩展点包含上面提到的三种不同的类型。
运行机制
这段话也摘自Struts2自身的reference,它其实已经深刻的描述了Struts2内部是如何处理plugin的。从这里,我们也可以看到plugin之所以能够以JAR包的形式如此简单的对Struts2自身进行扩展,其核心原因在于Struts2会在系统启动的时候load所有自身以及plugin的配置文件,并且根据这些配置文件来决定Struts2运行期到底具备何种特性。
从这些话中,我们实际上也可以挖掘出来很多东西:
1. 位于struts-core.jar包内部的struts-default.xml永远会被先加载,从而保证Struts2具备许多默认的行为方式。
2. 所有的plugin互相之间是平等的,所以他们互相之间不应该存在依赖关系。同时,Struts2在系统启动时加载plugin的配置文件并没有特定的顺序。
3. Struts2最后会加载位于你自身程序classpath下的名为struts.xml的文件。所以,我见到论坛上有很多朋友问类似这样的问题,都可以迎刃而解了:
1)struts2默认的配置文件是不是只能叫"struts.xml"? ———— 是
2)struts2默认的配置文件是不是只能放在classpath根目录下? ———— 是
不过,struts2提供了完善的配置文件管理机制,所以,你可以在struts.xml中通过extends方式定义任何你需要覆盖其默认行为的配置方式,当然也可以通过import等方式将配置文件分开。
Struts2的扩展点
上面我们看到了通过plugin,可以对Struts2的许多默认行为进行扩展。那么Struts2的哪些行为可以进行扩展呢?在Struts2的内部,又是如何支持这些扩展的呢?
我按照我的理解,将Struts2的可扩展点分成了三类:
自定义Interceptor,Result等,对运行程序进行扩展
自定义的Interceptor和Result非常简单,只需要分别实现XWork的Interceptor接口和Result接口即可。然后,在你的struts.xml中,定义这些实现类,使得他们被Struts2默认加载。对于Interceptor,你可能需要特别留心它在整个Interceptor Stack中的位置。
这类扩展本身并不涉及到Struts2内部自身的运行机制,所改变的只是Action的运行方式和运行结构,所以,这类扩展属于应用级别的扩展。
覆盖Struts2的静态变量
Struts2内部定义了很多静态变量,这些静态变量定义了Struts2许多的默认行为。这些静态变量可以以多种不同的方式定义。下面的来自于Struts2 Reference的例子展示了在不同的的文件中定义这些静态变量。
这是在struts.xml中进行定义:
这是在struts.properties中进行定义:
这是在web.xml中进行定义:
所有的这些定义都会被Struts2接受并作为参数改变Struts2的默认行为。不过,在Struts2启动的时候,会按照一定的顺序按文件进行加载。
Struts2的reference告诉我们,Struts2默认按照上面的顺序去加载所有的静态变量的值,并且允许后加载的定义覆盖之前的定义。
由于我们无法修改struts-default.xml和struts-plugin.xml中的定义、而struts.xml通常又被用于放置应用程序相关的一些配置、与此同时,为了保持web.xml的独立性,所以,我们在这里可以总结出一条最佳实践来:把你自定义需要加载的静态变量定义或者需要覆盖struts默认的静态变量的定义尽量放在struts.properties中。这样就可以使得你的配置变得更加清晰。
覆盖Struts2或者XWork自身的接口实现,替换默认行为机制
无论是Struts2还是XWork,都是面向接口编程的框架(请读者在读完这段后,自行理解面向接口的好处)。而这些定义的接口,我们可以编写自己的实现类实现这些接口,从而替换Struts的默认行为机制。
在Struts2的Reference中,也指出了一些Struts2的接口扩展点,请参考下面的链接:http://struts.apache.org/2.0.14/docs/plugins.html
在这里,我想提出的是,上面的链接其实只是列出了Struts2的一些可扩展接口,除此之外,还有XWork的很多接口也具备可扩展性。所以,我们还可以参考XWork的相关配置文件,寻找更多的扩展点,这些就留给读者自行去研究了。
在之后的章节,也会根据具体的实例进行讲解,如何扩展这些接口,从而替换Struts2的默认行为。
Struts2常见的plugin
按照Struts2的reference中的指示,其实许多常见的Struts2的扩展功能都是通过plugin来实现的,而这些常见的plugin已经由很多先辈贡献出来,并且作为Struts2的分发包的一部分共同发布,所以,其实你可以在Struts2的发布包中找到这些plugin以及他们的源码进行学习。
当然,你也可以自己实现自己的plugin。有很多的Struts2的plugin就不是hosting在apache上的,但是在apache的plugin的列表中,我们可以找到他们:
http://cwiki.apache.org/S2PLUGINS/home.html
面对这些纷繁复杂的plugin,许多程序员可能会不知所措。所以我在这里对plugin进行了简单的分类,并且列出一些典型的plugin,提供给大家进行学习:
1. 框架整合类
这类的plugin提供了Struts2与其他许多开源框架的整合方式。所以,那些在论坛上提问Struts2与Spring怎么整合、Struts2与DWR怎么整合的朋友,不妨先看看这些plugin的说明,试着跑一下这些plugin的例子,或许你会很有收获。
Spring Plugin: http://cwiki.apache.org/S2PLUGINS/spring-plugin.html
Guice Plugin:http://cwiki.apache.org/S2PLUGINS/guice-plugin.html
JRuby Plugin: http://cwiki.apache.org/S2PLUGINS/jruby-plugin.html
2. 简化配置类
这类的plugin的主旨是为了简化Struts2原有的配置结构,这些简化可能包含使用CoC的方式省略XML配置,使得Struts2支持Restful等等。不过这类的plugin中许多都会涉及到Struts2比较底层的内部实现,所以使用的时候请大家慎重选择。
Codebehind Plugin:http://cwiki.apache.org/S2PLUGINS/codebehind-plugin.html
SmartURLs plugin:http://cwiki.apache.org/S2PLUGINS/smarturls-plugin.html
Convention Plugin:http://cwiki.apache.org/S2PLUGINS/convention-plugin.html
3. 页面装饰类
这类plugin没什么好说的,是为了整合类似Tiles或者Sitemesh的框架,提供一个良好的页面结构化的环境整合。
Sitemesh Plugin:http://cwiki.apache.org/S2PLUGINS/sitemesh-plugin.html
Tiles Plugin:http://cwiki.apache.org/S2PLUGINS/tiles-plugin.html
4. 功能扩展类
这类的plugin最为丰富,包含了各种各样的额外功能扩展,例如整合JFreechart做图表整合输出、整合Open Flash Chart做Flash样式的报表输出、整合JasperReport做PDF输出等等。
JFreeChart Plugin:http://cwiki.apache.org/S2PLUGINS/jfreechart-plugin.html
JasperReports Plugin:http://cwiki.apache.org/S2PLUGINS/jasperreports-plugin.html
Connext Graph Plugin:http://cwiki.apache.org/S2PLUGINS/connext-graph-plugin.html
在之后的章节中,我会挑选其中几个觉有代表性的plugin做详细的分析和说明。
无疑,plugin的扩展方式是当前最为流行,也最为合理的一种扩展方式。通过plugin,你可以扩展、替换Struts2中的某些功能点,你也可以加入自己的实现类,从而使得Struts2具备新的功能。而plugin的方式也使得任何的功能扩展,都与Struts2的主体程序保持独立性。也使得任何人都可以按照自己的意愿去实现自己的plugin。
plugin的方方面面
依赖关系
Struts2 Reference 写道
Plugins are not loaded in any particular order. Plugins should not have dependencies on each other. A plugin may depend on classes provided by Struts Core, but it should not depend on classes loaded by another plugin.
这段摘自Struts2自身reference的描述已经比较清晰的告诉我们:Struts2的plugin为Struts2的主程序本身提供额外的功能支持。所以plugin本身是依赖于Struts2的主程序,也就是struts-core.jar。当然,针对某个特定功能的plugin可能还会有其他的library的依赖,不过这些依赖绝不应该影响到Struts2主程序本身。但是,不同的plugin之间,互相之间不应该形成依赖。
表现形式
Struts2 Reference 写道
A Struts 2 plugin is a single JAR that contains classes and configuration that extend, replace, or add to existing Struts framework functionality.
很显然,Struts2的plugin以JAR包的形式存在。
安装使用
Struts2 Reference 写道
A plugin can be installed by adding a JAR file to the application's class path, in addition to the JAR files to fulfill whatever dependencies the plugin itself may have.
如果你要获得某个plugin的功能支持,你只需要将plugin的JAR包放到classpath下即可,同时别忘记了plugin自身所依赖的JAR包。
构成要素
Struts2 Reference 写道
To configure the plugin, the JAR should contain a struts-plugin.xml file, which follows the same format as an ordinary struts.xml file.
Since a plugin can contain the struts-plugin.xml file, it has the ability to:
* Define new packages with results, interceptors, and/or actions
* Override framework constants
* Introduce new extension point implementation classes
Since a plugin can contain the struts-plugin.xml file, it has the ability to:
* Define new packages with results, interceptors, and/or actions
* Override framework constants
* Introduce new extension point implementation classes
清楚的不要再清楚了。plugin的内部需要一个名为struts-plugin.xml的文件,这个文件与struts.xml的格式相同。在这个文件中,可以对这个plugin对Struts2的扩展点进行配置,而这些扩展点包含上面提到的三种不同的类型。
运行机制
Struts2 Reference 写道
The framework loads its default configuration first, then any plugin configuration files found in others JARs on the classpath, and finally the "bootstrap" struts.xml.
1. struts-default.xml (bundled in the Core JAR)
2. struts-plugin.xml (as many as can be found in other JARs)
3. struts.xml (provided by your application)
Since the struts.xml file is always loaded last, it can make use of any resources provided by the plugins bundled with the distribution, or any other plugins available to an application.
1. struts-default.xml (bundled in the Core JAR)
2. struts-plugin.xml (as many as can be found in other JARs)
3. struts.xml (provided by your application)
Since the struts.xml file is always loaded last, it can make use of any resources provided by the plugins bundled with the distribution, or any other plugins available to an application.
这段话也摘自Struts2自身的reference,它其实已经深刻的描述了Struts2内部是如何处理plugin的。从这里,我们也可以看到plugin之所以能够以JAR包的形式如此简单的对Struts2自身进行扩展,其核心原因在于Struts2会在系统启动的时候load所有自身以及plugin的配置文件,并且根据这些配置文件来决定Struts2运行期到底具备何种特性。
从这些话中,我们实际上也可以挖掘出来很多东西:
1. 位于struts-core.jar包内部的struts-default.xml永远会被先加载,从而保证Struts2具备许多默认的行为方式。
2. 所有的plugin互相之间是平等的,所以他们互相之间不应该存在依赖关系。同时,Struts2在系统启动时加载plugin的配置文件并没有特定的顺序。
3. Struts2最后会加载位于你自身程序classpath下的名为struts.xml的文件。所以,我见到论坛上有很多朋友问类似这样的问题,都可以迎刃而解了:
1)struts2默认的配置文件是不是只能叫"struts.xml"? ———— 是
2)struts2默认的配置文件是不是只能放在classpath根目录下? ———— 是
不过,struts2提供了完善的配置文件管理机制,所以,你可以在struts.xml中通过extends方式定义任何你需要覆盖其默认行为的配置方式,当然也可以通过import等方式将配置文件分开。
Struts2的扩展点
上面我们看到了通过plugin,可以对Struts2的许多默认行为进行扩展。那么Struts2的哪些行为可以进行扩展呢?在Struts2的内部,又是如何支持这些扩展的呢?
我按照我的理解,将Struts2的可扩展点分成了三类:
自定义Interceptor,Result等,对运行程序进行扩展
自定义的Interceptor和Result非常简单,只需要分别实现XWork的Interceptor接口和Result接口即可。然后,在你的struts.xml中,定义这些实现类,使得他们被Struts2默认加载。对于Interceptor,你可能需要特别留心它在整个Interceptor Stack中的位置。
这类扩展本身并不涉及到Struts2内部自身的运行机制,所改变的只是Action的运行方式和运行结构,所以,这类扩展属于应用级别的扩展。
覆盖Struts2的静态变量
Struts2内部定义了很多静态变量,这些静态变量定义了Struts2许多的默认行为。这些静态变量可以以多种不同的方式定义。下面的来自于Struts2 Reference的例子展示了在不同的的文件中定义这些静态变量。
这是在struts.xml中进行定义:
<struts> <constant name="struts.devMode" value="true" /> ... </struts>
这是在struts.properties中进行定义:
struts.devMode = true
这是在web.xml中进行定义:
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> <init-param> <param-name>struts.devMode</param-name> <param-value>true</param-value> </init-param> </filter> ... </web-app>
所有的这些定义都会被Struts2接受并作为参数改变Struts2的默认行为。不过,在Struts2启动的时候,会按照一定的顺序按文件进行加载。
Struts2 Reference 写道
Constants can be declared in multiple files. By default, constants are searched for in the following order, allowing for subsequent files to override previous ones:
1. struts-default.xml
2. struts-plugin.xml
3. struts.xml
4. struts.properties
5. web.xml
1. struts-default.xml
2. struts-plugin.xml
3. struts.xml
4. struts.properties
5. web.xml
Struts2的reference告诉我们,Struts2默认按照上面的顺序去加载所有的静态变量的值,并且允许后加载的定义覆盖之前的定义。
由于我们无法修改struts-default.xml和struts-plugin.xml中的定义、而struts.xml通常又被用于放置应用程序相关的一些配置、与此同时,为了保持web.xml的独立性,所以,我们在这里可以总结出一条最佳实践来:把你自定义需要加载的静态变量定义或者需要覆盖struts默认的静态变量的定义尽量放在struts.properties中。这样就可以使得你的配置变得更加清晰。
覆盖Struts2或者XWork自身的接口实现,替换默认行为机制
无论是Struts2还是XWork,都是面向接口编程的框架(请读者在读完这段后,自行理解面向接口的好处)。而这些定义的接口,我们可以编写自己的实现类实现这些接口,从而替换Struts的默认行为机制。
在Struts2的Reference中,也指出了一些Struts2的接口扩展点,请参考下面的链接:http://struts.apache.org/2.0.14/docs/plugins.html
在这里,我想提出的是,上面的链接其实只是列出了Struts2的一些可扩展接口,除此之外,还有XWork的很多接口也具备可扩展性。所以,我们还可以参考XWork的相关配置文件,寻找更多的扩展点,这些就留给读者自行去研究了。
在之后的章节,也会根据具体的实例进行讲解,如何扩展这些接口,从而替换Struts2的默认行为。
Struts2常见的plugin
Struts2 Reference 写道
Many popular but optional features of the framework are distributed as plugins. An application can retain all the plugins provided with the distribution, or just include the ones it uses. Plugins can be used to organize application code or to distribute code to third-parties.
按照Struts2的reference中的指示,其实许多常见的Struts2的扩展功能都是通过plugin来实现的,而这些常见的plugin已经由很多先辈贡献出来,并且作为Struts2的分发包的一部分共同发布,所以,其实你可以在Struts2的发布包中找到这些plugin以及他们的源码进行学习。
当然,你也可以自己实现自己的plugin。有很多的Struts2的plugin就不是hosting在apache上的,但是在apache的plugin的列表中,我们可以找到他们:
http://cwiki.apache.org/S2PLUGINS/home.html
面对这些纷繁复杂的plugin,许多程序员可能会不知所措。所以我在这里对plugin进行了简单的分类,并且列出一些典型的plugin,提供给大家进行学习:
1. 框架整合类
这类的plugin提供了Struts2与其他许多开源框架的整合方式。所以,那些在论坛上提问Struts2与Spring怎么整合、Struts2与DWR怎么整合的朋友,不妨先看看这些plugin的说明,试着跑一下这些plugin的例子,或许你会很有收获。
Spring Plugin: http://cwiki.apache.org/S2PLUGINS/spring-plugin.html
Guice Plugin:http://cwiki.apache.org/S2PLUGINS/guice-plugin.html
JRuby Plugin: http://cwiki.apache.org/S2PLUGINS/jruby-plugin.html
2. 简化配置类
这类的plugin的主旨是为了简化Struts2原有的配置结构,这些简化可能包含使用CoC的方式省略XML配置,使得Struts2支持Restful等等。不过这类的plugin中许多都会涉及到Struts2比较底层的内部实现,所以使用的时候请大家慎重选择。
Codebehind Plugin:http://cwiki.apache.org/S2PLUGINS/codebehind-plugin.html
SmartURLs plugin:http://cwiki.apache.org/S2PLUGINS/smarturls-plugin.html
Convention Plugin:http://cwiki.apache.org/S2PLUGINS/convention-plugin.html
3. 页面装饰类
这类plugin没什么好说的,是为了整合类似Tiles或者Sitemesh的框架,提供一个良好的页面结构化的环境整合。
Sitemesh Plugin:http://cwiki.apache.org/S2PLUGINS/sitemesh-plugin.html
Tiles Plugin:http://cwiki.apache.org/S2PLUGINS/tiles-plugin.html
4. 功能扩展类
这类的plugin最为丰富,包含了各种各样的额外功能扩展,例如整合JFreechart做图表整合输出、整合Open Flash Chart做Flash样式的报表输出、整合JasperReport做PDF输出等等。
JFreeChart Plugin:http://cwiki.apache.org/S2PLUGINS/jfreechart-plugin.html
JasperReports Plugin:http://cwiki.apache.org/S2PLUGINS/jasperreports-plugin.html
Connext Graph Plugin:http://cwiki.apache.org/S2PLUGINS/connext-graph-plugin.html
在之后的章节中,我会挑选其中几个觉有代表性的plugin做详细的分析和说明。
评论
5 楼
men_clslji
2013-11-19
我是在想struts2怎样把Action给spring管理而看到你的这篇博文的,
想去仔细的了解一下,于是搜索了下看有没有人已对此有介绍,
看后发现没有再去发博文的必要,但一定会亲自了解一下,并分析几个已存在的plugin.
但你说到要在后续中要介绍几个有代表性的plugin来说明其作用,但我没有看到.
想去仔细的了解一下,于是搜索了下看有没有人已对此有介绍,
看后发现没有再去发博文的必要,但一定会亲自了解一下,并分析几个已存在的plugin.
但你说到要在后续中要介绍几个有代表性的plugin来说明其作用,但我没有看到.
4 楼
lucky16
2009-10-12
马上开始学习struts2.X了,
算是给我好好的预习了一下啊~
算是给我好好的预习了一下啊~
3 楼
energykey
2009-10-09
标题很虎啊~
2 楼
fansfirst2008
2009-09-29
受人以渔!感谢分享!
1 楼
deepsea0001
2009-03-08
明白了很多东西。
发表评论
-
《Struts2技术内幕》 新书部分篇章连载(十)—— XWork概览
2012-01-29 14:43 7428第7章 别具匠心 —— XWo ... -
《Struts2技术内幕》 新书部分篇章连载(九)—— 强大的OGNL
2012-01-29 13:17 5118第6章 灵丹妙药 —— OGN ... -
《Struts2技术内幕》 新书部分篇章连载(八)—— XWork容器概览
2012-01-29 11:56 4722第5章 生命之源 —— XWork中的容器 对象的生命周期管 ... -
Struts2的一些不尽人意的地方,兼答hantsy
2012-01-06 10:21 4782hantsy 写道 在 Webwork 合并到Apache S ... -
《Struts2技术内幕》 新书部分篇章连载(七)—— ThreadLocal模式
2012-01-05 14:39 14759第4章 源头活水 —— Str ... -
《Struts2技术内幕》 新书部分篇章连载(六)—— 框架的本质
2012-01-05 14:02 4861第2章 固本清源 —— Web ... -
《Struts2技术内幕》自评 —— 尚未完成的话题
2011-12-30 11:11 4217此文接我另外一篇博客:新书上市:《Struts2技术内幕》 ... -
新书上市:《Struts2技术内幕》
2011-12-26 14:28 10567我的新书《Struts2技术内 ... -
《Struts2技术内幕》 新书部分篇章连载(四)—— 核心分发器
2011-10-27 20:15 75499.2核心分发器 —— Dispa ... -
《Struts2技术内幕》 新书部分篇章连载(五)—— 请求响应哲学
2011-10-27 20:01 14067第7章 别具匠心 —— XWork设计原理 众所周知,现代电 ... -
《Struts2技术内幕》 新书部分篇章连载(三)—— 多视角透析Struts2
2011-10-27 19:09 88443.3 多视角透析Struts2 Str ... -
《Struts2技术内幕》 新书部分篇章连载(一)—— 如何学习开源框架
2011-10-27 18:40 162042.6 如何学习开源框架 ... -
《Struts2技术内幕》 新书部分篇章连载(二)—— 面向对象浅谈
2011-10-26 19:46 9736第2章 固本清源 —— Web ... -
《Struts2技术内幕》 新书样章和导读
2011-10-27 20:40 5076由于本书尚未出版,我 ... -
忘记李刚,一步一步跟我学Struts2 —— 标签库,永恒的争论话题
2009-02-08 22:52 7668专栏地址:http://www.iteye ... -
忘记李刚,一步一步跟我学Struts2 —— Result机制,让视图更丰富
2009-02-04 23:56 12661专栏地址:http://www.iteye.com/wiki/ ... -
忘记李刚,一步一步跟我学Struts2 —— 拦截器详解
2009-02-01 12:49 10858专栏地址:http://www.iteye.com/wiki/ ... -
忘记李刚,一步一步跟我学Struts2 —— MVC框架的困惑
2009-01-21 11:43 10224专栏地址:http://www.iteye.com/wiki/ ... -
忘记李刚,一步一步跟我学Struts2 —— Struts2配置详解
2009-01-19 10:06 6358专栏地址:http://www.iteye.com/wiki/ ... -
忘记李刚,一步一步跟我学Struts2 —— Struts2中的Action
2009-01-15 15:02 7113专栏地址:http://www.iteye.com/wiki/ ...
相关推荐
在Java Web开发领域,Struts2 是一个应用广泛的框架,它作为 Apache 基金会下的一个项目,是继 Struts 1 ...通过深入理解Struts2 的架构和工作原理,开发者可以更好地利用这个框架来构建稳定、安全、高效的企业级应用。
Struts2是一个基于MVC设计模式的Web应用框架,它起源于WebWork2,并在其基础上进行发展和优化。Struts2的核心是建立在XWork框架...学习Struts2,不仅可以理解MVC框架的基本原理,还能深入掌握现代Web开发中的最佳实践。
struts2-json-plugin,Struts JSON插件
赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...
Struts2-dojo-plugin-2.2.1.jar 是一个针对Apache Struts2框架的扩展插件,主要用于增强Struts2应用的用户界面交互性,特别是通过集成Dojo JavaScript库来提供丰富的AJAX功能和用户体验。这个插件是Struts2与Dojo ...
`struts2-json-plugin`是Struts2的一个插件,它使得Struts2能够处理JSON请求和响应,无需额外的配置或库。这个插件不仅包含了源码,还包含了必要的配置文件和类,使得开发者可以深入理解其工作原理并进行自定义扩展...
struts2-ssl-plugin-1.2.1.jar
Struts2-Spring-Plugin-2.2.1.jar 是一个专门为 Struts2 框架与 Spring 框架集成而设计的插件。这个插件的主要目的是简化在基于Struts2的应用程序中整合Spring的功能,如依赖注入(DI)、AOP(面向切面编程)以及...
Struts2 JSON Plugin是针对Apache Struts2框架的一个重要组件,版本为2.3.8。这个插件主要的功能是让Struts2应用程序能够轻松地处理JSON(JavaScript Object Notation)数据格式,使得Web应用可以方便地进行JSON序列...
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
综上所述,"struts——java文件"可能包含了Action类、ActionForm(如果使用旧版本)以及其他相关辅助类的源码,通过阅读和理解这些代码,可以深入学习和掌握Struts框架的工作原理以及如何在实际项目中应用。...
core-2.5.10.1.jar,struts2-jfreechart-plugin-2.5.10.1.jar,struts2-json-plugin-2.5.10.1.jar,struts2-junit-plugin-2.5.10.1.jar,struts2-bean-validation-plugin-2.5.10.1.jar,struts2-cdi-plugin-...
- **插件示例**:struts2-spring-plugin-2.1.8.1.jar 是一个典型的插件文件,用于实现Struts2与Spring框架的整合。该插件文件通常位于Struts2发行版的lib目录下。 - 插件文件**必须包含一个名为struts-plugin.xml的...
Struts2-Spring-Plugin-2.3.4.jar 是一个专门为 Struts 2 框架和 Spring 框架整合而设计的插件,主要用于处理 Struts 2 和 Spring 之间的集成问题。在Java Web开发中,这两个框架经常一起使用,Spring 提供了依赖...
本文将深入探讨NetBeans 7.2版本中的Struts2插件,以及这些插件如何助力开发者更好地利用Struts2进行Web应用开发。 首先,我们来看标题"NetBeans7.2_struts2_plugin",这表明我们要讨论的是在NetBeans 7.2版本中...
struts2 json plugin jar包
struts2-struts1-plugin-2.1.6.jar
`struts2-sitemesh-plugin-2.2.1.1.jar`是Struts2框架与Sitemesh集成的插件,使得Struts2应用能够利用Sitemesh的功能来美化和规范化页面布局。 **Struts2框架** Struts2的核心功能包括动作映射、结果处理、数据绑定...
Struts2.1引入了Convention Plugin,以实现框架的零配置目标,替代之前的Codebehind Plugin。这个插件通过约定优于配置的原则简化了Struts2的应用开发,减少了XML配置文件的需求。以下是对Convention Plugin主要特性...
struts2-dojo-plugin-2.3.4 jar 日期控件的jar包 需要的自行下载