今天上午学习了一下关于如何自定义Interceptor的知识,做了一个超级简单的自定义拦截器。
自定义的拦截器代码:
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class InterceptorByPersonal implements Interceptor
{
private static final long serialVersionUID = 1L;
public void destroy()
{
System.err.println("InterceptorByPersonal destroy . . .");
}
public void init()
{
System.err.println("InterceptorByPersonal initializing . . .");
}
public String intercept(ActionInvocation invocation) throws Exception
{
System.err.println("InterceptorByPersonal is invoked . . .");
String result = invocation.invoke();
return result;
}
}
struts.xml配置文件所需要的配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 引入struts框架的配置文件 -->
<include file="struts-default.xml"></include>
<package name="struts2_test" extends="struts-default">
<!-- 在配置文件中声明定义自己的拦截器InterceptorByPersonal -->
<interceptors>
<interceptor name="interceptorByPersonal"
class="com.harry.demo.interceptors.InterceptorByPersonal"></interceptor>
</interceptors>
<action name="userCase" class="com.harry.demo.actions.UsercaseAction">
<interceptor-ref name="interceptorByPersonal"/>
<interceptor-ref name="basicStack"/>
<interceptor-ref name="timer" />
<result name="input">/index.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
OK,基本上就是这样了,现在重新部署一下项目,发现在控制台输出了我自定义拦截器中init()方法的代码,说明拦截器在此时已经初始化了,然后我去访问上面配置文件中已经准备好的action,这时,在控制台会打印出intercept()方法中我要打印的语句,说明该方法被调用了。
接着,多访问几次该action,发现在控制台会一直输出
InterceptorByPersonal is invoked . . .
说明了拦截器在运行时,会在每次访问之前进行调用。
引申:我看了Struts2的API,该方法的介绍时这样的:
invoke
String invoke()
throws Exception
Invokes the next step in processing this ActionInvocation. If there are more Interceptors, this will call the next one. If Interceptors choose not to short-circuit ActionInvocation processing and return their own return code, they will call invoke() to allow the next Interceptor to execute. If there are no more Interceptors to be applied, the Action is executed. If the ActionProxy getExecuteResult() method returns true, the Result is also executed.
Throws:
Exception
大概意思明白,但是还是需要多理解!毕竟自己的英文水平有限。不过,我发现一点,如果我把自定义的Interceptor中的intercept方法返回值改为null,仍旧会进行传递。但是,如果在改方法中没有执行
ActionInvocation.invoke();
方法,就会出现空白页面!!!
则有趣儿的事情就发生了。当我访问action之后,页面变成空白了,什么反应都没有。这是为何呢?参照上面的API,发现这个方法的返回值似乎是在给下面的拦截器通知(或者没有其他拦截器了,就是通知调用action实例的方法了),我让其返回null,自然就啥都没了。我目前是这样认为的,就先这样吧!
修炼内功,CODING逐鹿!
分享到:
相关推荐
本项目“Struts2_自定义拦截器_用户权限验证”将深入探讨如何在Eclipse开发环境中,利用Struts2框架自定义拦截器进行用户权限的验证,并处理各个Action之间的跳转。 首先,我们来看自定义拦截器的创建。在Struts2中...
这个压缩包文件“struts2_api.rar”包含了关于Struts2框架的API文档,是开发者理解和使用Struts2框架的重要参考资料。以下是这个API文档中涵盖的关键知识点: 1. **Action接口与ActionSupport类**:在Struts2中,...
`Struts2_API.chm`文件是一个帮助文档,通常以CHM(Compiled HTML Help)格式存在,这是一种由微软开发的、用于存储HTML文档的压缩格式,便于离线阅读。CHM文件包含索引、搜索功能,使得用户可以快速找到所需的信息...
5. **自定义Interceptor**:开发自定义Interceptor需要继承`org.apache.struts2.interceptor.Interceptor`接口或实现`com.opensymphony.xwork2.interceptor.Interceptor`接口,并重写`intercept()`方法。在`...
在"Struts2_Test"项目中,可能包含了各种示例,比如简单的拦截器实现、拦截器栈配置、自定义拦截器的编写等,通过实际运行和调试这些例子,可以帮助开发者更好地理解和掌握Struts2拦截器的使用。 总的来说,Struts2...
这个"Struts2_CRUD.rar"压缩包包含了一个基于Struts2的学生选课系统的源代码,可以帮助我们深入理解如何使用Struts2进行CRUD(创建、读取、更新和删除)操作。 首先,让我们来探讨一下Struts2框架的基础。Struts2是...
3.struts2_interceptor 拦截器,自定义拦截器 4.struts2_log4j 5.struts2_spring struts spring 整合 以上功能包含完整示例代码 Eclipse Java EE IDE for Web Developers. Build id: 20090920-1017 Tomcat6.0 下编译...
8. **Interceptor**:拦截器是Struts1中的一个扩展点,可以在Action执行前后插入自定义逻辑。 9. **Plug-in**:插件机制允许开发者对Struts1的行为进行扩展。 通过深入理解Struts1的API,开发者可以更有效地实现...
Struts2_3500_my_interceptor这个文件可能包含了一个示例项目的源代码,你可以通过学习和分析其中的代码,更深入地理解如何在Struts2中创建和使用自定义拦截器。通过实际操作,你会发现自定义拦截器是Struts2框架中...
1. **强大的动作框架**:Struts2的动作框架基于拦截器(Interceptor)机制,允许开发者自定义拦截器以实现如事务管理、日志记录等功能。在"Struts2_0100_Hell0"项目中,你将看到一个简单的Action类,它是业务逻辑的...
Struts2 Interceptor详解 Struts2作为一款流行的Java Web框架,其强大的功能之一就是拦截器(Interceptor)。拦截器在MVC模式中扮演着重要角色,它可以对请求进行预处理和后处理,提供了灵活的扩展机制,使得业务...
本教程“Struts2_1100_SimpleDataValidation”聚焦于Struts2中的数据验证功能,这是一个核心特性,用于确保用户输入的数据符合预设的业务规则,从而提高应用的安全性和可靠性。 在Struts2框架中,数据验证分为两个...
此外,Struts2还引入了拦截器(Interceptor)机制,允许在Action执行前后执行自定义逻辑,例如日志记录、权限检查等。 在"struts2_login"场景中,通常会有一个登录表单,用户输入用户名和密码,然后提交到服务器。...
Struts2_API文档是开发者在使用Struts2框架时的重要参考资料,包含了框架中所有类、接口、方法及其实现的详细描述,为编程提供了详细的指导。 在Struts2_API文档中,我们可以找到以下关键知识点: 1. **Action接口...
在本资料"struts2_ppt"中,我们可以预见到其内容可能包含了对Struts2框架的深入讲解和使用教程。 首先,Struts2的核心组件包括Action、Result、Interceptor和ValueStack。Action是业务逻辑的载体,它处理用户请求并...
Struts2提供了丰富的特性,包括拦截器(Interceptor)、动态方法调用(Dynamic Method Invocation)、自定义标记库(Custom Tags)等,使得开发者能够更灵活地控制请求处理流程,同时降低了视图层和业务逻辑层的耦合...
在"struts2_core_JAR开发包"中,包含了Struts2框架的核心库,包括Action、Interceptor、Result等实现类和接口,以及相关配置和工具类。使用这个JAR文件,开发者可以快速搭建起一个基于Struts2的Web应用,实现MVC模式...
5. 实现流程交互:在Struts2的Action中触发流程的开始、完成或转交任务,并通过Interceptor处理流程中的业务规则。 通过以上步骤,我们就可以构建出一个集成了Spring、Struts2和JBPM的完整系统,它能够优雅地处理...
本资源“struts2_登录”可能是关于如何实现Struts2框架下的用户登录功能的一个练习项目。 在Struts2中,登录功能通常涉及到以下几个关键知识点: 1. **Action类**:Struts2的核心组件之一,它是业务逻辑的载体。你...
本文件包"Struts2_Validation"显然是关于Struts2验证机制的详细资源,可能是包括教程、示例代码或配置文件,遗憾的是,由于我们无法直接访问压缩包内容,只能基于标题和描述进行知识讲解。 Struts2的数据验证机制是...