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.

  • ๐Ÿงฑ EndiลŸelerin Ayrฤฑlmasฤฑ: Model, verileri ve iลŸ mantฤฑฤŸฤฑnฤฑ barฤฑndฤฑrฤฑr; View, kullanฤฑcฤฑ arayรผzรผnรผ oluลŸturur; Controller ise istekleri bunlar arasฤฑnda yรถnlendirir.
  • ๐Ÿ“ JSP'nin Rolรผ: JSP sayfalarฤฑ Gรถrรผnรผm katmanฤฑ iรงin dinamik iลŸaretleme oluลŸtururken, bir Servlet ise Denetleyici katmanฤฑnda istek iลŸlemeyi รผstlenir.
  • ๐Ÿ”€ ฤฐstek AkฤฑลŸฤฑ: Tarayฤฑcฤฑ bir form gรถnderir, Servlet giriลŸleri doฤŸrular, bir tabloyu doldurur. JavaBean daha sonra yanฤฑtฤฑ almak รผzere kontrolรผ bir JSP gรถrรผnรผmรผne iletir.
  • โœ… Bakฤฑm KolaylฤฑฤŸฤฑ Kazandฤฑrฤฑr: JSP'deki MVC mimarisi, web uygulamalarฤฑnฤฑn bakฤฑmฤฑnฤฑ, geniลŸletilmesini, birim testlerinin yapฤฑlmasฤฑnฤฑ ve merkezi olarak gezinmeyi kolaylaลŸtฤฑrฤฑr.
  • ๐Ÿงช ร‡alฤฑลŸma ร–rneฤŸi: GiriลŸ formu Mvc_servlet'e gรถnderilir, bu da e-posta ve ลŸifreyi TestBean'de saklar ve ardฤฑndan mvc_success.jsp'ye iletir.
  • ๐Ÿค– Yapay Zeka Modernizasyonu: Yapay zekรข asistanlarฤฑ artฤฑk eski JSP MVC kodunu Spring MVC'ye dรถnรผลŸtรผrmeye yardฤฑmcฤฑ oluyor ve isteฤŸe baฤŸlฤฑ olarak denetleyiciler, DTO'lar ve testler oluลŸturuyor.

JSP'de MVC (Archidoku)

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 Archidoku
MVC Archidoku ลŸemasฤฑ

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:

JSP Uygulama Tasarฤฑmฤฑ

"Gรถnder" dรผฤŸmesine tฤฑkladฤฑktan sonra, aลŸaฤŸฤฑdaki gibi bir รงฤฑktฤฑ gรถrรผntรผlenir:

JSP Uygulama Tasarฤฑmฤฑ

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.

SSS

JSP'de MVC, bir web uygulamasฤฑnฤฑ รผรง katmana ayฤฑran bir tasarฤฑm desenidir: Model (veri ve iลŸ mantฤฑฤŸฤฑ), Gรถrรผnรผm (kullanฤฑcฤฑ arayรผzรผnรผ oluลŸturan JSP sayfalarฤฑ) ve Denetleyici (istekleri iลŸleyen ve yanฤฑtlarฤฑ yรถnlendiren bir Servlet).

JSP รถncelikle Gรถrรผnรผm katmanฤฑna aittir รงรผnkรผ kullanฤฑcฤฑ iรงin dinamik HTML oluลŸturur. JSP Model 2 modelinde, bir Servlet Denetleyici rolรผnรผ รผstlenir ve JavaBeans, Model rolรผnรผ รผstleniyor, keeping ฤฐลŸ mantฤฑฤŸฤฑndan arฤฑndฤฑrฤฑlmฤฑลŸ JSP.

Model 1, iลŸ mantฤฑฤŸฤฑnฤฑ, veri eriลŸimini ve sunumu doฤŸrudan JSP sayfalarฤฑna yerleลŸtirir. Model 2, MVC'yi takip eder: bir Servlet, Denetleyici gรถrevi gรถrรผr, JavaBean'ler Modeli oluลŸturur ve JSP dosyalarฤฑ Gรถrรผnรผmรผ oluลŸturur. Model 2 รถnerilen yaklaลŸฤฑmdฤฑr.

MVC, sรผrdรผrรผlebilirliฤŸi, test edilebilirliฤŸi ve ekip verimliliฤŸini artฤฑrฤฑr. Her katman baฤŸฤฑmsฤฑz olarak geliลŸir, iลŸ mantฤฑฤŸฤฑ JSP dosyalarฤฑnฤฑn dฤฑลŸฤฑnda kalฤฑr, gezinme Servlet'te merkezileลŸtirilir ve birim testleri bir web konteyneri รงalฤฑลŸtฤฑrmadan Model'i kapsar.

Tarayฤฑcฤฑ, bir Servlet'e bir form gรถnderir. Servlet, girdileri doฤŸrular, bir form oluลŸturur veya gรผnceller. JavaBean nesnesini alฤฑr ve bunu bir istek รถzniteliฤŸi olarak saklar. Ardฤฑndan kontrolรผ, bean nesnesini okuyan ve yanฤฑtฤฑ iลŸleyen bir JSP sayfasฤฑna iletir.

Yapay zekรข kodlama asistanlarฤฑ, eski Servlet'leri ve JSP dosyalarฤฑnฤฑ analiz eder, รถrneฤŸintracTemiz servislerin iรงine gรถmรผlรผ iลŸ mantฤฑฤŸฤฑ oluลŸturun, Spring MVC denetleyicileri ve DTO'lar รผretin ve JUnit Bu, JSP Model 2'den modern รงerรงevelere geรงiลŸi daha az manuel yeniden yazma ile hฤฑzlandฤฑrฤฑr.

Yapay zeka araรงlarฤฑ Spring MVC denetleyicilerini oluลŸturur, istek haritasฤฑ รผretir.pingDoฤŸrulama aรงฤฑklamalarฤฑ รถnerir, Thymeleaf ลŸablonlarฤฑ yazar ve entegrasyon testleri oluลŸtururlar. Ayrฤฑca, denetleyici yรถntemlerinde eksik CSRF korumasฤฑ veya gรผvenli olmayan giriลŸ iลŸleme gibi gรผvenlik sorunlarฤฑnฤฑ da tespit ederler.

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