`
kewb
  • 浏览: 85797 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

struts2 interceptor 问题(请教高手)

阅读更多

今天写了一个自定义拦截器.却遇到了以下问题

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



KE 2007-10-06 21:54 发表评论
分享到:
评论

相关推荐

    struts2 Interceptor详解

    Struts2 Interceptor详解 Struts2作为一款流行的Java Web框架,其强大的功能之一就是拦截器(Interceptor)。拦截器在MVC模式中扮演着重要角色,它可以对请求进行预处理和后处理,提供了灵活的扩展机制,使得业务...

    Struts2拦截器(Interceptor)

    Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)

    struts2 Interceptor拦截器

    ### Struts2 Interceptor 拦截器详解 #### 一、概述 在现代Web开发中,特别是基于Java的Web应用程序开发中,Struts2框架因其简洁性和强大的扩展能力而备受青睐。Struts2框架的核心设计理念之一是MVC(Model-View-...

    Struts2_interceptor_和_filter区别

    标题和描述均聚焦于“Struts2_interceptor_和_filter区别”,这暗示着对比和解析Struts2框架中拦截器(Interceptor)与过滤器(Filter)的差异是本文的核心议题。接下来,我们将深入探讨这两者在功能、实现方式以及...

    Struts2 拦截器 Interceptor

    ### Struts2 拦截器 Interceptor #### 一、概述 在Struts2框架中,拦截器(Interceptor)是一种非常重要的机制,它能够帮助开发者实现诸如权限控制、事务管理、日志记录等跨切关注点的功能。通过定义不同的拦截器...

    STRUTS2:拦截器Interceptor

    STRUTS2:拦截器Interceptor

    saif(struts1 interceptor)

    然而,在Struts1的原生设计中,并没有内置拦截器(Interceptor)这一概念,这与后来的Struts2框架有所不同。Struts2引入了拦截器,极大地增强了框架的灵活性和可扩展性。但是,由于Struts1的流行和项目需求,"saif...

    struts2 interceptor annotation plugin

    而"struts2 interceptor annotation plugin"则是Struts2框架提供的一种使用注解来配置拦截器的方式,这种方式更加简洁、直观,减少了XML配置文件的复杂性。 注解(Annotation)是Java编程语言的一个重要特性,它...

    struts2 拦截器写法

    Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.

    Struts2.x_Interceptor

    Interceptor(拦截器)是Struts2框架的核心组件之一,它在Action调用前后执行,实现了业务逻辑的分离,增强了代码的复用性和灵活性。 Interceptor是Struts2实现AOP(面向切面编程)的一种方式,主要负责处理请求和...

    struts2 拦截器的使用(继承抽象拦截器)

    Struts2是一个非常流行的Java Web框架,它提供了一种优雅的方式来组织和控制应用程序的行为。拦截器是Struts2的核心组件之一,它们在Action调用前后执行,提供了诸如日志、事务管理、性能监控等附加功能。这篇博客...

    struts2项目开发

    Struts2 框架的主要组件包括 Action、Interceptor、Result、View 等。Action 负责处理用户的请求,Interceptor 负责拦截和处理请求,Result 负责处理请求的结果,View 负责将处理结果显示给用户。 Struts2 项目开发...

    struts2jar包

    1. **struts2-core.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action、Result、Interceptor等。它定义了请求处理的流程,提供了ActionContext、ValueStack等关键对象。 2. **xwork-core.jar**:XWork是...

    Struts2接口文档

    Struts2的核心组件包括Action、Result、Interceptor(拦截器)等,这些组件通过特定的接口进行交互。Action接口定义了处理用户请求的方法,如execute(),开发者通常会自定义Action类来实现业务逻辑。Result接口则...

    留言板留言板struts2留言板struts2

    11. **安全考虑**:Struts2虽然强大,但也需要注意安全性问题,例如XSS、CSRF等。开发者应确保对用户输入进行校验和过滤,使用安全的插件,及时更新Struts2版本以修补潜在的安全漏洞。 以上就是关于"留言板留言板...

    struts2jar.zip

    1. **Struts2核心库**:struts2-core.jar,包含了框架的核心功能,如Action、Result、Interceptor等。 2. **插件包**:根据项目需求,可能需要其他的插件,如struts2-convention-plugin.jar(用于自动配置)、...

    struts2小程序 struts2代码

    Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用。这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。...

Global site tag (gtag.js) - Google Analytics