文档章节

SSH入门系列3:struts2拦截器

O
 ORZ你好
发布于 2017/07/14 14:52
字数 618
阅读 4
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

图像库stb_image

https://github.com/nothings/stb 目前一般主流的图像格式也就是bmp,jpg,png,tga,dds,除了DDS一般是给DX用的,虽然一堆OpenGL程序也有用的,但是我一般只用png和tga, png不用说了,带a...

robslove
10分钟前
0
0
Spring 事务提交回滚源码解析

前言 在上篇文章 Spring 事务初始化源码分析 中分析了 Spring 事务初始化的一个过程,当初始化完成后,Spring 是如何去获取事务,当目标方法异常后,又是如何进行回滚的,又或是目标方法执行...

TSMYK
29分钟前
1
0
百度黄埔学院将培养一批首席AI架构师,为“国之重器”赋能

深度学习高端人才不仅是AI发展的重要养分,也是企业转型AI巨大推动力。2019年1月19日,百度黄埔学院——深度学习架构师培养计划在百度科技园举行开学典礼,深度学习技术及应用国家工程实验室...

深度学习之桨
55分钟前
2
0
扒站wget仿站

wget -c -r -p -np -k http://xxx.com/xxx 其中: -c, --continue (断点续传) 接着下载没下载完的文件 -r, --recursive(递归) specify recursive download.(指定递归下载) -p, --page...

临江仙卜算子
57分钟前
2
0
Nextjs+React非页面组件SSR渲染

@随风溜达的向日葵 Nextjs Nextjs是React生态中非常受欢迎的SSR(server side render——服务端渲染)框架,只需要几个步骤就可以搭建一个支持SSR的工程(_Nextjs_的快速搭建见Next.js入门)...

随风溜达的向日葵
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部