JSP'de MVC (Archidoku)
โก Akฤฑllฤฑ รzet
JSP'de MVC, uygulama ile ilgili konularฤฑ Model, Gรถrรผnรผm ve Denetleyici katmanlarฤฑna ayฤฑrฤฑr; burada JSP Gรถrรผnรผmรผ oluลturur, bir Servlet Denetleyici gรถrevi gรถrรผr ve JavaBeans, temiz, test edilebilir ve bakฤฑmฤฑ kolay web uygulamalarฤฑ iรงin modeli รถzetler.
MVC nedir?
MVC, Model-View-Controller'ฤฑn kฤฑsaltmasฤฑdฤฑr. Bir uygulamayฤฑ รผรง birbirine baฤlฤฑ katmana ayฤฑran bir yazฤฑlฤฑm tasarฤฑm desenidir: iล mantฤฑฤฤฑ, sunum ve veri. MVC'de:
- M Model anlamฤฑna gelir.
- V View'in kฤฑsaltmasฤฑdฤฑr.
- C Kontrolcรผ anlamฤฑna gelir.
MVC, uygulama geliลtirmenin sistematik bir yoludur ve akฤฑล Gรถrรผnรผm katmanฤฑnda baลlar. Kullanฤฑcฤฑ tarafฤฑndan istek oluลturulur, Denetleyici katmanฤฑnda iลlenir ve veri eklemek veya almak iรงin Model katmanฤฑna gรถnderilir. Model daha sonra, Gรถrรผnรผm katmanฤฑnฤฑn kullanฤฑcฤฑ iรงin gรถrรผntรผlediฤi bir baลarฤฑ veya baลarฤฑsฤฑzlฤฑk yanฤฑtฤฑ dรถndรผrรผr. MVC mimarisi ลemasฤฑ aลaฤฤฑda gรถsterilmiลtir:

MVC'yi Neden Kullanmalฤฑyฤฑz? ArchiJSP'de doku?
Atlamadan รถnceping MVC'nin JSP'de nasฤฑl รงalฤฑลtฤฑฤฤฑnฤฑ anlamak, geliลtiricilerin bu modeli neden benimsediฤini kavramaya yardฤฑmcฤฑ olur. ฤฐล mantฤฑฤฤฑnฤฑ, veritabanฤฑ รงaฤrฤฑlarฤฑnฤฑ ve HTML'i tek bir JSP sayfasฤฑnda karฤฑลtฤฑrmak, hฤฑzla bakฤฑmฤฑ zor, karmaลฤฑk bir kod yฤฑฤฤฑnฤฑ oluลturur. MVC, her bir konuya kendi katmanฤฑnฤฑ vererek bu sorunu รงรถzer:
- Code Her dosyanฤฑn tek bir sorumluluฤu olduฤu iรงin okumasฤฑ daha kolay hale geliyor.
- Ekipler, View, Controller ve Model รผzerinde รงakฤฑลma olmadan paralel olarak รงalฤฑลabilirler.
- Birim testleri, JSP oluลturma iลlemine dokunmadan doฤrudan Modeli hedef alฤฑr.
- takasping JSON yanฤฑtฤฑ veya farklฤฑ bir ลablon motoru iรงin JSP gรถrรผnรผmรผ oluลturmak oldukรงa kolaydฤฑr.
MVC, JSP'de Nasฤฑl รalฤฑลฤฑr?
JSP tabanlฤฑ bir MVC uygulamasฤฑnda, her katman belirli bir bileลene karลฤฑlฤฑk gelir. Java Teknoloji. JSP dosyalarฤฑ Gรถrรผnรผmรผ oluลturur, bir Servlet ise Denetleyici gรถrevi gรถrรผr ve JavaModel, fasulye katmanlarฤฑndan oluลur. Aลaฤฤฑdaki bรถlรผmler her katmanฤฑn sorumluluklarฤฑnฤฑ aรงฤฑklamaktadฤฑr.
Model Katmanฤฑ
- Bu, sistemin iล mantฤฑฤฤฑnฤฑ iรงeren veri katmanฤฑdฤฑr.
- Baลvuruya ait tรผm verileri iรงerir.
- Aynฤฑ zamanda uygulamanฤฑn durumunu da temsil eder.
- ลuradan inลa edilmiลtir: JavaBaฤlantฤฑ kuran Beans veya POJO'lar veritabanฤฑ.
- Denetleyici, veri almak iรงin Model ile iletiลim kurar ve bu veriyi Gรถrรผnรผm katmanฤฑna iletir.
- Model, veritabanฤฑna baฤlanฤฑr ve verileri veritabanฤฑna kaydeder.
Katmanฤฑ Gรถrรผntรผle
- Bu, uygulamanฤฑn sunum katmanฤฑdฤฑr.
- HTML, JSP, CSS ve diฤer bileลenlerden oluลmaktadฤฑr. JavaSenaryo.
- Genellikle uygulamanฤฑn kullanฤฑcฤฑ arayรผzรผnรผ gรถsterir.
- Bu, Controller'dan alฤฑnan verileri gรถrรผntรผler; Controller ise Model katmanฤฑndaki sฤฑnฤฑflardan veri alฤฑr.
- Gรถrรผnรผm katmanฤฑ, iล mantฤฑฤฤฑ iรงermeden uygulamanฤฑn kullanฤฑcฤฑ arayรผzรผnde verileri gรถrรผntรผler.
Denetleyici Katmanฤฑ
- Gรถrรผnรผm ve Model arasฤฑnda bir arayรผz gรถrevi gรถrรผr.
- Gรถrรผnรผm katmanฤฑndan gelen tรผm istekleri yakalar.
- Gรถrรผnรผm katmanฤฑndan gelen istekleri alฤฑr, iลler ve istek รผzerinde doฤrulama yapar.
- ฤฐstek, veri iลleme iรงin Model katmanฤฑna iletilir. ฤฐstek iลlendikten sonra, Model gerekli bilgilerle birlikte sonucu Denetleyiciye geri gรถnderir ve Gรถrรผnรผm bu sonucu gรถrรผntรผler.
MVC'nin Avantajlarฤฑ Archidoku
MVC'nin avantajlarฤฑ ลunlardฤฑr:
- Bakฤฑmฤฑ kolay
- Geniลletmesi kolay
- Test edilmesi kolay
- Navigasyon kontrolรผ merkezileลtirilmiลtir
- Katmanlar arasฤฑndaki gevลek baฤlantฤฑ, yeniden dรผzenlemeyi daha gรผvenli hale getirir.
- Birden fazla ekip รผyesi tarafฤฑndan paralel geliลtirme mรผmkรผndรผr.
MVC ile JSP Uygulama Tasarฤฑmฤฑ รrneฤi Archidoku
Bu รถrnekte, bir JSP uygulamasฤฑnda MVC mimarisinin nasฤฑl kullanฤฑlacaฤฤฑnฤฑ gรถstereceฤiz.
- Gรถrรผnรผm katmanฤฑmฤฑzฤฑ temsil eden "e-posta" ve "ลifre" olmak รผzere iki deฤiลken iรงeren bir form รถrneฤini ele alฤฑyoruz.
- Kullanฤฑcฤฑ e-posta ve ลifresini girdikten ve Gรถnder dรผฤmesine tฤฑkladฤฑktan sonra, iลlem Mvc_servlet'e iletilir ve burada e-posta ve ลifre aktarฤฑlฤฑr.
- Mvc_servlet, denetleyici katmanฤฑdฤฑr. Burada, Mvc_servlet'te, istek model katmanฤฑ gรถrevi gรถren bean nesnesine gรถnderilir.
- E-posta ve parola deฤerleri bean'e atanฤฑr ve daha sonra kullanฤฑlmak รผzere saklanฤฑr.
- Bean nesnesinden deฤer alฤฑnฤฑr ve Gรถrรผnรผm katmanฤฑnda gรถsterilir.
Mvc_example.jsp (Gรถrรผnรผm)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>MVC Guru Example</title> </head> <body> <form action="Mvc_servlet" method="POST"> Email: <input type="text" name="email"> <br /> Password: <input type="text" name="password" /> <input type="submit" value="Submit" /> </form> </body> </html>
Kodun aรงฤฑklamasฤฑ:
Katmanฤฑ Gรถrรผntรผle:
Code 10-15 satฤฑr: Burada, "e-posta" ve "ลifre" olmak รผzere iki alanฤฑ parametre olarak alan bir form alฤฑyoruz ve bu isteฤin, action รถzniteliฤinde belirtilen Mvc_servlet.java adlฤฑ bir denetleyiciye iletilmesi gerekiyor. ฤฐletim yรถntemi olarak POST kullanฤฑlฤฑyor.
Mvc_servlet.java (Denetleyici)
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Mvc_servlet */ public class Mvc_servlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Mvc_servlet() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String email=request.getParameter("email"); String password=request.getParameter("password"); TestBean testobj = new TestBean(); testobj.setEmail(email); testobj.setPassword(password); request.setAttribute("gurubean",testobj); RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp"); rd.forward(request, response); } }
Kodun aรงฤฑklamasฤฑ:
Denetleyici Katmanฤฑ:
Code รizgi 14: Mvc_servlet, HttpServlet'ten tรผretilmiลtir.
Code รizgi 26: Kullanฤฑlan yรถntem POST olduฤundan, istek Servlet'in doPost yรถntemine girer; bu yรถntem isteฤi iลler ve testobj olarak bean nesnesine kaydeder.
Code รizgi 34: ฤฐstek nesnesini kullanarak, "gurubean" รถzniteliฤine "testobj" deฤerini atฤฑyoruz.
Code รizgi 35: Burada, baลarฤฑ mesajฤฑnฤฑ mvc_success.jsp'ye iletmek iรงin RequestDispatcher nesnesini kullanฤฑyoruz.
TestBean.java (Model)
package demotest; import java.io.Serializable; public class TestBean implements Serializable{ public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } private String email="null"; private String password="null"; }
Kodun aรงฤฑklamasฤฑ:
Model Katmanฤฑ:
Code 7-17 satฤฑr: Bu dosya, TestBean sฤฑnฤฑfฤฑnฤฑn รผyeleri olan email ve password deฤiลkenlerinin getter ve setter metotlarฤฑnฤฑ iรงerir.
Code 19-20 satฤฑr: Bu, bean sฤฑnฤฑfฤฑnda รผyelerin e-posta adresini ve ลifresini String tรผrรผnde tanฤฑmlar.
Mvc_success.jsp (Sonuรง Gรถrรผnรผmรผ)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="demotest.TestBean"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Success</title> </head> <body> <% TestBean testguru=(TestBean)request.getAttribute("gurubean"); out.print("Welcome, "+testguru.getEmail()); %> </body> </html>
Kodun aรงฤฑklamasฤฑ:
Code รizgi 12: Servlet'in doPost yรถnteminde tanฤฑmlanan istek nesnesini kullanarak รถzniteliฤi alฤฑyoruz.
Code รizgi 13: Bean nesnesine kaydedilmiล olan karลฤฑlama mesajฤฑnฤฑ ve e-posta adresini yazdฤฑrฤฑyoruz.
รฤฑktฤฑ
Yukarฤฑdaki kodu รงalฤฑลtฤฑrdฤฑฤฤฑnฤฑzda aลaฤฤฑdaki รงฤฑktฤฑyฤฑ alฤฑrsฤฑnฤฑz:
mvc_example.jsp dosyasฤฑnฤฑ aรงtฤฑฤฤฑnฤฑzda, e-posta ve ลifre alanlarฤฑ ile Gรถnder dรผฤmesini iรงeren bir form gรถrรผrsรผnรผz.
Forma e-posta adresinizi ve ลifrenizi girdikten sonra Gรถnder'e tฤฑklayฤฑn:
"Gรถnder" dรผฤmesine tฤฑkladฤฑktan sonra, aลaฤฤฑdaki gibi bir รงฤฑktฤฑ gรถrรผntรผlenir:
Ekranda e-posta ve ลifrenizi girip Gรถnder'e tฤฑkladฤฑฤฤฑnฤฑzda, bilgiler TestBean'e kaydedilir. Bir sonraki ekranda baลarฤฑ mesajฤฑnฤฑ gรถrรผntรผlemek iรงin TestBean'den bu bilgiler alฤฑnฤฑr. JSP Veriyi sunma ve gรถrรผnรผmรผ saฤlama rolรผnรผ รผstlenirken, Servlet ise denetleyici ve veri iลleyici rolรผnรผ รผstlenir. JavaBean, Model gรถrevi gรถrรผr. Ana iล mantฤฑฤฤฑ Model katmanฤฑnda yer alฤฑr.



