Arhitektura Java Web Aplikacija Model-View-Controller (MVC)

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 13

ARHITEKTURA JAVA WEB

APLIKACIJA
MODEL-VIEW-CONTROLLER (MVC)

1
Model 1 arhitektura

Page-centric model u kome se aplikacija sastoji od niza JSP


strana koje koriste JavaBean komponente za obavljanje
određenih operacija
Svaka JSP strana procesira sopstveni ulaz
Aplikacije koje implementiraju ovakav tip arhitekture
obično imaju niz JSP stranica gde se očekuje da će korisnik
ići od prve do sledeće u nizu
Ako je potrebno, servlet ili HTML strana mogu da zamene
JSP stranu

2
Primer Model 1 arhitekture – Login.jsp

<%@ page session="false" %>


<HTML>
<HEAD><TITLE>Login</TITLE></HEAD>
<BODY>
<FORM METHOD="POST" ACTION="ProcessLogin.jsp">
<% if (request.getParameter("error")!=null) { %>
Login failed. Please try again <BR><HR>
<% } %>
<TABLE>
<TR><TD>User Name</TD> <TD><INPUT TYPE=TEXT NAME="userName"></TD>
</TR>
<TR><TD>Password</TD><TD><INPUT TYPE=PASSWORD
NAME="password"></TD></TR>
<TR><TD COLSPAN="2“><INPUT TYPE=SUBMIT VALUE="Login"></TD> </TR>
</TABLE>
</FORM>
</BODY>
</HTML>

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 {

public boolean login(String userName, String


password) {
if (userName==null || password==null || !
(userName.equals(“Pera") &&
password.equals(“Peric")))
return false;
else
return true;
}
}

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

You might also like