您的位置:

Struts2升级至2.5.30

一、新特性

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的新特性和性能提升,从而提供更好的服务。