一、新特性
Struts2作为一个开源Web应用程序框架,不断地随着时间的推移更新和完善。Struts 2.5.30是Struts官方发布的一个典型版本,在Struts历史中具有重要意义。这个版本具有以下四个新特性:
1.更好的消息处理
在之前的Struts2版本中,很多开发者反映难以处理返回json & xml消息。为解决此问题,Struts2.5.30新增了一个DefaultMessageWriterInterceptor类以支持更好的消息处理,并且进一步提高了json和xml消息的处理能力。
2.闭合回话功能更新
在Struts2.5.30版本中,默认开启了闭合回话功能,可以有效提高Web应用程序中的安全性。下面是一个完整代码示例,这里假设我们使用了Struts的默认栈:
<!-- struts.xml --> <action name="login" class="com.proudsmart.action.LoginAction"> <result name="success" type="redirectAction">dashboard</result> <result name="error">/login.jsp</result> <interceptor-ref name="defaultStack"> <param name="sessionManagement" value="false"/> </interceptor-ref> </action>
3.跳转更新
在Struts2.5.30版本中,新增了多个Result类型以支持更灵活的跳转。这样,开发者就不需要再自己编写方法来实现某些跳转方式,并且可以有效地减少代码量。
4.插件更新
Struts2.5.30更新了多个插件以支持更好的应用程序开发,例如:struts2-spring-plugin、struts2-convention-plugin、struts2-junit-plugin 等。这些插件的升级,可以使Struts2的应用程序更易于构筑和调试。
二、性能提升
Struts 2.5.30带来了多项性能提升:
1. 优化访问
Struts2.5.30 中进一步优化了生成页面的速度。对于一个标准的Struts2应用程序,Smarty(Struts与FreeMarker、JSP和Velocity相比的一个模板引擎)的访问速度提高了4%以上。
2. 优化日志处理
Struts2.5.30中优化了日志处理。开发者可以通过StrutsActionProxyFactory类,仅记录需要的日志,从而提高了记录和分析日志的效率,避免了无用日志的额外处理时间。
3. 优化代码结构
Struts2.5.30中,针对一些常用请求做了细微优化,使得Struts的代码结构更加紧凑,同时提高了 Struts的执行效率。
三、升级至2.5.30的步骤
将现有的应用程序从旧版本的Struts2升级至2.5.30,可以得到上述的新特性和性能提升。接下来,我们就来介绍如何将原有的Struts2应用程序升级至2.5.30。
1.导入新版本的Struts2 jar包
首先,将原有的Struts2 jar包替换为Struts 2.5.30的jar包,需要正确地配置classpath,如果将原有的旧jar包和新jar包混在一起,可能会导致类加载失败和程序异常。下面是替换jar包的代码示例:
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.30</version> </dependency>
2.修改web.xml配置文件
Struts2的核心过滤器会自动注册到web容器中。在Web应用程序中的web.xml文件中,需要在现有的过滤器链中,替换旧版的Struts2过滤器。下面是修改web.xml的代码示例:
<!-- web.xml --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.DispatcherFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3.修改struts.xml配置文件
Struts2.5.30相比于旧版的Struts2,在struts.xml配置文件中增加了更多的配置属性(例如,闭合会话功能)。所以,需要对struts.xml文件进行必要的修改以支持新版本的Struts。下面是修改struts.xml的代码示例:
<!-- struts.xml --> <struts> <constant name="struts.devMode" value="false"/> <constant name="struts.configuration.xml.reload" value="false"/> <constant name="struts.i18n.encoding" value="UTF-8"/> <constant name="struts.custom.i18n.resources" value="message"/> <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/> <constant name="struts.enable.SlashesInActionNames" value="true"/> <constant name=”struts.convention.action.suffix” value=”Action”/> <constant name=”struts.convention.action.mapAllMatches” value=”true”/> <constant name=”struts.convention.package.locators” value=”controllers”/> <action name="login" class="com.proudsmart.action.LoginAction"> <result name="success" type="redirectAction">dashboard</result> <result name="error">/login.jsp</result> <interceptor-ref name="defaultStack"> <param name="sessionManagement" value="false"/> </interceptor-ref> </action> </struts>
四、总结
Struts 2.5.30是一个典型的版本,具有新特性和性能提升。应用程序升级至此版本并不困难,只需按照上面的步骤正确地进行即可。这样,应用程序就可以充分利用Struts2的新特性和性能提升,从而提供更好的服务。