JSP 中的 MVC(Archi结构

什么是MVC?

MVC 是一种将业务逻辑、表示和数据分离的架构。在 MVC 中,

  • M 代表型号
  • V 代表视图
  • C 代表控制器。

MVC 是一种系统化的应用程序使用方式,其中流程从视图层开始,在控制器层中提出和处理请求,然后发送到模型层以插入数据并返回成功或失败消息。 MVC Archi结构图如下所示:

MVC Archi质地
MVC Archi结构图

模型层

  • 这是由系统的业务逻辑组成的数据层。
  • 它由应用程序的所有数据组成
  • 它还代表应用程序的状态。
  • 它由与以下对象相关的类组成: 数据库.
  • 控制器连接模型并获取数据并发送到视图层。
  • 该模型也与数据库连接,并将数据存储到与其连接的数据库中。

查看图层

  • 这是一个表示层。
  • 它由HTML,JSP等组成。
  • 它通常显示应用程序的 UI。
  • 它用于显示从控制器获取的数据,而控制器又从模型层类获取数据。
  • 该视图层在应用程序的 UI 上显示数据。

控制器层

  • 它充当视图 (View) 和模型 (Model) 之间的接口。
  • 它拦截来自视图层的所有请求。
  • 它接收来自视图层的请求并处理请求并对请求进行必要的验证。
  • 该请求进一步发送到模型层进行数据处理,一旦请求被处理,它将发送回控制器所需的信息并由视图相应地显示。

MVC的优点 Archi质地

MVC 的优点是:

  • 易于维护
  • 易于扩展
  • 易于测试
  • 导航控制集中

使用 MVC 的 JSP 应用程序设计示例 Archi质地

在这个例子中,我们将展示如何在 JSP 中使用 MVC 架构。

  • 我们以包含两个变量“电子邮件”和“密码”的表单为例,它是我们的视图层。
  • 一旦用户输入电子邮件和密码并单击提交,操作就会在 mvc_servlet 中传递,电子邮件和密码也会在其中传递。
  • 这个 mvc_servlet 是控制器层。在 mvc_servlet 中,请求被发送到充当模型层的 bean 对象。
  • 电子邮件和密码值被设置到 bean 中并存储以供进一步使用。
  • 从 bean 中获取值并显示在视图层。

Mvc_示例.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>

代码说明:

视图层:

代码行10-15: 这里我们取一个表单,该表单有两个字段,参数为“email”和“password”,这个请求需要转发到控制器 Mvc_servlet.java,并在操作中传递。传递的方法是 POST 方法。

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

}

代码说明:

控制器层

代码行14:mvc_servlet 正在扩展 HttpServlet。

代码行26: 由于使用的方法是 POST,因此请求进入 servlet 的 doPost 方法,该方法处理请求并将其作为 testobj 保存到 bean 对象中。

代码行34: 使用请求对象我们将属性设置为 gurubean,并赋予其 testobj 的值。

代码行35: 这里我们使用请求调度程序对象将成功消息传递给 mvc_success.jsp

测试Bean.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";


}

代码说明:

模型层:

代码行7-17: 它包含电子邮件和密码的 getter 和 setter,它们是测试 Bean 类的成员

代码行19-20: 它在bean类中定义了字符串类型的成员email和password。

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>

代码说明:

代码行12: 我们正在使用在 servlet 的 doPost 方法中设置的请求对象来获取属性。

代码行13: 我们正在打印已保存在 bean 对象中的欢迎消息和电子邮件 ID

输出:

执行上述代码时,您将获得以下输出:

当您单击 mvc_example.jsp 时,您将获得包含电子邮件和密码的表单以及提交按钮。

在表单中输入电子邮件和密码后,点击提交

JSP 应用程序设计

点击提交后输出如下所示

JSP 应用程序设计

输出:

当您在屏幕上输入电子邮件和密码并单击提交时,详细信息将保存在 TestBean 中,并在下一个屏幕上从 TestBean 获取成功消息。

总结

在本文中,我们了解了 MVC,即模型视图控制器架构。

JSP 充当数据和控制器的呈现角色。它是模型和视图之间的接口,而模型既连接到控制器,也连接到数据库。主要业务逻辑存在于模型层。