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.


