SSH-Struts2简单的自定义拦截器MethodFilterInterceptor

SSH-Struts2简单的自定义拦截器MethodFilterInterceptor

 

   最近业余时间工作之余也在学习SSH相关的知识,今天刚刚尝试写了一个基础的Struts2拦截器通过继承MethodFilterInterceptor方法。

   一、什么是拦截器

拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。

二、本文的实现

1、定义一个拦截器

import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

/**
 *权限校验的拦截器
 * @author CodyLee
 *
 */
public class PrivilegeInterceptor extends MethodFilterInterceptor{
	@Override
	//执行拦截的方法
	protected String doIntercept(ActionInvocation actionInvocation) throws Exception{
		//判断是否登陆,如果登陆,放行;如果没有登陆,跳转到登陆页面
		AdminUser adminUser = (AdminUser)ServletActionContext.getRequest().getSession().getAttribute("existAdminUser");
		if(adminUser != null){
			//已经登陆过
			return actionInvocation.invoke();
		}else{
			//跳转到登陆页面
			ActionSupport support = (ActionSupport)actionInvocation.getAction();
			support.addActionError("您还没有登陆!没有权限访问!");
			return ActionSupport.LOGIN;
		}
	}
}

2、配置自定义拦截器

<!-- 配置自定义拦截器 -->
<interceptors>
		<interceptor name="privilegeInterceptor" class="cn.itcast.shop.interceptor.PrivilegeInterceptor"/>
</interceptors>

   3、Action中添加拦截器

<action name="adminCategory_*" class="adminCategoryAction" method="{1}">
			<result name="findAll">/admin/category/list.jsp</result>
			<interceptor-ref name="privilegeInterceptor"/>
			<interceptor-ref name="defaultStack"/>
</action>

三、注意事项

在Struts2中拦截器的接口是Interceptor而其实现类AbstractInterceptor是Interceptor的实现类,接口中的一般方法都实现了;本文中所用到的MethodFilterInterceptor又继承了AbstractInterceptor。

时间: 2024-12-03 02:35:30

SSH-Struts2简单的自定义拦截器MethodFilterInterceptor的相关文章

关于Struts2文件上传与自定义拦截器_java

一.访问或添加request/session/application属性 public String scope() throws Exception{   ActionContext ctx = ActionContext.getContext();   ctx.getApplication().put("app", "应用范围");//往ServletContext里放入app   ctx.getSession().put("ses", &q

struts2自定义拦截器怎么进不去

问题描述 一个破拦截器搞了半天没发现哪里出问题了就是进不去自定义的拦截器里,下面贴代码:struts.xml<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dt

stauts 2 自定义拦截器

问题描述 我想定义一个拦截action中指定方法的拦截器,比如我只拦截add方法.我看到网上有人说extendsMethodFilterInterceptor可是我不知道怎么在stauts.xml中配置,请各位大牛帮帮忙啊 解决方案 解决方案二:去我BLOG看下有个自定义拦截器的例子http://blog.csdn.net/java_cxrs/archive/2010/04/23/5519743.aspx解决方案三:嗯继承自MethodFilterInterceptor抽象基类就可以对方法进行拦

struts2预定义的拦截器出错

问题描述 一起使用struts2预定义的拦截器和自定义的拦截器,自定义的没有任何问题,但是预定义的timer和token却出错了struts.xml文件中的配置:<packagename="struts_aa"extends="struts-default"><interceptors><interceptorname="MyInterceptor1"class="com.vg.interceptor.My

java自定义拦截器用法实例_java

本文实例讲述了java自定义拦截器及其用法.分享给大家供大家参考.具体如下: LoginInterceptor.java文件如下: package com.tq365.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwo

WebServices中使用cxf开发日志拦截器以及自定义拦截器

首先下载一个cxf实例,里面包含cxf的jar包.我下的是apache-cxf-2.5.9 1.为什么要设置拦截器? 为了在webservice请求过程中,能动态操作请求和响应数据, CXF设计了拦截器. 2.拦截器分类 1. 按所处的位置分:服务器端拦截器,客户端拦截器 2. 按消息的方向分:入拦截器,出拦截器 3. 按定义者分:系统拦截器,自定义拦截器 3.拦截器API Interceptor(拦截器接口) AbstractPhaseInterceptor(自定义拦截器从此继承) Loggi

cxf自定义拦截器怎么获取到传入参数值

问题描述 cxf自定义拦截器怎么获取到传入参数值 cxf自定义拦截器怎么获取传入参数值 或者怎么 把 Object obj = message.getContent(List.class).get(0); // 的值取出来 解决方案 http://www.tuicool.com/articles/fAZ3QnJ

struts-关于Struts自定义拦截器的问题

问题描述 关于Struts自定义拦截器的问题 Struts自定义拦截器里只能设置不拦截指定的方法或者只拦截指定的方法.如果我有两个Action(Action1,Action2)而里面的方法有相同方法名的方法(foo()),而我想拦截Action1的foo()方法,不想拦截Action2的foo()方法,该怎么做呢,能不能指定拦截器不拦截指定的Action呢?*_* 解决方案 运行逻辑是先运行拦截器再运行action,拦截器配置可作用于一个action下,两个action完全可以分开配置 解决方案

Struts2重新学习之自定义拦截器(判断用户是否是登录状态)

拦截器 一:1:概念:Interceptor拦截器类似于我们学习过的过滤器,是可以再action执行前后执行的代码.是web开发时,常用的技术.比如,权限控制,日志记录. 2:多个拦截器Interceptor连在一起组成了Interceptor栈.拦截器是AOP面向切面编程的一种实现,具有热插拔的效应. 3:Struts2拦截器,每个拦截器类只有一个对象实例,即采用了单利模式.所有引用这个拦截器的action都共享着一拦截器类的实例.   拦截器和过滤器的区别 1:拦截器和过滤器的概念非常类似