前两天试图写一个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>
分享到:
相关推荐
public class AuthInterceptor implements Interceptor { @Override public void destroy() {} @Override public void init() {} @Override public String intercept(ActionInvocation invocation) throws ...
权限相关页面(add.jsp, show.jsp, qurey.jsp)** - **代码分析**:这些页面同样使用了JSP和Struts2标签库,它们包含了特定的功能提示信息及返回登录页面的链接。 - **实现效果**:只有指定用户才能访问这些页面...
9. **Interceptor**:拦截器,可以预处理请求,后处理响应,实现 AOP 风格的功能,如日志记录、权限验证等。 在这个"spring-mvc-showcase-master"项目中,你可以看到各种 Spring MVC 功能的实例,例如: - **不同...
首先,我们来看一下`BookDao`类(清单1),它扮演了数据存储的角色。这个类使用`ConcurrentHashMap`作为数据存储结构,它提供了线程安全的读写操作,这对于多线程环境中的应用是非常理想的。`BookDao`包含以下方法:...
<result type="redirectAction" name="success">showFile ``` 在这个例子中,我们定义了一个名为`myFileUpload`的拦截器,并指定了允许上传的文件类型为所有图像文件和PDF文件。 #### 4. 文件类型与...
这时,你可以利用RxJava的Buffer、Zip、Merge等操作符,以及Retrofit的CallAdapter和Interceptor功能来扩展功能。同时,OkHttp的缓存机制可以帮助你在离线状态下提供数据。 总之,`RxJava`、`Retrofit` 和 `OkHttp`...
本资源包括struts的学习程序,能够完全运行,当然,我是完全调试运行出来的,都是源代码原封上传,还有说明文档。还有自我总结资料,放到下一个文件夹当中上传,这里压缩只有这么多了,希望能去下载,那个全部是文档...
<value>org/我的项目(目录)/vo(自定义包)/如:User.hbm.xml ``` 在上面的代码中,定义了两个 Bean:hibernateInterceptor 和 sessionFactory。hibernateInterceptor Bean 用于拦截 Hibernate 会话,而 ...
2. **拦截器(Interceptor)**: 拦截器允许在请求被控制器处理之前或之后执行自定义逻辑。Spring MVC中的拦截器通过实现`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`来创建。拦截器可以用来进行权限...
在实际开发中,我们还会结合其他组件,如Service、DAO,以及AOP、Interceptor等进行更复杂的业务逻辑处理。对于"springmvc_controller_02"这个压缩包,可能包含了更具体的实践案例,比如处理文件上传、表单验证、...
接下来,系统会检查SQL是否属于SystemInfo(如SELECT @@变量,SHOW,DESC等),如果属于,则直接结束路由处理。否则,将进行AST语法树解析,这是fdbparser和druidparser共有的步骤,封装在`AbstractRouteStrategy`的...
<mvc:exclude-mapping path="/showLogin"/> <bean class="com.bjpowernode.interceptor.LoginInterceptor"/> </mvc:interceptor> ``` ### 数据提交与自动注入 Spring MVC提供了多种方式处理请求数据并将其...
3. **使用HibernateTemplate或HibernateInterceptor**:Spring提供了HibernateTemplate或HibernateInterceptor,这两个工具类可以帮助我们更好地管理和控制Hibernate的操作,避免直接操作Session,降低出错的可能性...
今天修改了 applicationContext.xml,以后的事务控制就万事大吉了,里面有详细注释哦。 有什么问题可以给我留言 ^_^,大家一起进步! <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" ...
在Java中定义一个新的拦截器类,继承自Struts2的Interceptor接口或使用现有的拦截器作为基础进行扩展。 2. **拦截器逻辑** - **登录状态检查**:拦截器需要能够从Session或其他地方获取用户的登录状态。 - **...
- 为了在Action和JSP之间传递分页信息,可以使用Struts2的拦截器(Interceptor)或者模型驱动(ModelDriven)特性,将分页对象绑定到Action上下文,然后在JSP中可以直接访问这些信息。 8. **实现分页导航**: - ...
<prop key="hibernate.show_sql">true <prop key="hibernate.hbm2ddl.auto">update ${jdbc.username} <property name="annotatedClasses"> <!-- 此处hibernate 的映射采用的是.xml 配置同...
`hibernateProperties`中的配置项如`hibernate.dialect`设定了数据库方言,`hibernate.show_sql`控制是否打印执行的SQL语句,`hibernate.cglib.use_reflection_optimizer`优化了反射性能。 然后,配置了Hibernate...
- 在项目中创建一个新的Java类,继承自`Interceptor`接口。 - 实现`intercept`方法,该方法会在Action执行前后被调用。 2. **实现拦截逻辑** - 在`intercept`方法中,检查当前用户的会话信息,判断是否有特定的...
<interceptor name="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <param name="transactionManager">transactionManager ...