struts2注解使用拦截器interceptor和interceptor-stack

<!-- pc用户中心操作,必须登录 -->
	<package name="user_login" namespace="/"  extends="json-default,struts-default">
		<interceptors>
   			<interceptor name="ress" class="com.common.interceptor.ErrorInterceptor" />
   			<interceptor name="UserIsLogin" class="com.common.interceptor.Check_P_UserIsLogin" />
    		<interceptor-stack name="defaultStacks">
				<interceptor-ref name="ress"></interceptor-ref>
				<interceptor-ref name="UserIsLogin"></interceptor-ref>
				<interceptor-ref name="defaultStack"></interceptor-ref>
    		</interceptor-stack> 
    	</interceptors>   
		<global-results>
			<result name="ploginUI">/WEB-INF/jsp/pc/login.jsp</result>
			<result name="error">/WEB-INF/jsp/pc/404.jsp</result>
			<result name="input">/WEB-INF/jsp/pc/404.jsp</result>
		</global-results> 
	</package>

拦截器如上

注意Action配置,@ParentPackage需要设置为拦截器的package name或者继承,否则出错

出错信息为:

"Unable to find interceptor class referenced by ref-name XYZ"

因为拦截器convention扫描Action类时,没有Interceptor指定的拦截器。

处理方式为:

1使用@ParentPackage注解(或者指定struts.convention.default.parent.package)指定定义了该Interceptor的package;

2创建一个package并继承定义了该Interceptor的package,同时使用@ParentPackage(或者 struts.convention.default.parent.package)指定该package

下面附运行解决方案:
@Controller
@Scope("prototype")
@Namespace("")
@ParentPackage("user_login")
@Results(value={
@Result(name = "ann_json", type = "json",params={"root","jsonMap"}),
@Result(name = "ann_user",location = "/WEB-INF/jsp/pc/user/user.jsp"),
@Result(name = "ann_userInfo",location = "/WEB-INF/jsp/pc/user/info.jsp"),
@Result(name = "ann_registerError",location = "/WEB-INF/jsp/pc/register.jsp"),
@Result(name = "ann_login" ,location="/WEB-INF/jsp/pc/login.jsp")
})
public class PuserAction extends BaseAction<User> {
private static final long serialVersionUID = 2324932911275746283L;

	//查询用户基本信息
	@Action(value = "ann_info",interceptorRefs={@InterceptorRef("defaultStacks")})
	public String ann_info(){
		User users = (User) ActionContext.getContext().getSession().get("user");
		System.out.println((null!=users)+"是否存在session");
		if(null!=users){
			login_user = users;
		}
		return "ann_userInfo";
	}
}
时间: 2025-01-06 03:14:59

struts2注解使用拦截器interceptor和interceptor-stack的相关文章

struts2 注解配置拦截器 实例

/** * */ package com.wonders.stpt.contractReview.action; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.a

struts2入门之拦截器

1.拦截器的执行时间:在action对象创建之后,在具体的方法执行之前: 2.拦截器底层实现原理:用到AOP思想和责任链模式:AOP:面向切面编程,通俗的讲就是当某个功能模块要增加某一项功能时,尽可能不去修改源代码而是通过其他的方式来达到相同的效果,比如通过配置文件等方式:责任链模式和过滤链模式有点相似,过滤链模式是指比如,一个请求由多个过滤器进行过滤,每个过滤器进行放行之后才能到下一个过滤器,最后实现目的:但是责任链模式,比如要执行多个操作,有添加,修改,删除三个操作,首先执行添加操作,添加操

struts2中的拦截器

一  AOP思想: 面向切面编程的思想 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP 是一个概念,一个规范,本身并没有设定具体语言的实现,这实际

struts2内置拦截器和自定义拦截器详解(附源码)

一.Struts2内置拦截器 Struts2中内置类许多的拦截器,它们提供了许多Struts2的核心功能和可选的高级特 性.这些内置的拦截器在struts-default.xml中配置.只有配置了拦截器,拦截器才可以正常的工作和运行.Struts 2已经为您提供丰富多样的,功能齐全的拦截器实现.大家可以至struts2的jar包内的struts-default.xml查看关于默认的拦截器与 拦截器链的配置.内置拦截器虽然在struts2中都定义了,但是并不是都起作用的.因为并不是所有拦截器都被加

Struts2(十四)拦截器实现权限管理

一.认识拦截器 拦截器也是一个类 拦截器可以在Action被调用之前和之后执行代码 框架很多核心功能是拦截器实现的 拦截器的特点: 拦截器自由组合,增强了灵活性.扩展性.有利于系统解耦 拦截器可以拦截Action请求 在访问的Action执行之前和执行之后执行代码实现某项功能 Struts2: 大部分功能是在拦截器中实现的如:接收输入的参数,数据验证,文件上传,国际化等 应用程序: 需要在Action执行的前后执行特定功能 Action执行时间统计,Action访问权限管理 Action添加功能

Struts2自己定义拦截器实例—登陆权限验证

版本号:struts2.1.6 此实例实现功能:用户须要指定username登陆,登陆成功进入对应页面运行操作,否则返回到登陆页面进行登陆,当直接訪问操作页面(登陆后才干訪问的页面)时则不同意,须返回登陆页面. 代码例如以下: 一.页面 login.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUB

好记性不如烂笔头49-javaWeb框架struts2中的拦截器(4)

1. Struts2的拦截器概述 Struts2拦截器是在访问某个Action或Action的某个方法之前拦截,或者在运行之后处理.Struts2拦截器是可插拔的,拦截器是AOP(Aspect Oriented Programming,面向切面编程)的一种实现 Struts2的拦截器栈(InterceptorStack)就是将拦截器按一定的顺序联结成一条链.在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用. Struts2规定用户自定义拦截器必须实现com

关于struts2的自定义拦截器和struts2的详细流程

1.其实我们大家平常都会用struts2用的很多,但是有的时候我们并不是真正的了解struts2的运行机制,下面给大家分享一下struts2的运行流程.MVC框架 解释如下: 1.  所有请求被Struts2核心控制器StrutsPreparaedAndExecuteFilter拦截 2.根据ActionMapper提供的信息决定如何进行下一步 3.ActionMapper主要依赖Struts2的配置文件struts.xml 4.接下来为每个Action创建Action代理类ActionProx

(转)关于struts2的自定义拦截器和struts2的详细流程

转自 http://www.94cto.com/index/Article/content/id/63218.html.话说,写的真不错. 1.其实我们大家平常都会用struts2用的很多,但是有的时候我们并不是真正的了解struts2的运行机制,下面给大家分享一下struts2的运行流程.MVC框架 解释如下: 1. 所有请求被Struts2核心控制器StrutsPreparaedAndExecuteFilter拦截 2.根据ActionMapper提供的信息决定如何进行下一步 3.Actio