文档章节

SSH入门系列3:struts2拦截器

O
 ORZ你好
发布于 2017/07/14 14:52
字数 618
阅读 2
收藏 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
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
SSH框架之struts2专题1:Struts2入门

1 Struts2入门 1.1 Struts2简介 Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。 1.2 Struts2下载与版本 Stru...

极客微信条
01/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
48分钟前
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
59分钟前
0
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
0
0
LNMP架构(Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl)

Nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时...

蛋黄_Yolks
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部