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:

MVC Archidoku
MVC Archidoku ลŸemasฤฑ

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

JSP Uygulama Tasarฤฑmฤฑ

Gรถnder butonuna tฤฑkladฤฑktan sonra รงฤฑktฤฑ aลŸaฤŸฤฑdaki gibi gรถsterilir

JSP Uygulama Tasarฤฑmฤฑ

ร‡ฤฑ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.

Bu yazฤฑyฤฑ ลŸu ลŸekilde รถzetleyin: