【Struts2三】拦截器

拦截器:就是在访问action之前,对其进行拦截!可以在拦截器中做一些逻辑的处理!比如权限验证,没有权限就不给予访问!

拦截器等效于servlet中的过滤器!

使用拦截器步骤:

1.定义自己的拦截器:


import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.Interceptor;

/**

* 定义自己的拦截器,需要实现Intercept接口!

*

*/

public class MyInterceptor implements Interceptor{

public void destroy()
{

}

public void init()
{

}

/**

* 重写intercept方法,在该方法中实现自己的拦截逻辑!

* 调用invocation.invoke()方法放行action!

*/

public String
intercept(ActionInvocation invocation) throws Exception
{

System. out.println("图片上传" );

return invocation.invoke();

//        return null;//不执行action

}

}

2.在struts-interceptor.xml的配置文件中声明:

需要在struts.xml中包含上述配置文件!

struts-interceptor.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="interceptor" namespace="/" extends="struts-default" >

<!-- 声明拦截器,拦截器声明应该位于action之前-->

<interceptors>

<!--声明自己定义的拦截器
-->

<interceptor name= "imageInterceptor"

class= "cn.itheima03.struts2.interceptor.MyInterceptor" ></interceptor>

<!-- 声明拦截器栈
-->

<interceptor-stack name= "myInterceptor">

<interceptor-ref name="imageInterceptor" ></interceptor-ref>

<interceptor-ref name="defaultStack" ></interceptor-ref>

</interceptor-stack>

</interceptors>

<!-- 修改默认的拦截器栈
-->

<default-interceptor-ref name="myInterceptor" ></default-interceptor-ref>

<!--声明action,在执行action之前,会先执行拦截器中的方法 
-->

<action name= "interceptorAction_*" method ="{1}"

class= "cn.itheima03.struts2.interceptor.InterceptorTestAction" >

<result>

index.jsp

</result>

</action>

</package >

</struts>

3.定义action:


import com.opensymphony.xwork2.ActionSupport;

public class InterceptorTestAction extends ActionSupport{

public String
interceptor(){

System. out.println("interceptor" );

return SUCCESS ;

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 16:49:43

【Struts2三】拦截器的相关文章

Struts2 自定义拦截器时Action无法接收到参数

问题:自定义拦截器,没有添加defaultStack导致Action无法接受到参数 解决办法: 方法一,添加defaultStack,然后在Action中引用 自定义的stack,其实defaultStack中也有细分如basicStack等 <interceptors> <interceptor name="checkUser" class="com.common.interceptor.UserInfoInterceptor"></

【跟我一步一步学Struts2】——拦截器

前言 前面提到过拦截器.而且说拦截器仅仅能拦截Action.这里拦截器的调用体现了责任链模式.为什么说体现了责任链模式呢? 以下的一段话说的非常明确: Struts2将整个运行划分成若干同样类型的元素,每一个元素具备不同的逻辑责任,并将它们纳入到一个链式的数据结构中.而每一个元素又有责任负责链式结构中下一个元素的运行调用. 从代码重构的角度来看,实际上是将一个复杂的系统,分而治之.从而使得每一个部分的逻辑可以高度重用并具备高度可扩展性. 拦截器的原理 Struts2框架的拦截器是动态配置的,假设

Struts2(四) 拦截器

一.struts2国际化 定义:同一款软件 可以为不同用户,提供不同语言界面 第一种 全局国际化信息文件 (所有Action都可以使用 ) ------- 最常用 1.properties文件可以在任何包中2. 需要在struts.xml 中配置全局信息文件位置 <!-- messages.properties 在src根目录 --> <constant name="struts.custom.i18n.resources" value="messages&

struts2 在拦截器进行注入(根据Action是否实现自定义接口)

例如:常常在Action中都需要获取当前登录的User,就需要获取Session,然后从Session获取当前登录的User,因为这些步骤都是重复操作,可以想办法在拦截器中进行实现,可以自定义一个接口,只要你的Action实现了这个接口,就在自定义拦截器中进行注入.即从拦截器中获取Session,然后设置进行注入. 简单的例子: 一个自定义接口,只要Action实现这个接口,就在拦截器中进行注入 package com.atguigu.surveypark.struts2; import com

【struts2】拦截器基础

1)拦截器是什么? 拦截器(Interceptor)是Struts2最强大的特性之一,它是一种可以让你在Action执行之前和Result执行之后进行一些功能处理的机制.来回顾一下官方给出的Struts2系统架构图中关于拦截器的部分,如下图所示: 这个图清晰的描述出了拦截器的运行地位,就是用来负责在Action执行之前和Result执行之后处理一些功能的类.也就是说,上图示意了有3个拦截器的类,分别是Interceptor1.Interceptor2和Interceptor3,它们分别执行不同的

Struts2自定义拦截器Interceptor以及拦截器登录实例

1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor{ private static final long serialVersionUID = 1L; public void destroy() { } public void init() {} public String intercept(ActionInvocation arg0) throws

Spring的AOP,Struts2的拦截器(Interceptor),以及springMVC的(interceptor)

参考外链:http://www.ibm.com/developerworks/cn/java/j-lo-springaopfilter/ 1.首先,spring的AOP作用范围很广,可以使用Aspectj的execution表达式自定以切面的位置. 比如下面的配置service方法执行日志: 1 <!-- 系统日志 --> 2 <bean id="logUtils" class="com.tabchanj.crm.utils.SystemLogUtils&q

【struts2】拦截器的工作模拟实现

Main.java /** * 书本:[struts2] * 功能:模拟拦截器的工作,实际就是递归的思想 * 文件:Main.java * 时间:2014年11月9日20:04:55 * 作者:cutter_point */ public class Main { public static void main(String [] args) { new ActionInvocation().invoke(); } } ActionInvocation.java /** * 书本:[struts

谈谈 Struts2 的拦截器

套话 相信很多人都用过 Struts2 了,当然,对 Struts2 的原理也都比较了解.之前在一个项目中就已经用到了,当初的理解也仅仅是局限在应用的层面上,对于更深层次的原理.机制,了解的并不是很多.现在回过头来,再看 Struts2 的拦截器,相比之前的理解,又别有另一番滋味. 理解 Struts2 的拦截器,英文名为 Interceptor ,至于为什么中文要翻译为拦截器,我想这一定是有原因的,肯定不是一拍脑门,就叫拦截器了(它必定有什么含义在里边).从字面的意思,就是在发送请求的时候,有

Struts2中拦截器的简单实现

Struts2的拦截器和Servlet过滤器类似.在执行Action的execute方法之前,Struts2会首先执行struts.xml中引用 的拦截器,在执行完所有引用的拦截器的intercept方法后,会执行Action的execute方法.在Struts2的拦截器体系中, Struts2的内建拦截器完成了该框架的大部分操作,所以实际的开发过程中通常都是使用系统的拦截器而已.当然我们也可以开发自己的拦截器,类似于过滤器的开发. 原理: Struts2拦截器的实现原理相对简单,当请求Stru