Frage

Ich baue kleine Website in Java (Spring MVC mit JSP Ansichten) und ich versuche, beste Lösung für die Herstellung und mit wenigen wiederverwendbaren Module (wie „latest news“ „kommende Veranstaltungen“, ...) zu finden.

Die Frage ist also: Portlets, Fliesen oder eine andere Technologie

War es hilfreich?

Lösung

Wenn Sie Spring MVC verwenden, dann würde ich empfehlen, Portlets verwenden. Im Frühjahr, Portlets sind nur leichte Controller, da sie nur für ein Fragment der gesamten Seite, und sind sehr einfach zu schreiben. Wenn Sie Frühling verwenden 2.5, dann können Sie alle Vorteile der neuen Anmerkung Unterstützung genießen, und sie passen gut in der ganzen Frühling Anwendung mit Dependency Injection und die anderen Vorteile des Frühlings mit.

Ein Portlet-Controller so ziemlich das gleiche wie ein Servlet-Controller ist, hier ist ein einfaches Beispiel:

@RequestMapping("VIEW")
@Controller
public class NewsPortlet {

    private NewsService newsService;

    @Autowired
    public NewsPortlet(NewsService newsService) {
        this.newsService = newsService;
    }

    @RequestMapping(method = RequestMethod.GET)
    public String view(Model model) {
        model.addAttribute(newsService.getLatests(10));
        return "news";        
    }
}

Hier wird ein Newsservice automatisch in die Steuerung eingespritzt werden. Die Ansicht Methode fügt ein List-Objekt zu dem Modell, das als $ {} Newsliste verfügbar sein wird, in der JSP. Frühling wird für eine Ansicht news.jsp genannt aussieht basierend auf dem Rückgabewert der Methode. Die RequestMapping sagt Frühling, dass diese contoller für den Ansichtsmodus des Portlets ist.

Die XML-Konfiguration muss nur dort, wo die Ansicht spezifizieren und Steuerungen befinden:

<!-- look for controllers and services here -->
<context:component-scan base-package="com.example.news"/>

<!-- look for views here -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/news/"/>
    <property name="suffix" value=".jsp"/>
</bean>

Wenn Sie wollen einfach einzubetten die Portlets in Ihrer bestehenden Anwendung, die Sie einen Portlet Container bündeln können, wie zum Beispiel eXo , Sun oder Apache . Wenn Sie Ihre Anwendung als eine Reihe von Portlets erstellen möchten, sollten die Sie eine vollständige geblasen portlal Lösung zu prüfen, wie Liferay Portal .

Andere Tipps

Fliesen kann ein Schmerz. Große Verbesserung gegenüber, was kam vor (das heißt nichts), sondern eher begrenzt.

Wicket könnte mehr sein, was Sie suchen, es sei denn, Sie auf JSP entschieden haben.

ich nicht empfehlen Portlets verwenden, es sei denn Ihre Anwendung wirklich ein Webportal ist.

Wenn Sie nur wollen "wiederverwendbare Komponenten" Verwendung JSP Tagfiles , sie sind tot einfache, aber extrem leistungsfähig, da sie die gleichen wie regelmäßige JSPs sind.

Ich habe Erfahrung mit Fliesen hat und die beteiligte Komplexität einfach ist es nicht wert.

Ich bin ein großer Fan von GWT . Damit können Sie Ihre Komponenten als normale Java-Klassen schreiben und dann können Sie sie in Ihre Seiten nach Belieben einsetzen. Das Ganze endet an Javascript kompiliert wird.

Hier ist ein Beispiel:

public class MyApplication implements EntryPoint, HistoryListener
{
    static final String INIT_STATE = "status";

    /**
     * This is the entry point method.  Instantiates the home page.
     */
    public void onModuleLoad ()
    {
        RootPanel.get ().setStyleName ("root");
        initHistorySupport ();
    }

    private void initHistorySupport ()
    {
        History.addHistoryListener (this);

        // check to see if there are any tokens passed at startup via the browser’s URI
        String token = History.getToken ();
        if (token.length () == 0)
        {
            onHistoryChanged (INIT_STATE);
        }
        else
        {
            onHistoryChanged (token);
        }
    }


    /**
     * Fired when the user clicks the browser's 'back' or 'forward' buttons.
     *
     * @param historyToken the token representing the current history state
     */
    public void onHistoryChanged (String historyToken)
    {
        RootPanel.get ().clear ();
        Page page;
        if (Page1.TOKEN.equalsIgnoreCase (historyToken))
        {
            page = new Page1 ();
        }
        else if (Page2.TOKEN.equalsIgnoreCase (historyToken))
        {
            page = new Page2 ();
        }
        else if (Page3.TOKEN.equalsIgnoreCase (historyToken))
        {
            page = new Page3 ();
        }
        RootPanel.get ().add (page);
    }
}

hatte ich eine Menge Erfahrung mit Portlets in Verbindung mit Ajax JSF (IceFaces) und Liferay Portal und ich würde sie jedem empfehlen - alles gut aussieht, wenn Tutorial und wahre Hölle in der Praxis zu lesen. Natürlich denke ich, dass sie viel bequemer und leichter mit Spring MVC und JSP sind, aber trotzdem werden Portlets nicht gut imho unterstützt Technologie.

Ich bin nicht 100% sicher, was „wieder verwendbare Komponenten“ bedeutet in diesem Zusammenhang, aber wenn Sie meinen, dass Sie bestimmte gemeinsame Elemente wollen auf jeder Seite, wie Banner angezeigt werden, Footer, Navigation Links, etc., dann schauen nicht weiter als SiteMesh . Mein Team hat es sich erfolgreich auf ein paar internationalisierte Web-Anwendungen verwendet wird.

Tapestry ist ein Java-Web-App-Framework mit einem Schwerpunkt auf wieder verwendbare Komponenten leicht zu schaffen.

Ich habe sitemesh verwendet, und es ist gut für eine Reihe von Seiten in Standard Kopf- und Fußzeilen Einwickeln, aber Tapestry ist besser für die Erstellung von Komponenten, die auf vielen Seiten verwendet werden, möglicherweise viele Male pro Seite. Tapestry Komponenten können andere Komponenten als Parameter übernehmen, die die Sitemesh Stil Verpackung ermöglicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top