struts2 拦截器

java类:
package com.secoo.stocks.util;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class StrutsInterceptor extends AbstractInterceptor{

	private static final long serialVersionUID = 1L;

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		StringBuffer strb = new StringBuffer( invocation.getAction().getClass().getName() );
		strb.append(".").append(invocation.getProxy().getMethod() );
		//不拦截的方法允许通过不拦截
		if( HttpUtil.relativeValue("/auth_service.properties", "STOCK_NAMES").contains(strb.toString()) ){
			return invocation.invoke();
		}else{
			Object object = request.getSession().getAttribute("stockId");
			if(object != null){
				return invocation.invoke();
			}else{
				//地址重定向
				response.sendRedirect(request.getContextPath()+"/index.jsp");
				//RequestDispatcher view=request.getRequestDispatcher("/index.jsp");
				//view.forward(request, response);
				
			}
		}
		return null;
	}

}

 

 

struts-stack.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="secoo-default" extends="struts-default">
        <interceptors>
        	<!-- 定义拦截器 -->
        	<interceptor name="secooStack" class="com.secoo.stocks.util.StrutsInterceptor"/>
        	<!-- 定义拦截器栈 -->
        	<interceptor-stack name="secooInterceptorStack">
        		<!-- 自定义拦截器 -->
		<interceptor-ref name="secooStack"/>
		<!-- 系统默认拦截器(必写) -->
		<interceptor-ref name="defaultStack"/>
	</interceptor-stack>
        </interceptors>
        
        <!-- 这句是设置所有Action自动调用的拦截器栈:重定义默认拦截器栈 -->
        <default-interceptor-ref name="secooInterceptorStack"/>
        
        <!-- 定义全局处理结果 -->
        <global-results>
        	<result name="error">/index.jsp</result>
        </global-results>
        <global-exception-mappings>
			<exception-mapping result="error" exception="Exception"></exception-mapping>
		</global-exception-mappings>

    </package>
</struts>
 
struts.xml需要配置:(如果将拦截器放在struts.xml中,就不需要了)
	<include file="auth-struts.xml"></include>
	//继承 struts-stack.xml	<package  name="struts-action" extends="secoo-default">


 

<interceptors>
	<!-- 定义拦截器 -->
	<interceptor name="拦截器名" class="拦截器实现类"/>
	<!-- 定义拦截器栈 -->
	<interceptor-stack name="拦截器栈名">
		<interceptor-ref name="拦截器一"/>
		<interceptor-ref name="拦截器二"/>
	</interceptor-stack>
</interceptors>


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值