今天写了一个自定义拦截器.却遇到了以下问题
package dgut.ke.interceptors;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
import dgut.ke.model.Catalog;
import dgut.ke.model.Publish;
import dgut.ke.model.Subject;
import dgut.ke.service.ICatalogService;
import dgut.ke.service.IPublishService;
import dgut.ke.service.ISubjectService;
public class AddBookInterceptor extends MethodFilterInterceptor {
/**
*
*/
private static final long serialVersionUID = 1135497226250835266L;
private ISubjectService subjectService ;
private ICatalogService catalogService ;
private IPublishService publishService ;
public ICatalogService getCatalogService() {
return catalogService;
}
public IPublishService getPublishService() {
return publishService;
}
public ISubjectService getSubjectService() {
return subjectService;
}
public void setCatalogService(ICatalogService catalogService) {
this.catalogService = catalogService;
}
public void setPublishService(IPublishService publishService) {
this.publishService = publishService;
}
public void setSubjectService(ISubjectService subjectService) {
this.subjectService = subjectService;
}
@Override
protected String doIntercept(ActionInvocation invoation) throws Exception {
// TODO 自动生成方法存根
System.out.println("-------- 拦截器开始执行 ----------");
List<Subject> subject_list = (ArrayList<Subject>)subjectService.findAll();
List<Catalog> catalog_list = (ArrayList<Catalog>)catalogService.findAll();
List<Publish> pubish_list = (ArrayList<Publish>)publishService.findAll();
//ActionContext act = ActionContext.getContext() ;
ActionContext act = invocation.getInvocationContext() ;
HttpServletRequest request = (HttpServletRequest) act.get(ServletActionContext.HTTP_REQUEST) ;
request.setAttribute("subject_list", subject_list) ;
request.setAttribute("catalog_list", catalog_list) ;
request.setAttribute("publish_list", pubish_list) ;
System.out.println("-------- 拦截器执行结束 ----------");
return Action.INPUT;
}
}
为了实现request.setAttribute(String str, Object obj) ;.最先是让上面的类实现ServletRequestAware 接口.
但是在运行的时候却出现了空指针异常。后来改成以上的代码就可以正常运行,但是还是
不太明白
曾经在一本书上看到一段话:构建interceptor最重要的原则:interceptor必须是无状态的,并且不能
够使用任何ActionInvocation提供范围以外的API
分享到:
相关推荐
Struts2 Interceptor详解 Struts2作为一款流行的Java Web框架,其强大的功能之一就是拦截器(Interceptor)。拦截器在MVC模式中扮演着重要角色,它可以对请求进行预处理和后处理,提供了灵活的扩展机制,使得业务...
Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)
### Struts2 Interceptor 拦截器详解 #### 一、概述 在现代Web开发中,特别是基于Java的Web应用程序开发中,Struts2框架因其简洁性和强大的扩展能力而备受青睐。Struts2框架的核心设计理念之一是MVC(Model-View-...
标题和描述均聚焦于“Struts2_interceptor_和_filter区别”,这暗示着对比和解析Struts2框架中拦截器(Interceptor)与过滤器(Filter)的差异是本文的核心议题。接下来,我们将深入探讨这两者在功能、实现方式以及...
### Struts2 拦截器 Interceptor #### 一、概述 在Struts2框架中,拦截器(Interceptor)是一种非常重要的机制,它能够帮助开发者实现诸如权限控制、事务管理、日志记录等跨切关注点的功能。通过定义不同的拦截器...
STRUTS2:拦截器Interceptor
然而,在Struts1的原生设计中,并没有内置拦截器(Interceptor)这一概念,这与后来的Struts2框架有所不同。Struts2引入了拦截器,极大地增强了框架的灵活性和可扩展性。但是,由于Struts1的流行和项目需求,"saif...
而"struts2 interceptor annotation plugin"则是Struts2框架提供的一种使用注解来配置拦截器的方式,这种方式更加简洁、直观,减少了XML配置文件的复杂性。 注解(Annotation)是Java编程语言的一个重要特性,它...
Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
Interceptor(拦截器)是Struts2框架的核心组件之一,它在Action调用前后执行,实现了业务逻辑的分离,增强了代码的复用性和灵活性。 Interceptor是Struts2实现AOP(面向切面编程)的一种方式,主要负责处理请求和...
Struts2是一个非常流行的Java Web框架,它提供了一种优雅的方式来组织和控制应用程序的行为。拦截器是Struts2的核心组件之一,它们在Action调用前后执行,提供了诸如日志、事务管理、性能监控等附加功能。这篇博客...
Struts2 框架的主要组件包括 Action、Interceptor、Result、View 等。Action 负责处理用户的请求,Interceptor 负责拦截和处理请求,Result 负责处理请求的结果,View 负责将处理结果显示给用户。 Struts2 项目开发...
1. **struts2-core.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action、Result、Interceptor等。它定义了请求处理的流程,提供了ActionContext、ValueStack等关键对象。 2. **xwork-core.jar**:XWork是...
Struts2的核心组件包括Action、Result、Interceptor(拦截器)等,这些组件通过特定的接口进行交互。Action接口定义了处理用户请求的方法,如execute(),开发者通常会自定义Action类来实现业务逻辑。Result接口则...
11. **安全考虑**:Struts2虽然强大,但也需要注意安全性问题,例如XSS、CSRF等。开发者应确保对用户输入进行校验和过滤,使用安全的插件,及时更新Struts2版本以修补潜在的安全漏洞。 以上就是关于"留言板留言板...
1. **Struts2核心库**:struts2-core.jar,包含了框架的核心功能,如Action、Result、Interceptor等。 2. **插件包**:根据项目需求,可能需要其他的插件,如struts2-convention-plugin.jar(用于自动配置)、...
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用。这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。...