JSP'de MVC (Archidoku)
MVC nedir?
MVC, iş mantığını, sunumu ve verileri ayıran bir mimaridir. MVC'de,
- M Model anlamına gelir
- V Görünüm anlamına gelir
- C denetleyici anlamına gelir.
MVC, akışın görünüm katmanından başladığı, isteğin denetleyici katmanında oluşturulup işlendiği ve veri eklemek ve başarı veya başarısızlık mesajını geri almak için model katmanına gönderildiği uygulamayı kullanmanın sistematik bir yoludur. MVC Archiyapı diyagramı aşağıda gösterilmektedir:
Model Katmanı
- Sistemin iş mantığını oluşturan veri katmanıdır.
- Uygulamanın tüm verilerinden oluşur
- Aynı zamanda uygulamanın durumunu da temsil eder.
- ile bağlantısı olan sınıflardan oluşur. veritabanı.
- Denetleyici modele bağlanır ve verileri alıp görünüm katmanına gönderir.
- Model veritabanına da bağlanır ve verileri kendisine bağlı bir veritabanında saklar.
Katmanı Görüntüle
- Bu bir sunum katmanıdır.
- İçerisinde HTML, JSP vb. bulunur.
- Normalde uygulamanın kullanıcı arayüzünü sunar.
- Denetleyiciden alınan verileri görüntülemek ve ardından model katmanı sınıflarından veri almak için kullanılır.
- Bu görünüm katmanı, uygulamanın kullanıcı arayüzündeki verileri gösterir.
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 engeller.
- View katmanından istekleri alır ve istekleri işler ve istek için gerekli doğrulamayı yapar.
- Bu istekler ayrıca veri işleme için model katmanına gönderilir ve istek işlendikten sonra gerekli bilgilerle birlikte denetleyiciye geri gönderilir ve buna göre görünüm tarafından görüntülenir.
MVC'nin Avantajları Archidoku
MVC'nin avantajları şunlardır:
- Bakımı kolay
- Genişletmesi kolay
- Test edilmesi kolay
- Navigasyon kontrolü merkezileştirilmiştir
MVC ile JSP Uygulama Tasarımı Örneği Archidoku
Bu örnekte JSP'de MVC mimarisinin nasıl kullanılacağını göstereceğiz.
- Görünüm katmanımız olan "email" ve "password" adlı iki değişkene sahip bir form örneğini ele alıyoruz.
- Kullanıcı e-posta ve şifresini girip gönder butonuna tıkladığında, e-posta ve şifrenin geçirildiği mvc_servlet'e işlem yapılır.
- Bu mvc_servlet denetleyici katmanıdır. Burada mvc_servlet'te istek, model katmanı görevi gören fasulye nesnesine gönderilir.
- E-posta ve şifre değerleri bean'e girilir ve ileride kullanılmak üzere saklanır.
- Fasulyeden değer alınır ve görünüm katmanında gösterilir.
Mvc_example.jsp
<%@ 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:
Kod Satırı 10-15: Burada, "email" ve "password" parametresi olarak iki alana sahip bir form alıyoruz ve bu isteğin, eylemde geçirilen bir denetleyici olan Mvc_servlet.java'ya iletilmesi gerekiyor. Geçirildiği yöntem POST yöntemidir.
Mvc_servlet.java
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ı
Kod Satırı 14:mvc_servlet, HttpServlet'i genişletiyor.
Kod Satırı 26: Kullanılan yöntem POST olduğundan istek, istekleri işleyen ve fasulye nesnesine testobj olarak kaydeden sunucu uygulamasının doPost yöntemine gelir.
Kod Satırı 34: İstek nesnesini kullanarak, testobj değerine atanan özelliği gurubean olarak ayarlıyoruz.
Kod Satırı 35: Burada başarı mesajını mvc_success.jsp'ye iletmek için istek gönderici nesnesini kullanıyoruz.
TestBean.java
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ı:
Kod Satırı 7-17: Test Bean sınıfının üyeleri olan e-posta ve parolanın getter ve setter'larını içerir
Kod Satırı 19-20: Bean sınıfında üyenin email ve şifresini string türünde tanımlar.
Mvc_success.jsp
<%@ 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ı:
Kod Satırı 12: özniteliği, sunucu uygulamasının doPost yönteminde ayarlanan istek nesnesini kullanarak alıyoruz.
Kod Satırı 13: Bean nesnesinde kayıtlı olan karşılama mesajını ve e-posta kimliğini 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ına tıkladığınızda karşınıza e-posta ve şifrenin yer aldığı, gönder butonunun bulunduğu bir form çıkar.
E-postanızı ve şifrenizi forma girdikten sonra gönder'e tıklayın
Gönder butonuna tıkladıktan sonra çıktı aşağıdaki gibi gösterilir
Çıktı:
Ekrana e-posta ve şifrenizi girip gönder butonuna tıkladığınızda, bilgiler TestBean'e kaydedilir ve TestBean'den bir sonraki ekrana getirilerek başarı mesajı alınır.
ÖZET
Bu yazımızda MVC yani Model View Controller mimarisini öğrendik.
JSP Verilerin sunumu ve denetleyici rolünü oynar. Model hem denetleyiciye hem de veritabanına bağlanırken model ve görünüm arasında bir arayüzdür. Ana iş mantığı model katmanında mevcuttur.