文档章节

SSH入门系列3:struts2拦截器

O
 ORZ你好
发布于 2017/07/14 14:52
字数 618
阅读 3
收藏 0

Struts2的拦截器类是用来拦截用户请求,处理之后,然后在给Action处理。在Struts2上配置一个自定义拦截器方法如下:

1:用户自定义拦截器,自定义拦截器必须实现com.opensymphony.xwork2.interceptor接口,或者继承AbstractInterceptor 类,假设我对一个login.jsp进行拦截(拦截里面的username,password)。具体代码如下:

public class UserInterceptor   extends AbstractInterceptor {

    @Override
    public String intercept(ActionInvocation arg0) throws Exception {
    
        // TODO Auto-generated method stub
        System.out.println("开始调用拦截器");
    ActionContext ac =argo.getInvocationContext();

    Map<String,Object>  session = ac.getSession();
       
        if ( session.get("username")==null) {
          return "login";
        }else{
                    
        return     arg0.invoke();    
    
        }
        
    }

}

 注意:这里的arg0.invoke是在action之前实现的代码 ,如果你需要拦截器在action之后实现功能,可以把arg0.invoke() 提前。

2:在Struts.xml进行自定义拦截器 ,具体代码如下:

<interceptors>
    <interceptor name="UserInterceptor"  class="com.interceptor.UserInterceptor" ></interceptor>
   </interceptors>

3:struts.xml里面的action种使用拦截器。

<action name="*_*"  class="com.action.{1}Action" method="{2}" >
        <result name="login"  type="redirect" >/Page_index.jsp</result>
        <result name="list"  type="redirect">/list.jsp</result>
      
       <interceptor-ref  name="defaultStack"  ></interceptor-ref>
        <interceptor-ref  name="UserInterceptor"  ></interceptor-ref>
    
        </action>

注意:这里的默认拦截器必须填写,否则得不到session里的值,session会是一个空值,如果加了默认配置还是空值的话,试着把拦截器配置注释掉,运行后在解除注释。

   如果需要配置多个拦截器的话,可以在interceptors内写多个interceptor 标记,也可以在interceptor标记中间添加参数,用来定义参数,参数标记是param ,比如:

<interceptors-stack  name="拦截器栈名1">
    <interceptor name="UserInterceptor"  class="com.interceptor.UserInterceptor" ></interceptor>
  <interceptor name="拦截器名1"  class="拦截器类1" >

<param   name="参数名1"> 参数值1</param>

<param  name="参数名2" >参数值2</param>

</interceptor>  

<interceptor name="拦截器名2"  class="拦截器类2" ></interceptor>

</interceptors-stack>

 

默认的情况下,拦截器会拦截action里面的所有方法,如果想拦截固定方法,或者过滤固定方法,可以如下设置:

1用户自定义拦截器

public class FilterHelloInterceptor extends MethodFilterInterceptor {

    @Override
    protected String doIntercept(ActionInvocation arg0) throws Exception {
        System.out.println("方法都是一样的,名字不同而已");
        return arg0.invoke();
    }

}

 

2struts.xml  设置拦截器:

<interceptors    >

<interceptor  name="UserInterceptor "  class="" ></interceptor>

</interceptors>

3action里面配置

<interceptor-ref  name="UserInterceptor"  >

 <param  name="excludeMethods">  execute,aa,bb</param>

excludeMethods表示排除过滤的方法,拦截的方法是execute ,如果有多个则用,隔开,比如aa,bb

</interceptor-ref>

<interceptor-ref   name="" >

  <param  name="includeMethods"   >execute,aa,bb  </param>

includeMethods表示要对方法进行拦截,拦截的方法是execute ,如果有多个则用,隔开,比如aa,bb

</interceptor>

 

 

© 著作权归作者所有

共有 人打赏支持
O
粉丝 0
博文 15
码字总数 8932
作品 0
南京
struts2实战教程

Struts2.0已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明。 拥有丰富的开发人群,几乎已经成为了事实上的工业标准。因此,学习MVC框架,struts2.0几乎是必须熟悉的...

2846613430
2016/04/25
157
0
SSH-Struts第三弹:传智播客视频教程第一天上午的笔记

一、 框架概述 1、三大框架 : 是企业主流 JavaEE 开发的一套架构 Struts2 + Spring + Hibernate 2、 什么是框架?为什么要学框架 ? 框架 是 实现部分功能的代码 (半成品),使用框架简化企...

candy-yun
2014/03/26
0
0
struts2 spring hibernate 原理

近期换了家公司,这家公司用的是最传统的SSH。刚开始工作的时候没注意三大框架的一些原理,今天自己谈谈看, 1、struts2 struts2是基于filter的,但同样也需要servlet的支持。一个请求被过滤...

tiger1986
2013/10/20
0
0
Java SSH框架系列:用户登录模块的设计与实现思路

时间 2014-01-19 16:14:54 CSDN博客原文 http://blog.csdn.net/nupt123456789/article/details/18504615 1.简介 用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等。...

thinkyoung
2014/12/17
0
0
Java Web学习计划

--- 本月为入门阶段,从零开始,一步一步的做出一个实用的网站。 深入学习Java语言,初步掌握前端技术,使用JSP和MySQL完成一个简单的网站 第1周 Java高级编程学习目标:
1.深入了解JDK环境...

SVD
2016/12/01
55
0

没有更多内容

加载失败,请刷新页面

加载更多

深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
46分钟前
2
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
55分钟前
2
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
9
0
JavaEE——Junit

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Junit Junit又名单元测试,Junit是用来测试Jav...

凯哥学堂
昨天
6
0
读《美丽新世界》

一、背景 十一国庆节从重庆回深圳的时候,做得绿皮车,路上看了两本书:李笑来的《韭菜的自我修养》和禁书《美丽新世界》。 上篇文章已经分享了 读《韭菜的自我修养》,这篇文章来记录一下《...

tiankonguse
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部