扩展 Struts 框架 FilterDispatcher 会是一个好习惯吗?
Posted
技术标签:
【中文标题】扩展 Struts 框架 FilterDispatcher 会是一个好习惯吗?【英文标题】:Will it be a good practice to extend the Struts Framework's FilterDispatcher? 【发布时间】:2011-09-04 07:49:24 【问题描述】:我正在尝试将 Hibernate 与 Struts 一起使用。如果我扩展 FilterDispacther
以调用 Hibernate Utility 类会是一个好习惯吗?
有人有意见吗?我想讨论一下这种方法的利弊。
【问题讨论】:
【参考方案1】:在我看来,您希望拥有类似于 Spring 的 OpenSessionInViewInterceptor 的功能。如果是,那么另一个框架已经做过这样的事情表明这是一个很好的做法。
【讨论】:
我不知道春天。但问题是FilterDispatcher
已被弃用。
为什么不只是一个过滤器? FilterDispatcher 为您做什么?
public void init(FilterConfig filterConfig) throws ServletException super.init(filterConfig); try HibernateUtil.createSessionFactory(); System.out.print("========= Application Intialization ========"); catch (HibernateException e) throw new ServletException();
FilterDispatcher 正在打开一个会话。没有别的了..【参考方案2】:
关键是您通常不想将过滤器映射到所有请求 - 例如,您不需要某些页面的事务 - FilterDispatcher 的 api 文档说
重要提示:此过滤器必须映射到所有请求。除非您确切知道自己在做什么,否则请始终映射到此 URL 模式:/*
所以 FilterDispatcher 要么全有,要么全无。这说明旧的好的过滤器是视图模式中打开会话的更好选择。
【讨论】:
【参考方案3】:不要扩展FilterDispatcher
。
正如 duffymo 所指出的,如果您需要为当前请求设置和关闭 Hibernate 会话,您应该使用拦截器。您也可以使用他链接的OpenSessionInViewInterceptor
,或者如果您不使用Spring,您可以使用create your own。
【讨论】:
以上是关于扩展 Struts 框架 FilterDispatcher 会是一个好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章