文档章节

配置struts2默认的拦截器

岳静
 岳静
发布于 2012/07/17 18:23
字数 407
阅读 422
收藏 2

    首先struts2拦截器的类,要继承AbstractInterceptor类。

package com.huaat.weibo.interceptor;

import org.apache.log4j.Logger;

import com.huaat.common.utils.web.Struts2Utils;
import com.huaat.weibo.vo.UserInfo;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**
 * 拦截器
 * @author  jing.yue
 * @version 2012/07/17 1.0.0
 */
public class UserInterceptor extends AbstractInterceptor {

	private static final long serialVersionUID = -5653729083843893528L;

	// log4j日志
	private static final Logger logger = Logger.getLogger(UserInterceptor.class);

	@Override
	public void init() {
		// TODO Auto-generated method stub
		logger.debug("init UserInterceptor...");
	}

	@Override
	public String intercept(ActionInvocation actionInvocation) throws Exception {
		// TODO Auto-generated method stub

        UserInfo userInfo = (UserInfo) Struts2Utils.getSession().getAttribute("user");
        //没有登录, 则跳转到登录页面
        if(userInfo == null) {
        	return "login";
        }

		return actionInvocation.invoke();
	}

}

   struts2的xml的配置如下:

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

		<interceptors>
			<!-- 先定义拦截器 -->
	        <interceptor name="userInterceptor" class="com.huaat.weibo.interceptor.UserInterceptor">
	        	<!-- 指定系统初始化给拦截器的参数
	            <param name="hello">你好</param> -->
	        </interceptor>

	        <!-- 加到自己设置的拦截器栈里边去 -->
	        <interceptor-stack name="userStack">
	        	<interceptor-ref name="userInterceptor"></interceptor-ref>
	            <interceptor-ref name="defaultStack"></interceptor-ref>
	       </interceptor-stack>
		</interceptors>

	    <!-- 改变系统默认的拦截器,改成自己的默认拦截器,并且一个系统只能有一个默认的拦截器,这样这个拦截器栈会默认应用到所有的Action上去 -->
	    <default-interceptor-ref name="userStack"></default-interceptor-ref>

		<global-results>
	     	 <result name="error">/error.jsp</result>
			   <result name="login">/jsp/weibo/login.jsp</result>
     	</global-results>
		<!-- 具体包配置 -->
      	<global-exception-mappings>
         	 <exception-mapping exception="java.lang.Exception" result="error"/>
     	</global-exception-mappings>


</package>

如果需要使用拦截器,则package的extends属性要继承拦截器的package。

下面是使用这个拦截器的struts2的xml文件:

<struts>
	<package name="awardcondition" extends="weibo" namespace="/">
			<action name="awardConditionInfo" class="awardConditionInfoAction">
			   <result name="success">/list.jsp</result>
			</action>
	</package>
</struts>

一旦在某个包下定义了默认拦截器栈,在该包下的所有 action 都会使用此拦截器栈。对于那些不想使用些拦截器栈的 action ,则应该将它放置在其它的包下。 

这样拦截器就可以使用了!

© 著作权归作者所有

岳静

岳静

粉丝 45
博文 19
码字总数 8678
作品 0
深圳
高级程序员
私信 提问
.Java程序员从笨鸟到菜鸟之(四十七)细谈struts2(九)内置拦截器和自定义拦截器详解(附源码)

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 在上一篇博客中,我们一起看了拦截器的具体实现原理,并且看了一下源码(细谈struts2(八)拦截器的实现原理...

长平狐
2012/11/12
83
0
拦截器

一 概述 1 Struts2是框架,封装了很多功能,Struts2里面封装的功能都是在拦截器里面 2 Struts2里面封装了很多的功能,有很多拦截器,不是每次这些拦截器都执行,每次执行默认拦截器 3 Struts...

Bbigbug
2017/10/20
0
0
struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo

 理解       Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起...

冬至饮雪
2016/02/15
0
0
struts2基于动态代理的Interceptor

struts2核心功能都是基于struts2拦截器的,而拦截器又是基于java的动态代理。 要实现struts2拦截器,需在struts.xml中配置拦截器,每个action可以指定拦截器,指定了拦截器之后默认的拦截器链...

cjun1990
2015/10/23
1K
0
Struts2的其它知识

4、Struts2的其它知识 4.1、ModelDriven 如果希望传递对象信息到action,但对象信息较多时,需要传递大量的参数并且要设置这些参数,工作量 很大,所以建议的方式是在action中直接创建相应的...

pmos
2016/11/02
16
0

没有更多内容

加载失败,请刷新页面

加载更多

《JAVA核心知识》学习笔记 (21. JAVA 算法)

21. JAVA 算法

Shingfi
6分钟前
2
0
redis 命令

redis 秒杀用到的 原子锁 :$redis->decr('jili_reward_goods_stock_' . $gifts_id) redis 秒杀用到的原子锁在秒杀过程中库存量增加 $redis->incrBy('key1', 10); redis 键查看重复:$redis-......

小小小壮
7分钟前
2
0
像智能手机一样管理云端应用:阿里云联合微软全球首发开放应用模型(OAM)

2019 年 10 月 17 日上午 9 点 15 分,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟在 QCon 上海《基于云架构的研发模式演进》主题演讲中,正式宣布: “今天,我们同微软联合发布...

阿里巴巴云原生
16分钟前
3
0
SpringBoot配置数据源

默认数据源 Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中,分别是: org.apache.tomcat.jdbc.pool.DataSource......

Gx_ww
19分钟前
3
0
Java应用在docker环境配置容器健康检查

在《极速体验docker容器健康》一文已体验了docker容器健康检查功能,今天就来给java应用的容器加入健康检查,使应用的状态随时都可以被监控和查看。 实战环境信息 操作系统:macOS Catalina ...

程序员欣宸
21分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部