struts2 自定义拦截,防止非法操作

<package name="defaults" extends="struts-default">

        <interceptors>
            <interceptor name="login"
                class="com.zqgame.interceptor.CheckLoginInterceptor" />
            <interceptor-stack name="myinterceptor">
                <interceptor-ref name="login">
                    <param name="excludeMethods">validateLogin</param>
                </interceptor-ref>
                <interceptor-ref name="defaultStack" /> 
            </interceptor-stack>
        </interceptors>
        <!-- 设置所有Action自动调用的拦截器堆栈 -->
        <default-interceptor-ref name="myinterceptor"></default-interceptor-ref>
        <global-results>
            <result name="error">/err/exception.jsp</result>
            <result name="message">/err/message.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.NullPointerException" result="error" />
            <exception-mapping exception="java.lang.Exception" result="error" />
        </global-exception-mappings>
    </package>

action配置里面继承defaults:

<package name="login" namespace="/login" extends="defaults">
        <action name="login_*" class="loginAction" method="{1}">

        </action>
    </package>

拦截器类实现:

public class CheckLoginInterceptor extends MethodFilterInterceptor {

    private Logger log = LoggerFactory.getLogger(CheckLoginInterceptor.class);

    private static final long serialVersionUID = 1L;

    @Override
    protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
        // 确认Session中是否存在LOGIN
        Map<String,Object> session = actionInvocation.getInvocationContext().getSession();
        String login = (String) session.get(SysKey.Login_Key);
        if (login != null && login.length() > 0) {
            // login不为null,登录session有效。
            return actionInvocation.invoke();
        } else {
            // 否则非法操作,返回LOGIN
            log.debug("no login, forward login page!");
            return PageCode.Login;
        }
    }
 }

struts2 自定义拦截,防止非法操作

时间: 2024-11-03 22:19:03

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"></

5、Struts2自定义拦截器

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

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.struts

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

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" "