MVC im Web-Context bedeutet, dass es einen Controller gibt, welcher verschiedene Views kommandiert. Informationen an die Views kann der Controller per Models übergeben. Die Komplexität und das Multithreading innerhalb einer Web-Applikation erfordert eine Strategie, damit der Überblick gewahrt werden kann. Es hat sich das MVC (model-2) durchgesetzt, welches hier eingeführt werden soll:
MVC-II Schematische Aufzeichnung Des MVC (model-2), bei dem zwei Modelle zum Zuge kommen:
Front-Controller So schrumpft die Logik des Front-Controllers auf ein Minimum:
View-Bean Das ViewBean erzeugt die nötigen Daten für die Ausgabe und übernimmt die Kommunikation mit dem Business-Bean
View-Bean Das ViewBean erzeugt die nötigen Daten für die Ausgabe und übernimmt die Kommunikation mit dem Business-Bean
View-Bean Das ViewBean erzeugt die nötigen Daten für die Ausgabe und übernimmt die Kommunikation mit dem Business-Bean
View-Servlet Das View-Servlet erzeugt die nötige Ausgabe (View) mit Hilfe der Daten des View-Beans
View-Servlet Das View-Servlet erzeugt die nötige Ausgabe (View) mit Hilfe der Daten des View-Beans
View-Servlet Das View-Servlet erzeugt die nötige Ausgabe (View) mit Hilfe der Daten des View-Beans
Mit Hilfe des MVC-model-2 wurde die Business-Logic und die View vom Front-Controller getrennt. Da die View nunmehr vor allem HTML-Code enthält, ist ein direktes Servlet für diese Arbeit eher hinderlich. Dafür hat sich das JSP durchgesetzt.
JSP Ein JSP ist im Gegensatz zum Servlet mehr für den XHTML- Programmierer gedacht:
Erzeugung eines JSPs Wird ein JSP im WEB-INF Verzeichnis erstellt, kann von aussen nicht zugegriffen werden.
Erzeugung eines JSPs Wird ein JSP im WEB-INF Verzeichnis erstellt, kann von aussen nicht zugegriffen werden.
Erzeugung eines JSPs Wird ein JSP im WEB-INF Verzeichnis erstellt, kann von aussen nicht zugegriffen werden.
Erzeugung eines JSPs Wird ein JSP im WEB-INF Verzeichnis erstellt, kann von aussen nicht zugegriffen werden.
Erzeugung eines JSPs Wird ein JSP im WEB-INF Verzeichnis erstellt, kann von aussen nicht zugegriffen werden.
JSP-Snippets JSPs können weitere JSPs enthalten. So kann Code-Duplication vermindert werden
Ansprechen des JSPs vom Front-Controller Ein JSP kann direkt vom Front-Controller aus angesprochen werden:
JSP Servlet Jedes JSP ist ein Servlet! Es wird beim ersten Gebrauch (per Runtime) in ein Servlet umgeschrieben und dann kompiliert. DEMO: Export Jasper
Um in einem JSP auf die Daten der Webapplikation zugreifen zu können, wird die Expression-Language (=EL) benutzt.
Implicit Objects ${implicitobject[ key ] [ method ][ method ] } Identifier pagecontext pagescope requestscope sessionscope applicationscope parametersparam paramvalues header headervalues cookie initparam Description PageContext instance Map-associates name and values of page-scoped attributes Map-associates name and values of request-scoped attributes Map-associates name and values of session-scoped attributes Map-associates name and values of application-scoped attributes Map-stores the primary values of the request parameters by name Map-stores all values of the request parameters as String arrays Map-stores the primary values of the request headers by name Map-stores all values of the request headers as String arrays Map-stores the cookies accompanying the request by name Map-stores the context initialization params of the appln by name
EL im Gebrauch Hier ein Beispiel, bei dem jeweils ein String aus dem Application / initparam -Scope angezeigt wird:
Operators Operator Description. Access a bean property or Map entry. [ ] Access an array or List element. ( ) Grouping of a subexpression for evaluation order.? : Conditional test: condition? iftrue : iffalse. + Addition. Subtraction. Multiplication. / or div Division. % or mod M Modulo (remainder). == or eq equality.! = or ne inequality. < or lt less than. > or gt greater than. <= or le less than or equal. >= or ge greater than or equal. && or and logical AND. or or logical OR.! or not Unary Boolean complement. empty Test for null,empty String,array or Collection. func(args) A function call.
Die Java Standard Tag Lib (=JSTL) ergänzt die EL u.a. um Schlaufen, sodass dieses Paar nun eine Programmiersprache ergibt (=Turing-Complete).
Core-Tags set remove catch if choose when otherwise foreach fortokens import url redirect param Setzt eine Variable in den angegebenen Gültigkeitsbereich Entfernt eine Variable aus dem angegebenen Gültigkeitsbereich Entspricht einem Catch-Block Einfache Bedingungsverzweigung. Ein Else-Zweig kann nicht vorkommen Für Bedingungsverzweigungen. Kann c:when und c:otherwise-tags enthalten. Kombiniert mit den when- und otherwise-tags markiert der Tag Bereiche, die der Nutzung von if, else if, else entsprechen Markiert einen von möglichen Bedingungszweigen innerhalb eines choose-blockes Markiert den Default-Zweig eines choose-blockes Stellt diverse Schleifenkonstrukte zur Verfügung. Die genaue Verwendungsart wird durch zahlreiche Attribute bestimmt Iteriert über Token in einem String. Die Nutzung kann durch diverse Attribute feinjustiert werden Lädt Ressourcen. Hat nichts mit dem ïmportstatement in Java-Anwendungen zu tun Erzeugt eine URL Führt einen HTTP-Redirect aus Dient der Übergabe von Parametern an die mit dem import-tag angesprochenen Ressourcen http://www.jsptutorial.org/content/jstl_core
JSTL und EL im Gebrauch Dieses Beispiel ist die JSP-Variante des RegisterServlets
JSTL und EL im Gebrauch Dieses Beispiel ist die JSP-Variante des RegisterServlets
JSTL und EL im Gebrauch Dieses Beispiel ist die JSP-Variante des RegisterServlets