MVC i JSP (Architecture)

Hvad er MVC?

MVC er en arkitektur, der adskiller forretningslogik, præsentation og data. I MVC,

  • M står for Model
  • V står for View
  • C står for controller.

MVC er en systematisk måde at bruge applikationen, hvor flowet starter fra visningslaget, hvor anmodningen hæves og behandles i controllerlaget og sendes til modellaget for at indsætte data og få succes- eller fiaskomeddelelsen tilbage. MVC'en ArchiTecture diagram er repræsenteret nedenfor:

MVC Architecture
MVC Architecture diagram

Model lag

  • Dette er datalaget, som består af systemets forretningslogik.
  • Den består af alle applikationens data
  • Det repræsenterer også ansøgningens tilstand.
  • Den består af klasser, som har forbindelse til database.
  • Controlleren forbinder med model og henter dataene og sender til visningslaget.
  • Modellen forbinder også med databasen og gemmer dataene i en database, som er forbundet til den.

Se lag

  • Dette er et præsentationslag.
  • Det består af HTML, JSP osv. ind i det.
  • Det præsenterer normalt applikationens brugergrænseflade.
  • Det bruges til at vise de data, der hentes fra controlleren, som igen henter data fra modellagsklasser.
  • Dette visningslag viser dataene på applikationens brugergrænseflade.

Controller lag

  • Det fungerer som en grænseflade mellem View og Model.
  • Den opsnapper alle de anmodninger, der kommer fra visningslaget.
  • Den modtager anmodningerne fra visningslaget og behandler anmodningerne og udfører den nødvendige validering for anmodningen.
  • Denne anmodning sendes yderligere til modellaget til databehandling, og når anmodningen er behandlet, sender den tilbage til controlleren med den nødvendige information og vises i overensstemmelse hermed af visningen.

Fordele ved MVC Architecture

Fordelene ved MVC er:

  • Let at vedligeholde
  • Nem at forlænge
  • Let at teste
  • Navigationskontrol er centraliseret

Eksempel på JSP Application Design med MVC Architecture

I dette eksempel skal vi vise, hvordan man bruger MVC-arkitektur i JSP.

  • Vi tager eksemplet med en formular med to variabler "e-mail" og "adgangskode", som er vores visningslag.
  • Når brugeren indtaster e-mail og adgangskode og klikker på send, så overføres handlingen i mvc_servlet, hvor e-mail og adgangskode sendes.
  • Denne mvc_servlet er controller-lag. Her i mvc_servlet sendes anmodningen til bønneobjektet, der fungerer som modellag.
  • E-mail- og adgangskodeværdierne sættes i bønnen og gemmes til yderligere formål.
  • Fra bønnen hentes værdien og vises i visningslaget.

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>

Forklaring af koden:

Vis lag:

Kodelinje 10-15: Her tager vi en formular, som har to felter som parameter "e-mail" og "adgangskode", og denne anmodning skal videresendes til en controller Mvc_servlet.java, som sendes i aktion. Metoden, hvorigennem det sendes, er POST-metoden.

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); 
	}

}

Forklaring af koden:

Controller lag

Kodelinje 14:mvc_servlet udvider HttpServlet.

Kodelinje 26: Da den anvendte metode er POST, kommer anmodningen ind i en doPost-metode for servlet'en, som behandler anmodningerne og gemmer i bønneobjektet som testobj.

Kodelinje 34: Ved at bruge request-objektet indstiller vi attributten som gurubean, som tildeles værdien af ​​testobj.

Kodelinje 35: Her bruger vi request dispatcher objekt til at sende succesmeddelelsen til mvc_success.jsp

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";


}

Forklaring af koden:

Modellag:

Kodelinje 7-17: Den indeholder e-mail- og kodeords- og sættere, som er medlemmer af Test Bean-klassen

Kodelinje 19-20: Det definerer medlemmernes e-mail og adgangskode af strengtype i bønneklassen.

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>

Forklaring af koden:

Kodelinje 12: vi får attributten ved hjælp af request-objektet, som er blevet sat i doPost-metoden for servlet'en.

Kodelinje 13: Vi udskriver velkomstbeskeden og e-mail-id'et, som er blevet gemt i bønneobjektet

Output:

Når du udfører ovenstående kode, får du følgende output:

Når du klikker på mvc_example.jsp får du formularen med e-mail og adgangskode med indsend-knappen.

Når du har indtastet e-mail og adgangskode til formularen og derefter klikket på send

JSP applikationsdesign

Når du har klikket på send, vises output som nedenfor

JSP applikationsdesign

Output:

Når du indtaster e-mail og adgangskode på skærmen og klikker på send derefter, gemmes detaljerne i TestBean og fra TestBean hentes de på næste skærmbillede for at få succesbeskeden.

Resumé

I denne artikel har vi lært om MVC, dvs. Model View Controller-arkitekturen.

JSP spiller rollen som præsentation af data og controller. Det er en grænseflade mellem model og visning, mens model forbinder både til controlleren og databasen. Hovedforretningslogikken er til stede i modellaget.