Professional Documents
Culture Documents
Arhitektura Java Web Aplikacija Model-View-Controller (MVC)
Arhitektura Java Web Aplikacija Model-View-Controller (MVC)
Arhitektura Java Web Aplikacija Model-View-Controller (MVC)
APLIKACIJA
MODEL-VIEW-CONTROLLER (MVC)
1
Model 1 arhitektura
2
Primer Model 1 arhitekture – Login.jsp
3
Primer Model 1 arhitekture –
ProcessLogin.jsp
<%@ page session="false" %>
<jsp:useBean id="loginBean" scope="page"
class="model1.LoginBean" />
<%
if (loginBean.login(request.getParameter("userName"),
request.getParameter("password")))
request.getRequestDispatcher("Welcome.jsp").
forward(request, response);
else
//we have to use sendRedirect because we want to send the
//?error part to the Login.jsp page.
//with RequestDispatcher.forward(), the URL will still be
//the current URL
response.sendRedirect("Login.jsp?error=yes");
%>
4
Primer Model 1 arhitekture –
Welcome.jsp
<%@ page session="false" %>
<HTML>
<HEAD>
<TITLE>Welcome</TITLE>
</HEAD>
<BODY>
Welcome. You have successfully logged in.
</BODY>
</HTML>
5
Primer Model 1 arhitekture –
LoginBean.java
public class LoginBean {
6
Nedostaci Model 1 arhitekture
• Teško razgraničiti business logiku i interfejs
• Teška za održavanje
• Nije fleksibilna
7
MVC
Model 2 arhitektura, MVC bean
Model 2 arhitektura je MVC (Model-View-Controller) arhitektura
koja razgraničava business logiku
od korisničkog interfejsa
Postoji controller servlet između klijenta i JSP strana (ili servleta)
distribuira HTTP zahteve odgovarajućoj JSP stranici
na osnovu URL-a, parametara i stanja aplikacije
JSP strane su međusobno izolovane
9
Model 2 arhitektura
• Model
– Enkapsulira podatke i pravila za njihovo manipulisanje
nad kojima aplikacija radis
• View
– Predstavlja model u formi pogodnoj za interakciju,
tipično element korisničkog interfejsa
– Može da postoji više pogleda na jedan model
• Controller
– Procesira i odgovara na događaje, obično korisničke
akcije. Može da izazove promene na modelu
10
Implementacija MVC arhitekture pomoću
RequestDispatcher klase (1)
1. Definisati bean-ove da reprezentuju podatke
2. Koristiti servlet da obrađuje zahteve
Servlet čita request parametre, provera za nedostajuće i
loše podatke, poziva business logiku, itd.
3. Popuniti bean-ove
Servlet poziva business logiku (kod specifičan za aplikaciju)
ili kod za pristup podacima radi formiranja rezultata.
Rezultati se smeštaju u bean-ove definisane u koraku 1.
4. Smestiti bean u request, session ili servlet context
Servlet poziva setAttribute na request, session ili servlet
context objektima da smesti referencu na bean-ove koji
reprezentuju rezultate obrade zahteva
11
Implementacija MVC arhitekture pomoću
RequestDispatcher klase (2)
5. Forward request-a na JSP stranu
Servlet određuje koja JSP strana je odgovarajuća za
trenutnu situaciju i koristi forward metod
RequestDispatcher objekta da prebaci kontrolu na tu stranu
6. Izvući podatke iz bean-ova
JSP 1.2: JSP strana pristupa bean-ovima sa jsp:useBean.
Stranica koristi jsp:getProperty da ispiše vrednost property-
a bean-a
JSP 2.0: JSP stranica koristi ${nameFromServlet.property}
da ispiše vrednost property-a bean-a
JSP strana ne kreira ili modifikuje bean;
samo čita i prikazuje podatke koje je servlet kreirao
12
jsp:useBean u MVC arhitekturi
• JSP strana ne treba da kreira objekte
– Servlet, ne JSP strana, treba da kreira sve objekte
koji predstavljaju podatke. Da bi garantovali da
JSP strana neće kreirati objekte treba koristiti
• <jsp:useBean ... type="package.Class" />
umesto
• <jsp:useBean ... class="package.Class" />
• JSP strana ne bi smela da modifikuje objekte
– Treba koristiti jsp:getProperty, ali ne
jsp:setProperty.
13