Struts2拦截器与过滤器详解及使用

需积分: 31 1 下载量 177 浏览量 更新于2024-09-09 收藏 3KB TXT 举报
"本文讨论了拦截器和控制器的区别,主要集中在Struts2框架中的拦截器(Interceptor)和过滤器(Filter)的差异。同时,提到了Struts2的配置、Token机制以及Hibernate ORM框架的简单介绍。" 在Web开发中,拦截器和控制器是两种重要的组件,它们各自扮演着不同的角色。拦截器是基于动态代理的,而过滤器则是基于函数回调的。这意味着拦截器不依赖于Servlet容器,通常在Spring框架中更受欢迎,因为它能够利用依赖注入。而过滤器则直接与Servlet容器绑定,如Web.xml配置文件中定义的Filter。在执行顺序上,拦截器可以在方法调用前后,甚至异常处理时介入,而过滤器只能在请求进入和离开时执行。 在Struts2框架中,拦截器的配置通常在struts.xml文件中进行。例如,可以创建一个名为"myInterceptor"的拦截器类,并将其加入到一个自定义的拦截器栈"myStack"中,这个栈会包含默认的拦截器栈和自定义的拦截器。然后,通过`<default-interceptor-ref>`标签将这个拦截器栈设为默认,使得所有Action都会经过这个拦截器链。此外,还可以定义全局结果,如错误处理页面。 Token机制是防止重复提交的有效手段,它通过在表单中插入一个唯一的Token,当请求被提交时,如果发现Token已经使用过,就会返回一个错误页面。例如,在Struts2中,可以通过`<interceptor-ref name="token"></interceptor-ref>`来配置Token拦截器,并在JSP页面中使用`s:token`标签生成Token。 Struts2框架的设计思想是提供对Servlet的封装,简化资源调配和映射。它的使用流程包括:URL -> Filter -> struts.xml -> Package -> Action -> Method。Struts2的核心配置文件struts.xml负责定义Action、Result和Interceptor的映射。在CRUD操作中,Struts2结合DAO层可以方便地完成数据的增删改查,同时支持搜索、多删和假删等功能。Converter和i18n用于数据转换和国际化支持,而ModeDriven和Stack则提供了更丰富的功能。 最后,提及了Hibernate ORM框架,它实现了对象关系映射(ORM),使得Java对象可以直接与关系数据库交互。通过持久化类和对应的映射文件(如UserBean.hbm.xml),Hibernate可以帮助开发者轻松地管理数据库操作。 总结来说,拦截器和控制器在Web开发中有各自的适用场景,理解它们的区别和使用方式对于优化应用程序的性能和逻辑至关重要。在Struts2框架中,拦截器提供了更为灵活和强大的功能,如异常处理、事务管理和权限控制,而过滤器则主要用于数据的预处理和后处理。