掌握Struts2拦截器:概念、用法与实战示例

需积分: 10 0 下载量 142 浏览量 更新于2024-07-28 收藏 557KB PPT 举报
在Struts框架中,拦截器是一个关键的概念,它允许我们在Action执行前后或动作方法调用期间添加额外的功能。Struts2是一个基于模型-视图-控制器(Model-View-Controller, MVC)的Web应用程序框架,它在Action处理请求的过程中引入了拦截器机制,以增强灵活性和可扩展性。 首先,为了确保一个良好的开发环境,建议使用Tomcat 5.5及以上版本,如Tomcat 6.0,以避免早期版本可能出现的问题。在XML配置文件中,如web.xml和struts.xml,务必注意拼写正确性和无用空格,并确保在文件顶部使用标准的XML声明和DTD声明,如`<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">`。DTD文件通常位于`struts2-core-2.x.x.jar`这样的Struts2库中。 Struts2的核心要点包括: 1. 页面标签库:使用`/struts-tags`作为标签库,提供了丰富的指令集来简化前端开发。 2. Action设计:Action类不再强制继承特定类,而是可以是普通的Java类,可以根据需求选择性地继承ActionSupport以利用其内置的验证和国际化支持。例如,创建一个名为`PublicLoginAction`的Action类,可以通过继承`ActionSupport`类来简化代码。 3. Struts.xml配置:Struts2的配置文件中不再需要明确定义form,而是通过`<action>`元素配置Action的方法。转向结果页面时,使用字符串标识符来引用预定义的结果。 4. Web.xml配置:在这里,需要注册`FilterDispatcher`类,它是Struts2中负责接收HTTP请求并分发到Action的过滤器。此外,Struts2具有良好的集成性,可以与Spring等其他技术无缝协作。 Struts2的工作原理涉及多个核心组件,如Servlet过滤器`FilterDispatcher`、ActionMapper、ActionProxy、ActionInvocation和Interceptor。这些组件共同构成了Struts2的请求处理流程: - `FilterDispatcher`:接收请求并根据配置决定哪个Action处理。 - `ActionMapper`:负责根据URL映射找到对应的Action。 - `ActionProxy`:创建Action对象的代理,处理Action的生命周期管理。 - `ActionInvocation`:代表一次Action执行过程,包含了所有执行步骤。 - `Interceptor`:拦截器插件,在Action执行前、后或方法调用时插入自定义逻辑,如验证、日志记录或事务管理。 关于Action的继承,`ActionSupport`是一个方便的选择,因为它提供了`validate()`方法进行数据校验,以及`getText()`方法用于国际化,可以从资源文件中获取相应语言的消息。 Struts2拦截器的主要目标包括理解框架的工作原理,掌握拦截器的工作方式,以及如何自定义拦截器进行功能扩展。通过深入理解Struts2的架构和组件,开发者可以更好地控制请求处理流程,增强应用程序的可维护性和灵活性。