Jako początkujący do J2EE, ostatnio zacząłem rozwijać swój własny projekt od podstaw przy użyciu rdzenia J2EE: Servlets & Jsps.
Nie mogłem ocenić, czy struktura mojego projektu jest poprawna, czy nie. Oto struktura folderów mojego projektu.
Przed zadaniem pytania przyznaję, że nie mogłem odpowiedzieć ani nie uzasadnić, czy ktoś mnie pyta, dlaczego ten rodzaj struktury folderów. Pytanie: Czy to dobry znak, aby umieścić moje pliki jsp poza web-inf. Jeśli nie, dlaczego tak jest? Jeśli tak, dlaczego?
Czy istnieje jakaś standardowa konwencja dotycząca struktury folderów dla aplikacji sieciowej J2EE, wiem, że maven wprowadził pewne standardy, ale nadal możemy dostosować według wymagań, które uważam.
Zrobiłem trochę googlingu i znalazłem dwie referencje 1 2
gdzie w odpowiedziach nie ma na tej samej stronie, z której nie mogłem wyciągnąć żadnych wniosków.
Jakie kwestie należy wziąć pod uwagę przy tworzeniu struktury folderów aplikacji sieciowej J2EE, a co ważne, gdzie powinny znajdować się pliki Jsp i statyczne oraz dlaczego?
Odpowiedzi:
Standardowa struktura pliku WAR to:
Maven generuje to dla ciebie za pomocą src / main / java, zasobów, aplikacji internetowej i twoich zależności (umieszczając je w / lib) we wtyczce maven-webapp , ale to implementacja. Ważne jest, aby zdać sobie sprawę, że wszystko, co umieścisz w WEB-INF, nie jest dostępne z zewnątrz , podczas gdy wszystko w katalogu głównym WAR jest publiczne.
Zasadniczo nie chcesz dużo umieszczać w katalogu głównym, ponieważ chcesz, aby aplikacja obsługiwała cały dostęp za pomocą serwletów i filtrów zdefiniowanych w pliku web.xml. Często spotyka się index.html (lub .jsp) w katalogu głównym, który przekierowuje do serwletu, na przykład akcji Struts .
Typowe implementacje MVC, takie jak Stripes lub Struts, zalecają, aby użytkownik nie uzyskiwał bezpośredniego dostępu do stron JSP, preferując, aby strony JSP były dostępne tylko do wyświetlania. Zalecają tworzenie kontrolerów, które przesyłają dalej do stron JSP po przetworzeniu żądania, a strony JSP jedynie renderują wynik. Na przykład przesłanie formularza
/login
spowoduje uruchomienie akcji, która przetwarza żądanie logowania, utworzy sesję użytkownika i przekieruje użytkownika do zalogowanego widoku strony głównej JSP.źródło
Zwykła odpowiedź na „jaka jest właściwa droga?” lub „czy to właściwa droga?” jest ... to zależy .
Wszystko, co mogę zrobić, to przedstawić zalety i wady konkretnych pomysłów. Poniżej 100% mojej opinii. Nie znam żadnych konkretnych wymagań ani zasad. Jestem pewien, że ktoś się ze mną nie zgodzi.
JSP
Zastanówmy się, czy umieścić JSP w WEB-INF, czy nie.
Zalety umieszczania stron JSP w WEB-INF:
Wady umieszczania stron JSP w WEB-INF:
Pliki statyczne
Jeśli chodzi o czysto statyczne pliki, takie jak HTML, obraz, arkusz stylów, javascript itp., Umieść je w katalogu głównym (my_app w twoim przypadku), ale NIE / WEB-INF (ponieważ nie jest dostępny).
Ogólny układ
Jeśli chodzi o ogólny układ katalogu, zależy to nieco od procesu kompilacji. Lubię przechowywać wszystko pod „src” lub „source”, ponieważ wyjaśnia, jakie pliki są generowane przez kompilację, a które są czystymi plikami źródłowymi.
main
pozwala oddzielić kod testowy, taki jak klasy junit, od głównego kodu źródłowego, co również jest dobre. Ale jeśli nie masz żadnych testów jednostkowych (o nie!), To bez znaczenia jest rozróżnienie.Z drugiej strony, jeśli nie manipulujesz katalogiem głównym podczas kompilacji (np. Jeśli są to tylko pliki JSP i pliki statyczne), być może utrzymujesz go na najwyższym poziomie, np.
/webroot
Lub/deploy
kopiujesz pliki w razie potrzeby, takie jak Pliki .class lub .jar. Jest nawykiem ludzi (szczególnie deweloperów) do nadmiernej organizacji. Dobrym znakiem nadmiernej organizacji jest posiadanie dużej liczby folderów z tylko jednym podfolderem.Co pokazałeś
Wskazałeś, że przestrzegasz konwencji ustalonej przez maven, więc jeśli już korzystasz z maven, po prostu trzymaj się tego układu. Nie ma absolutnie nic złego w opisanym układzie.
źródło
Twoja aplikacja src / main / web z pewnością przypomina mi projekt maven. Który jest dobry.
W przypadku my_app / jsps nie jestem jednak pewien. Programiści zwykle zostawiają swój plik jsp w folderze aplikacji sieci Web lub, jeśli chcesz wykonać trochę mapowania adresów URL, w katalogu aplikacji / jsp.
!Ostrzeżenie! : Nigdy nie należy umieszczać pliku jsp na inf-web. Twój WEB-INF powinien zawierać tylko pliki XML do konfiguracji twojej strony. Pamiętaj, że twój jsp jest stroną internetową lub jej częścią.
Możesz używać nazw folderów takich jak szablon, częściowy ... cokolwiek Ci odpowiada. Nieznajomy powinien być łatwy do znalezienia. Po prostu oddziel różne typy treści, takie jak pełne strony, szablony, częściowe widoki ...
źródło
I zgadzam się z Brice . Jestem również początkującym w J2EE, ale myślę, że lepiej jest pracować na początku łatwo i wyraźnie.
Folder główny to WEBAPP i powinieneś sprawić, aby struktura sieciowa myślała, że większość stron się tam znajdzie. Jeśli nie, gdy strony komunikują się między nimi, prawdopodobnie nie można zarządzać relacjami plików bez błędów.
źródło
W rzeczywistości aplikacja WAR może zostać zbudowana bez
WEB-INF/web.xml
. Możliwe jest utworzenie aplikacji WAR zawierającej tylko klasy Java.Źródło: Elementy deskryptora wdrażania web.xml
W dzisiejszych czasach można zbudować WAR, niż wygląda JAR z
.war
rozszerzeniami :)Odpowiadając na twoje pytanie, struktura WAR zależy od twoich wymagań.
http://en.wikipedia.org/wiki/WAR_(Sun_file_format)
źródło