S J.

S J. Programista

Temat: Modułowa budowa aplikacja (np. front, admin)

Witam,

Chciałbym w swojej aplikacji utworzyć kilka różnych modułów, zawierających własne komponenty i widoki.
Głównym zastosowaniem tego modelu jest utworzenie części dostępnej dla zwykłego użytkownika oraz części związanej z administracją takiej strony. Chciałbym aby te 2 części były podzielone na 2 różne lokalizacja. Przykład rozkładu katalogów dla tej aplikacji:

/aplikacja
- /WEB-INF
- - /modules
- - - - /front
- - - - - - /classes
- - - - - - /web
- - - - - - /views
- - - - - - index.xhtml
- - - - /admin
- - - - - - /classes
- - - - - - /web
- - - - - - /views
- - - - - - index.xhtml

Oczywiście powyższa struktura nie musi w tej chili działać, chciałem tylko zaprezentować koncepcję jaką chcę osiągnąć. :)

Aby dostać się do poszczególnych modułów (do odpowiedniego pliku index.xhtml) wywołuje następujące linki:

Dostęp do modułu 'front':
http://localhost:8080/ProjectJSF/index.xhtml

Dostęp do modułu 'admin':
http://localhost:8080/ProjectJSF/admin/index.xhtml

Jak mogę osiągnąć taki efekt?

konto usunięte

Temat: Modułowa budowa aplikacja (np. front, admin)

Specyfikacja JEE nie pozwala na bezpośredni dostęp do plików JSP/JSF znajdujących się wewnątrz katalogu WEB-INF.

Jeśli chcesz coś takiego osiągnąć, to musisz ustawić sobie jakiś servlet oraz odpowiedni servlet-mapping i przekierowywać żądania.

Generalnie, sądząc po Twoich dotychczasowych pytaniach, polecam jakąś lekturę o programowaniu JSP/Servlet etc. Książka: http://www.amazon.com/Head-First-Servlets-JSP-Certifie... cieszy się dużym uznaniem.

Edit: Widzę, że pracowałeś jako programista PHP. Wydaje mi się, że zanim na dobre zaczniesz bawić się JEE przeczytaj chociaż jedną uznaną pozycję w tym temacie i zrób sobie wszystkie ćwiczenia w niej zawarte.Rafał Głowiński edytował(a) ten post dnia 15.04.12 o godzinie 11:04
S J.

S J. Programista

Temat: Modułowa budowa aplikacja (np. front, admin)

Akurat książkę którą wskazałeś, miałem okazję przeczytać w ostatnim czasie.
W tej chwili czytam:
http://helion.pl/ksiazki/javaserver-faces-wydanie-iii-...
oraz posiłkuje się pozycją:
http://helion.pl/ksiazki/enterprise-javabeans-3-0-wyda...

Akurat w sprawie bezpośredniego dostępu do katalogu WEB-INF, problem ten nie jest mi obcy.

Właśnie napisałem Servlet który przechwytuje wszystkie żądania pochodzące z modułu admin.

ServletAdmin .java

public class ServletAdmin extends HttpServlet
{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
RequestDispatcher rd = req.getRequestDispatcher("modules/admin/views/index.jsp");
rd.forward(req, resp);
}
}


web.xml

<servlet>
<servlet-name>ServletAdmin</servlet-name>
<servlet-class>classes.ServletAdmin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletAdmin</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>


Niestety w tym wypadku po odpaleniu strony w przeglądarce aplikacja się zapętla. Plik "admin/views/index.jsp" oczywiście istnieje w lokalizacji:
./WEB-INF/modules/admin/views/index.jsp


HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: PWC1232: Exceeded maximum depth for nested request dispatches: 20
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.2 logs.
Sławomir J. edytował(a) ten post dnia 15.04.12 o godzinie 11:46
Krzysztof T.

Krzysztof T. Umysł nie jest
naczyniem, które
trzeba napełnić,
lecz ogn...

Temat: Modułowa budowa aplikacja (np. front, admin)

Poczytaj o Struts 1/Struts 2 i pokombinuj z tym frameworkiem - polecam -->http://www.mkyong.com/tutorials/struts-tutorials/Krzysztof Telka edytował(a) ten post dnia 15.04.12 o godzinie 21:18

konto usunięte

Temat: Modułowa budowa aplikacja (np. front, admin)

Nie wygląda mi to najlepiej....

Wydaje mi się, że część "modules" zostanie pominięta w wyszukaniu i zacznie od "/admin" co powoduje efekt już Ci znany (sprawdź w specyfikacji albo jakiejś książce do SCWCD).

Moim zdaniem redirect powinien wyglądać tak:

req.getRequestDispatcher("/WEB-INF/modules/admin/views/index.jsp").forward(..., ...);
S J.

S J. Programista

Temat: Modułowa budowa aplikacja (np. front, admin)

Jednak ostatecznie postanowiłem, napisać swoją aplikację bez użycia JSF. W tym wypadku skorzystam ze zwykłych Serwletów oraz stron JSP. Ta technologia jest mi jako tako znana i nie powinna stawiać tyle ograniczeń w mojej specyficznej aplikacja, jak to robi JSF :)

Jednak stwierdzam, że w moim przypadku, wybrałem złe narzędzie. JSF jest bardzo fajny, jednak nie jest do wszystkiego ;)
Tomasz B.

Tomasz B. Senior Software
Engineer

Temat: Modułowa budowa aplikacja (np. front, admin)

Podobną strukturę uzyskałem w swojej aplikacji opartej na JSF, założenie moje było że moduły znajdujące się w WEB-INF nie są bezpośrednio wywoływane z adresu URl przeglądarki tylko dynamicznie. Za pomocą akcji użytkownika. Strona ma się cała nie renderować

Wzorując się jak jest zrobione zarządzanie modułami na http://icefaces-showcase.icesoft.org/ napisałem swoją aplikację. Ja zamiast czytać książek czytam sobie kod całej aplikacji showcase pobrany z icefaces.org.

W JSF fajnie są komponenty dzięki czemu można zaoszczędzić sporo czasu

Następna dyskusja:

JSF WYSiWIG/aplikacja typu ...




Wyślij zaproszenie do