Wpis z mikrobloga

#programowanie #mvc #java

Chodzi mi o zwykłe MVC (w Java EE z serwletami i stronami JSP, nie o Spring MVC z Dispatcherem).
Albo ja nie rozumiem, albo w książce jest błąd.

Mam w książce tak:
[[po polsku]](http://i.imgur.com/5YXQ52K.png), [[po angielsku]](http://i.imgur.com/Bae9heg.png) (jak kto woli, to jest to samo)

Ale coś mi się nie zgadza.

1. Serwlet kontrolera obsługuje żądanie użytkownika.

2. Serwlet kontrolera tworzy instancję odpowiedniego obiektu JavaBeans na podstawie żądania.

3. Serwlet kontrolera komunikuje się z warstwą pośrednią lub bezpośrednio z bazą danych w celu pobrania wymaganych danych.

4. Kontroler ustawia obiekt JavaBeans w jednym z następujących kontekstów: żądanie, sesja lub aplikacja.

5. Kontroler wysyła żądanie do następnego widoku na podstawie adresu URL żądania.

6. Widok wykorzystuje obiekt JavaBeans z punktu 4. do wyświetlania danych.


1. OK
2. Jakiego obiektu? Obiektu modelu? Na obrazku jest, że uzyskuje dostęp do DAO.
3. Z którą warstwą pośrednią? Kontroler komunikuje się z modelem, który dopiero komunikuje się z bazą (tu nie ma strzałki). A na obrazku dostęp do DAO był w punkcie 2.
4. No niech będzie, chociaż nie rozumiem.
5. Nie zgadza się z obrazkiem. Na obrazku widok korzysta z modelu.
6. OK.

Szukam w necie i znalazłem niemal identyczny obrazek (opis bardzo podobny), ale strzałki są bardzo inaczej inaczej:
[[po angielsku]](http://i.imgur.com/rlvXqqX.png)
Opis taki sam do obrazka z innymi strzałkami!

Która wersja jest poprawna?

mk321 - #programowanie #mvc #java 

Chodzi mi o zwykłe MVC (w Java EE z serwletami ...

źródło: comment_dcFtipkTZMx5VNqhqEolLIzau3LUijPN.jpg

Pobierz
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mk321: 2 - obiektu, jaki chce, nie?
3. z jaka chce, to przyklad tylko.
4. czemu nie? Moze kontroler wsadzac obiekty do scopa
5. zgadza sie. JSP to tak naprawde servlet i wewnetrzenie jest to rozpatrywane jako kolejny request.

Jak dla mnie jest wszystko
  • Odpowiedz
Kontroler uzywa dao lub czegokolwiek i wyciaga jakies dane z bazy potem ustawia je w javabeans nastepnie renderuje jsp ktore uzywa danych z javabeans. Na obu pbrazkach jest to samo tylko troszke inaczej wyglada na i na tym angielskim jest reaponse
  • Odpowiedz
@M4ks: @cjkas:

2. Racja. Tworzy obiekt takiego typu jak ma w modelu i łączy się z bazą, żeby pobrać do niego dane.
3. Te pobrane dane z bazy ustawia w modelu.
4. Renderuje widok z JSP. To po co te konteksty? Ten obiekt modelu musi być najpierw ustawiony w kontekście, żeby można było wyrenderować stronę JSP?
5. Tu nie rozumiem. Po co JSP sięga do modelu jak już
  • Odpowiedz
4. Ten obiekt modelu musi być najpierw ustawiony w kontekście, żeby można było wyrenderować stronę JSP?


@mk321: tak, a jak inaczej chcesz to przekazac?

5. Tu nie rozumiem. Po co JSP sięga do modelu jak już miała wcześniej te dane? (już strona się wyrenderowała i powinna iść odpowiedź do klienta)


@mk321: JPS nigdzie nie "siega", po prostu renderowanie JSP to tak naprawde wywolanie kolejnego serwleta, cos jakbys zrobil
  • Odpowiedz
@M4ks: nie ogarniam tego punktu 5.

4. Mam dane modelu w kontekście.
5. Kontroler wywołuje stronę JSP (tak jakby to był serwlet), że ona co robi? Pobiera dane z tego kontekstu (dane z modelu)?
Jaki tam jest URL? Nazwa widoku JSP?
  • Odpowiedz
Jaki tam jest URL? Nazwa widoku JSP?


@mk321: otóż to. Zobacz sobie np. w Tomcacie - w conf masz wielki plik web.xml - tam masz "domyslne wartosci"
  • Odpowiedz