在我们的应用程序中,我们通过Servlet构建不同的Web应用程序。我们的应用程序中有许多Servlet和过滤器。
我们已经使用了不同的框架,但不是这个特定的遗留Web应用程序。一个问题是一个应用程序/ servlet完全独立于另一个。
如果您要重新设计使用此旧设计的应用程序,那么如果您的应用程序被太多的servlet破坏,您将如何解决该问题。
我正在考虑某种“Servlet Manager”,它会将一堆servlet分组,然后在适当的时候调用适当的servlet。
答案 0 :(得分:5)
Spring可以将请求委托给现有的旧Servlet(使用ServletWrappingController或ServletForwardingController),如果您愿意的话。
因此,您可以将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
来返回所需的Action
。 ActionFactory
可以包含Map<String, Action>
,其中密钥少于或多于原始url-pattern
。您可以使用request.getPathInfo()
来确定url-pattern
。您可以在xml或属性文件中维护这些url-Action对,或者只是遵守实现Action
的类的特殊命名约定。然后Action
实现可以使用“原始”servlet编码。
但是,如果您对使用现有框架持开放态度,那么我建议您只使用一个。