提高SPRING2.X与STRUTS2的部份性能

Struts2在与Spring2.X整合后,做服务器验证时,由于Spring2.X的singleton,所以会反复填充FieldError。但这不是我们想要的结果。而网上有些设定单个BEAN的生命周期为request,问题会解决,但会引起性能上的问题。

 

编写网上的方法,写一个拦截器和一些配置来完成问题的解决

 

1、编写拦截器

 

package Interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class ClearFiledErrorInterceptor extends AbstractInterceptor {

	@Override
	public String intercept(ActionInvocation arg0) throws Exception {
		ActionSupport actionsupport = (ActionSupport)arg0.getAction();
		actionsupport.clearErrorsAndMessages();
		String result = arg0.invoke();
		return result;
	}
}
 

 

2、对web.xml进行配置

 

    <listener>
    	<listener-class>org.springframework.web.context.request.RequestContextListener </listener-class>
	</listener> 
 

3、对Struts.xml在package包下加入以下配置

 

		<interceptors>
			<interceptor name="clearFieldError" class="Interceptor.ClearFiledErrorInterceptor"></interceptor>
			<interceptor-stack name="myDefaultInterceptor">
				<interceptor-ref name="clearFieldError"></interceptor-ref>
				<interceptor-ref name="defaultStack"></interceptor-ref>
			</interceptor-stack>
			
			
		</interceptors>
	
		<default-interceptor-ref name="myDefaultInterceptor"></default-interceptor-ref>
		
 

 

4、最后将每个action类的生命周期设置为session,表示为一个session只创建一个action实例,代码片段:

<bean id="Test" class="action.base.TestAction" scope="session"></bean>
 

 

 

 

 

 

你可能感兴趣的:(spring,bean,Web,xml,struts)