2009-11-25 32 views
1

在我們的應用程序中,我們通過Servlet構建不同的Web應用程序。我們的應用程序中有很多很多的Servlet和過濾器。使用面向Servlet的框架,太多的servlet,這是一個問題

我們已經使用不同的框架,但不適用於這個特定的遺留Web應用程序。一個問題是一個應用程序/ servlet完全獨立於另一個應用程序/ servlet。

如果您要重新設計使用此舊版設計的應用程序,您將如何解決您的應用程序因過多的servlet而中斷應用程序的問題。

我正在考慮某種「Servlet管理器」,它會將一堆servlet分組,然後在適當的時候調用適當的servlet。

回答

5

Spring有能力將請求委託給現有的舊Servlets(使用ServletWrappingControllerServletForwardingController),如果這是您的願望。

因此,您可以在您的傳統servlet的前端放置Spring DispatcherServlet,充分利用Spring的請求路由功能。 Spring還可以爲您提供更容易在Servlet之間共享內容的工具,但將共享組件放置在Servlet上下文中供您使用。

1

查找頁面控制器/前端控制器模式。它歸結爲擁有一個控制請求的單個servlet。在servlet內部,您需要查找與特定請求關聯的操作(只是一個業務/域對象),然後執行它。

基本僞例如:

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

你可以使用原始url-pattern s到返回所需ActionActionFactory可以容納Map<String, Action>,其中密鑰是更少或更多原始url-pattern。您可以使用request.getPathInfo()來確定url-pattern。您可以將這些url-Action對維護在xml或屬性文件中,或者只是對實施Action的類實施特殊的命名約定。然後Action實現可以使用「原始」servlet編碼。但是,如果您打算使用現有的框架,那麼我會建議只採用一個框架。