Show一下我今天写的interceptor

前两天试图写一个interceptor,但不知道什么原因,出错了,今天改了一下。
package com.action.inteceptor;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.StrutsStatics;

import com.domain.SiteStatistic;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.service.SiteStatisticService;

@SuppressWarnings("serial")
public class AccessInteceptor extends AbstractInterceptor {
	
	private static Log logger = LogFactory.getLog(AccessInteceptor.class);
	private SiteStatisticService siteStatisticService;

	@Override
	public String intercept(ActionInvocation invocation) 
		throws Exception {
		logger.info("The intercept has been invoked");
		
		ActionContext context = invocation.getInvocationContext();
		HttpServletRequest request = (HttpServletRequest)context.get(StrutsStatics.HTTP_REQUEST);
		
		SiteStatistic siteStatistic = new SiteStatistic();
		siteStatistic.setAccessTime(new Date());
		siteStatistic.setDescription("test");
		siteStatistic.setIpAddress(request.getRemoteAddr());
		
		siteStatisticService.addSiteStatistic(siteStatistic);
		return invocation.invoke();
	}

	public SiteStatisticService getSiteStatisticService() {
		return siteStatisticService;
	}

	public void setSiteStatisticService(
			SiteStatisticService siteStatisticService) {
		this.siteStatisticService = siteStatisticService;
	}

}


   下面是我的Spring的配置文件,但有个问题,Struts2的Action是每次请求都会产生一个,所以我们要设置bean为prototype,不能为单例,但不知道inteceptor要不要设置,感觉它是一个无状态的Bean,故我将它设置成prototype. 不知道我这里设置的对不对,请谁给我解释一下。
<bean id="accessInteceptor" class="com.action.inteceptor.AccessInteceptor" >
			<property name="siteStatisticService">
				<ref bean="siteStatisticService"/>
			</property>
	  </bean>

下面是struts2的配置文件:
<package name="struts2" extends="struts-default">
		<interceptors>
			<interceptor name="accessInteceptor" class="accessInteceptor" />
			<interceptor-stack name="accessInteceptorStack">
				<interceptor-ref name="accessInteceptor" />
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>
		</interceptors>
		
		
		<action name="testAccess" class="testSiteStatisticAction">
			<interceptor-ref name="accessInteceptorStack" />
			<result name="success">index.jsp</result>
		</action>
		
	</package>



你可能感兴趣的:(apache,spring,bean,jsp,prototype)