Struts2 自定义拦截器

自定义拦截器(权限管理),包含了对ajax和表单请求的拦截

package com.interceptor;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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.AbstractInterceptor;

public class AuthorityInterceptor extends AbstractInterceptor{

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    @Override
    /* session过期及操作的权限验证拦截器 */
    public String intercept(ActionInvocation invocation) throws Exception {
        // TODO Auto-generated method stub
        // 取得请求相关的ActionContext实例
        ActionContext context=invocation.getInvocationContext();
        Map session=context.getSession();
        String employ=(String)session.get("employ");

        if(!ServletActionContext.getRequest().isRequestedSessionIdValid()){
            // session 过期
             //return Action.LOGIN;
            //对ajax请求的拦截
            return isAjax();
        }else if (employ==null) {
            //没有登陆,将服务器提示设置成一个HttpServletRequest属性
            context.put("tip","您还没有登录,请登陆系统");
            return isAjax();           

        }else {
            return invocation.invoke();
        }

    }// end function

    private String isAjax() {
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setCharacterEncoding("text/html;charset=utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter pw = null;
        try {
            pw = response.getWriter();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String flag = "";
        if (request.getHeader("X-Requested-With") != null
        && request.getHeader("X-Requested-With").equalsIgnoreCase(
        "XMLHttpRequest")) {  

            flag = "sessionfalse";
            pw.write(flag);
            return null;
         }else{
           return Action.LOGIN;
        }
    }

}
时间: 2024-10-05 16:02:29

Struts2 自定义拦截器的相关文章

Struts2自定义拦截器Interceptor以及拦截器登录实例

1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor{ private static final long serialVersionUID = 1L; public void destroy() { } public void init() {} public String intercept(ActionInvocation arg0) throws

Struts2 自定义拦截器时Action无法接收到参数

问题:自定义拦截器,没有添加defaultStack导致Action无法接受到参数 解决办法: 方法一,添加defaultStack,然后在Action中引用 自定义的stack,其实defaultStack中也有细分如basicStack等 <interceptors> <interceptor name="checkUser" class="com.common.interceptor.UserInfoInterceptor"></

12.Struts2自定义拦截器

12.自定义拦截器 拦截器是Struts2的一个重要特性.因为Struts2的大多数核心功能都是通过拦截器实现的. 拦截器之所以称之为“拦截器”,是因为它可以拦截Action方法的执行, 即在Acton方法执行之前或之后执行,以加强Action方法的功能. 例如,一般情况下,用户在打开某个页面之前,需要先登录,否则是无法对资源进行访问的.这就是权限拦截器. 1.定义拦截器类 自定义的拦截器类需要实现拦截器接口com.opensymphony.xwork2.interceptor.Intercep

Struts2自定义拦截器

自定义拦截器 1). 具体步骤 I. 定义一个拦截器的类 > 可以实现 Interceptor 接口 > 继承 AbstractInterceptor 抽象类 II然后在拦截器类的interceptor()方法中定义这个拦截器的功能 III. 在 struts.xml 文件配置. 1注册拦截器 <interceptors> <interceptor name="hello" class="com.atguigu.struts2.intercept

Struts2 自定义拦截器(方法拦截器)

一.实现Interceptor接口 1 public interface Interceptor extends Serializable{ 2 public void init(); 3 public void destroy(); 4 public String intercept(ActionInvocation invocation)(); 5 } 并实现上述方法. 二.继承AbstractInterceptor类,重写intercept()方法即可 此方法更可行,其实AbstractI

5、Struts2自定义拦截器

一.拦截器相关知识 1.Struts2框架剖析 Holly版本生活案例: 影视公司(拍电影)    ActionMapper 传媒公司(包装明星) ActionMapping 明星                        Action 经纪人                     ActionProxy(代理对象) 小工所在单位             ActionInvocation 小工                        Interceptor(拦截器) 递归==99归一

Struts2自定义拦截器处理全局异常

今天在整理之前的项目的时候想着有的action层没有做异常处理,于是想着自定义拦截器处理一下未拦截的异常. 代码: package cn.xm.exam.action.safeHat; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Scope;

Struts2自定义拦截器的基本方法

struts.xml struts2配置文件,因为我们为Action配置了拦截器,默认的拦截器就会失效.为了程序的正常运行,需要我们显示引入默认拦截器. 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "

struts2学习笔记---自定义拦截器

什么是拦截器? struts2中拦截器分为Struts2定义好的拦截器和自定义的拦截器.其作用是在一个Action执行之前进行拦截,在Action执行之后又加入某些操作. 实现原理 当请求一个Action时,struts2会查找配置文件,并根据这个Action的配置实例化对应的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器. 拦截器的执行流程 1.对Action进行预处理.(正序执行) 2.拦截器自身决定该不该执行后续的拦截器(由invoke()方法的返回值决定).