【发布时间】:2012-11-17 18:57:26
【问题描述】:
在我的 Web 应用程序中,我希望在它的所有“页面”中包含某些必要的东西,例如与数据库的连接、用户信息、模板处理等。直到最近我才会有一个抽象的 servlet 来初始化以上所有在其doGet 或doPost 方法中,定义抽象方法doLocalLogic(HttpServletRequest req, HttpServletResponse res) 并从doGet/doPost 方法调用它。所有的扩展类都喜欢数据库连接、用户信息等。不幸的是,结果证明这是不好的做法。
我现在想的是创建一个抽象类来完成所有这些工作,我的 servlet 中的所有逻辑都将转移到这个类的子级,servlet 只会创建这些子级的实例。
但是,这会导致我的应用程序中的每个页面都多创建一个类。此外,当您创建一个新的 servlet 时,您没有任何需要重写的抽象方法形式的线索,就像您拥有一个抽象 servlet 一样。
有没有更好的方法?
【问题讨论】:
-
你能解释一下为什么“结果是不好的做法”吗?
-
@TomaszNurkiewicz 好吧,让我想到的是在同一个浏览器窗口中获得两个或更多完整页面。 IE。当我按下并按住 F5 时,我会得到同一页的两份或更多份。在某些情况下,当我重复导致错误的操作时,我会收到 +1 错误消息(即错误消息将被添加到错误堆栈中,我认为会重新启动)。我开始阅读该主题,并发现在 servlet 中保持状态是一个坏主意。