使用面向Servlet的自定义框架,太多的servlet,这是一个问题

时间:2009-11-25 16:40:05

标签: java servlets java-ee

在我们的应用程序中,我们通过Servlet构建不同的Web应用程序。我们的应用程序中有许多Servlet和过滤器。

我们已经使用了不同的框架,但不是这个特定的遗留Web应用程序。一个问题是一个应用程序/ servlet完全独立于另一个。

如果您要重新设计使用此旧设计的应用程序,那么如果您的应用程序被太多的servlet破坏,您将如何解决该问题。

我正在考虑某种“Servlet Manager”,它会将一堆servlet分组,然后在适当的时候调用适当的servlet。

2 个答案:

答案 0 :(得分:5)

Spring可以将请求委托给现有的旧Servlet(使用ServletWrappingControllerServletForwardingController),如果您愿意的话。

因此,您可以将Spring DispatcherServlet放在旧servlet的前面,充分利用Spring的请求路由工具。 Spring还可以为您提供更容易在servlet之间共享内容的工具,但是为您提供servlet上下文中的共享组件。

答案 1 :(得分:1)

查找页面控制器/前端控制器模式。它归结为拥有一个控制请求的servlet。在servlet中,您需要查找与特定请求关联的操作(只是一个业务/域对象),然后执行它。

基本伪示例:

protected void processRequest(request, response) {
    Action action = ActionFactory.getAction(request);
    action.execute(request, response);
}

您可以使用原始url-pattern来返回所需的ActionActionFactory可以包含Map<String, Action>,其中密钥少于或多于原始url-pattern。您可以使用request.getPathInfo()来确定url-pattern。您可以在xml或属性文件中维护这些url-Action对,或者只是遵守实现Action的类的特殊命名约定。然后Action实现可以使用“原始”servlet编码。

但是,如果您对使用现有框架持开放态度,那么我建议您只使用一个。