`

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>



分享到:
评论

相关推荐

    struts2拦截器权限设置

    public class AuthInterceptor implements Interceptor { @Override public void destroy() {} @Override public void init() {} @Override public String intercept(ActionInvocation invocation) throws ...

    JAVA面试题解惑系列

    权限相关页面(add.jsp, show.jsp, qurey.jsp)** - **代码分析**:这些页面同样使用了JSP和Struts2标签库,它们包含了特定的功能提示信息及返回登录页面的链接。 - **实现效果**:只有指定用户才能访问这些页面...

    spring-mvc-showcase-master

    9. **Interceptor**:拦截器,可以预处理请求,后处理响应,实现 AOP 风格的功能,如日志记录、权限验证等。 在这个"spring-mvc-showcase-master"项目中,你可以看到各种 Spring MVC 功能的实例,例如: - **不同...

    在Struts 2中实现CRUD

    首先,我们来看一下`BookDao`类(清单1),它扮演了数据存储的角色。这个类使用`ConcurrentHashMap`作为数据存储结构,它提供了线程安全的读写操作,这对于多线程环境中的应用是非常理想的。`BookDao`包含以下方法:...

    Struts2 文件上传之文件类型 allowedTypes.txt

    &lt;result type="redirectAction" name="success"&gt;showFile ``` 在这个例子中,我们定义了一个名为`myFileUpload`的拦截器,并指定了允许上传的文件类型为所有图像文件和PDF文件。 #### 4. 文件类型与...

    rxjava-retrofit-okhttp

    这时,你可以利用RxJava的Buffer、Zip、Merge等操作符,以及Retrofit的CallAdapter和Interceptor功能来扩展功能。同时,OkHttp的缓存机制可以帮助你在离线状态下提供数据。 总之,`RxJava`、`Retrofit` 和 `OkHttp`...

    struts自我学习过程程序以及说明

    本资源包括struts的学习程序,能够完全运行,当然,我是完全调试运行出来的,都是源代码原封上传,还有说明文档。还有自我总结资料,放到下一个文件夹当中上传,这里压缩只有这么多了,希望能去下载,那个全部是文档...

    applicationContext.xml 详细配置

    &lt;value&gt;org/我的项目(目录)/vo(自定义包)/如:User.hbm.xml ``` 在上面的代码中,定义了两个 Bean:hibernateInterceptor 和 sessionFactory。hibernateInterceptor Bean 用于拦截 Hibernate 会话,而 ...

    spring mvc系列教程源码

    2. **拦截器(Interceptor)**: 拦截器允许在请求被控制器处理之前或之后执行自定义逻辑。Spring MVC中的拦截器通过实现`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`来创建。拦截器可以用来进行权限...

    springmvc_controller_02

    在实际开发中,我们还会结合其他组件,如Service、DAO,以及AOP、Interceptor等进行更复杂的业务逻辑处理。对于"springmvc_controller_02"这个压缩包,可能包含了更具体的实践案例,比如处理文件上传、表单验证、...

    mycat路由解析开发指南1

    接下来,系统会检查SQL是否属于SystemInfo(如SELECT @@变量,SHOW,DESC等),如果属于,则直接结束路由处理。否则,将进行AST语法树解析,这是fdbparser和druidparser共有的步骤,封装在`AbstractRouteStrategy`的...

    SpringMVC学习流程图

    &lt;mvc:exclude-mapping path="/showLogin"/&gt; &lt;bean class="com.bjpowernode.interceptor.LoginInterceptor"/&gt; &lt;/mvc:interceptor&gt; ``` ### 数据提交与自动注入 Spring MVC提供了多种方式处理请求数据并将其...

    Spring+Hibernate+Proxool连接池

    3. **使用HibernateTemplate或HibernateInterceptor**:Spring提供了HibernateTemplate或HibernateInterceptor,这两个工具类可以帮助我们更好地管理和控制Hibernate的操作,避免直接操作Session,降低出错的可能性...

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    今天修改了 applicationContext.xml,以后的事务控制就万事大吉了,里面有详细注释哦。 有什么问题可以给我留言 ^_^,大家一起进步! &lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" ...

    struts2登录拦截器

    在Java中定义一个新的拦截器类,继承自Struts2的Interceptor接口或使用现有的拦截器作为基础进行扩展。 2. **拦截器逻辑** - **登录状态检查**:拦截器需要能够从Session或其他地方获取用户的登录状态。 - **...

    struts2.0实现的数据分页实现及实现分页步骤

    - 为了在Action和JSP之间传递分页信息,可以使用Struts2的拦截器(Interceptor)或者模型驱动(ModelDriven)特性,将分页对象绑定到Action上下文,然后在JSP中可以直接访问这些信息。 8. **实现分页导航**: - ...

    spring3.2+strut2+hibernate4

    &lt;prop key="hibernate.show_sql"&gt;true &lt;prop key="hibernate.hbm2ddl.auto"&gt;update ${jdbc.username} &lt;property name="annotatedClasses"&gt; &lt;!-- 此处hibernate 的映射采用的是.xml 配置同...

    ssh配制文件详解

    `hibernateProperties`中的配置项如`hibernate.dialect`设定了数据库方言,`hibernate.show_sql`控制是否打印执行的SQL语句,`hibernate.cglib.use_reflection_optimizer`优化了反射性能。 然后,配置了Hibernate...

    struts2拦截器的使用

    - 在项目中创建一个新的Java类,继承自`Interceptor`接口。 - 实现`intercept`方法,该方法会在Action执行前后被调用。 2. **实现拦截逻辑** - 在`intercept`方法中,检查当前用户的会话信息,判断是否有特定的...

    ssh;整合流程;xml配置文件;Struts2

    &lt;interceptor name="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"&gt; &lt;param name="transactionManager"&gt;transactionManager ...

Global site tag (gtag.js) - Google Analytics