Die übliche Antwort auf "Was ist der richtige Weg?" oder "ist das der richtige weg?" ist ..... es kommt darauf an .
Ich kann Ihnen nur die Vor- und Nachteile bestimmter Ideen erklären. Was folgt ist zu 100% meine Meinung. Ich kenne keine spezifischen Anforderungen oder Regeln. Ich bin sicher, jemand wird mit mir nicht einverstanden sein.
JSP's
Lassen Sie uns darüber nachdenken, ob JSPs in WEB-INF eingefügt werden sollen oder nicht.
Vorteile von JSPs in WEB-INF:
- Sie steuern, wie die JSPs ausgeführt werden. Wenn eine JSP parametrisiert und wiederverwendbar sein soll (was mit einer JSP ohnehin sehr schwierig ist), können Sie sie in WEB-INF einfügen und ein Servlet oder einen Struts-Action-Controller oder einen anderen Front-Controller für die Vorverarbeitung verwenden und dann die Steuerung an die JSP übergeben, wobei der richtige Umgebungskontext (wie Anforderungsattribute, etwaige Sicherheitsüberprüfungen, Parameterbereinigung usw.) übergeben wird.
- Sie können programmgesteuert oder sogar auf Firewall- oder IDS-Ebene HTTP-Anforderungen an * .jsp blockieren, um die Wahrscheinlichkeit zu verringern, dass jemand eine JSP in das Webstammverzeichnis hochlädt und dann Code als Webserver ausführen kann. Sie müssten eine vorhandene JSP überschreiben. Dies ist kein großer Sicherheitsgewinn, macht jedoch Kompromisse etwas schwieriger.
- Erzwingt gute Gewohnheiten wie MVC, Front-Controller, Servlet-Filter, Abhängigkeitsinjektion usw. im Gegensatz zu einer großen monströsen JSP, die die ganze Arbeit selbst erledigt und schwer zu lesen / zu warten ist.
Nachteile von JSPs in WEB-INF:
- Sie können nicht direkt auf die Seite zugreifen, auch wenn es sich um eine einfache eigenständige Seite handelt, für die keine Vorabverarbeitung erforderlich ist. Dies liegt daran, dass Dateien unter / WEB-INF nicht von einem Servlet-Container bedient werden können.
Statische Dateien
In Bezug auf rein statische Dateien wie HTML, Bild, Stylesheet, Javascript usw. legen Sie diese unter das Webstammverzeichnis (in Ihrem Fall my_app), aber NICHT / WEB-INF (da nicht darauf zugegriffen werden kann).
Gesamtlayout
Das gesamte Verzeichnislayout hängt etwas von Ihrem Erstellungsprozess ab. Ich mag es, alles unter "src" oder "source" zu speichern, weil es klar macht, welche Dateien beim Erstellen erzeugt werden und welche reine Quelldateien sind. main
Ermöglicht es Ihnen, Testcode wie Junit-Klassen von Ihrem Hauptquellcode zu trennen, was ebenfalls gut ist. Aber wenn Sie keine Unit-Tests haben (oh nein!), Dann ist es eine bedeutungslose Unterscheidung.
Auf der anderen Seite, wenn Sie manipulieren nicht den Web - Root überhaupt während bauen (wie wenn sie alle JSP und statische Dateien sind), dann vielleicht Sie es auf der obersten Ebene zu halten, wie /webroot
oder /deploy
und Kopieren von Dateien in je nach Bedarf, wie zum Beispiel Klassen- oder JAR-Dateien. Es ist eine Angewohnheit von Menschen (insbesondere Entwicklern), sich zu überorganisieren. Ein gutes Zeichen für eine Überorganisation sind viele Ordner mit nur einem Unterordner.
Was du gezeigt hast
Sie haben angegeben, dass Sie eine von maven festgelegte Konvention befolgen. Wenn Sie also bereits maven verwenden, bleiben Sie einfach bei diesem Layout. An dem von Ihnen beschriebenen Layout ist absolut nichts auszusetzen.