In den letzten Jahren hat sich das Internet stark weiterentwickelt. Immer mehr Informationen und immer komplexere Dienste werden dort angeboten. Online-Shops sind ein prominentes Beispiel dafür. Wurden sie zunächst lediglich als "digitale Schaufenster" eingesetzt, die aus wenigen einfachen HTML-Seiten bestanden, sind sie heute komplizierte Systeme. Sie sind mit sozialen Netzwerken verbunden und bieten dem Kunden ein eigenes Konto, Warenkörbe, Wunschzettel und Gutscheinfunktionen an. Durch die vielfältigen Funktionen ist auch der Betrieb solcher Online-Shops komplizierter geworden: Kunden, Artikel und weitere sogenannte Geschäftsobjekte müssen von den Betreibern verwaltet werden. Um diese Komplexität beherrschbar zu machen, haben Softwaretechnikforscher auf der Basis etablierter Architekturen wie der MVC-Architektur Frameworks entwickelt, die dem Entwickler viel Arbeit bei der Programmierung von Web-Anwendungen abnehmen.
Die Spezifikation der Java Enterprise Edition hat zum Ziel, eine Softwarearchitektur für Java-basierte Geschäfts- und
Web-Anwendungen zu standardisieren. Die Java Enterprise Edition (Java EE) ist eine Erweiterung der Java Standard Edition (Java SE). Sie
enthält zusätzlich zu den Elementen der Standard Edition eine umfangreiche Bibliothek von für die Entwicklung von
Web-Anwendungen benötigten Funktionen, die Spezifikation eines auf der MVC-Architektur aufbauenden "Application Servers", der wichtige
Aufgaben einer Web-Anwendung übernimmt sowie weitere Werkzeuge.

Die Struktur und die Funktionen eines Application Servers sind in Java EE standardisiert und werden von einigen Softwareherstellern und gemeinnützigen Open Source-Communities realisiert. Man kann z.B. zwischen "WebSphere" von IBM, "GlassFish" von Oracle oder "Geronimo" von Apache wählen. Alle Application Server sind im Sinne der MVC-Architektur gleichzusetzen mit einem Server, auf dem die Web-Anwendung ausgeführt wird (siehe nachfolgende Abbildung).
Eine nach der Model-View-Controller-Architektur strukturierte Web-Anwendung ist wie jede andere Webseite über einen Internet-Browser erreichbar, der sich auf einem Client befindet (z.B. einem PC). Damit ist die Web-Anwendung Teil einer Client/Server-Architektur, die über das Kommunikationsprotokoll HTTP Nachrichten austauscht. Um die Web-Anwendung aufzurufen, sendet der Browser eine HTTP-Anfrage ("Request") an die View-Komponenten des Application Servers. Bei diesen Komponenten handelt es sich um erweiterte HTML-Seiten, die in der Regel dynamisch erzeugt werden. Werden zum Beispiel bei der Anfrage Informationen aus einer Datenbank benötigt, können sie direkt aus dem Modell ausgelesen, in die HTML-Seite integriert und in dieser Form an den Browser zurückgeschickt werden. Zu diesem Zweck werden zusätzliche Komponenten benötigt, die in Java Server Faces (JSF), einem Teil-Framework von Java EE, definiert sind. Beispiel-Implementierungen des JSF-Standard sind "Mojarra" als Teil des GlassFish Application Servers oder "MyFaces" von Apache.

Das Modell besteht aus den Java-Klassen des objektorientierten Fachkonzepts (z.B. Artikel und
Kunde). Sie werden in diesem Zusammenhang Beans genannt.
Benutzer einer Web-Anwendung können in der Regel nicht nur Informationen einholen, sondern auch selbst Inhalte hinzufügen bzw. manipulieren. Hierzu werden auf der Internetseite Formularfelder angeboten, die Eingaben des Benutzers aufnehmen können. Werden die Formulardaten abgeschickt (z.B. durch Drücken einer Schaltfläche), empfängt der Server eine Aktion. Die Aktion wird von einer Controller-Komponente entgegengenommen und verarbeitet. Der Controller kann dann die View-Komponenten damit beauftragen, dem Benutzer eine Bestätigungs- oder Fehlermeldung anzuzeigen. Ebenso ist er dafür verantwortlich, die Benutzereingaben im Modell einzutragen. Im Java EE-Standard übernimmt diese Funktionen ein sogenanntes Servlet, das in einem Servlet-Container ausgeführt wird.
Vor Implementierungsbeginn muss man sich für eine Implementierung dieser Standards entscheiden. So ist z.B. die Entwicklungsumgebung "NetBeans" leichtgewichtig und enthält bereits einen Servlet-Container mit dem Namen "Tomcat".