MVC:模型-视图-控制器(Model-View-Controller)
MVC是一种通过3个不同的部分构造一个软件或组件的的理想方法:
①模型(Model)---用于存储数据的对象
②视图(View)---为模型提供数据显示的对象
③控制器(Controller)---负责具体的业务逻辑操作,即控制器根据视图提出的要求对数
据作出处理,并将有关结果存储到模型中,同时负责让模型和视图进行必要的交互,当模
型中的数据变化时,让视图更新显示。
从面向对象的角度看,MVC接口可以使得程序更具有对象化特性,也更容易维护。在设计程
序时候,可以将摸个对象看做“模型”,然后为“模型”提供欠当的显示组件,即“视图
”。在MVC模式中,“视图”、“模型”和“控制器”之间是松耦合结构,便于显示系统的
维护和扩展。
在JSP技术中,“视图”、“模型”、“控制器”的具体实现如下:
*模型(Model):一个或多个JavaBean对象,用于存储数据,JavaBean主要提供简单的
setXXX()方法和getXXX()方法,在这些方法中不涉及对数据的具体处理细节。
*视图(View):一个或多个JSP页面,为模型提供数据显示,JSP页面主要使用HTML标记和
JavaBean标记来显示数据。
*控制器(Controller):一个或多个Servlet对象,根据视图提交的要求进行数据处理操
作,并将有关的结果存储到JavaBean中,然后servlet使用重定向方式请求视图中的摸个
JSP页面更新显示,即让JSP页面通过使用JavaBean标记显示控制器存储在J avaBean中的数
据。
在MVC模式中,servlet创建的javabean也涉及到生命周期,生命周期分为request、session、application。
下面的是一个计算三角形面积的例子
现在设计一个web应用,该web应用提供了2个JSP页面,一个页面使得用户可以输入三角形三条边的长度;另一个页面可以显示三角形的三条边的长度和面积。web应用提供了一个servlet,负责处理三角形三条边数据,并根据三条边计算三角形的面积,然后将有关数据保存到javabean中;web应用提供的javabean负责刻画三角形模型,提供简单的获取数据和修改数据的方法。
另外,需要改写web.xml文件,
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>handle</servlet-name>
<servlet-class>rain.snow.HandleData</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>handle</servlet-name>
<url-pattern>/handleData</url-pattern>
</servlet-mapping>
</web-app>
模型JavaBean
由于servlet类中要使用javabean,所以为了能顺利编译servlet类和javabean类,可以将Trangle.java存放在一个包中,方便识别
Trangle.java---在flower.grass包中
package flower.grass;
public class Triangle {
double sideA,sideB,sideC;
double area;
boolean isTriangle;
public double getSideA() {
return sideA;
}
public void setSideA(double sideA) {
this.sideA = sideA;
}
public double getSideB() {
return sideB;
}
public void setSideB(double sideB) {
this.sideB = sideB;
}
public double getSideC() {
return sideC;
}
public void setSideC(double sideC) {
this.sideC = sideC;
}
public double getArea() {
return area;
}
public void setArea(double area) {
this.area = area;
}
public void SetIsTriangle(boolean boo) {
isTriangle = boo;
}
public boolean getIsTriangle() {
return isTriangle;
}
}
注意:在这个javabean中getArea()方法并没有参与面积的计算,只是简单的返回存储的数据area
视图(JSP)
input.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<body>
<form action="handleData" method="post">
<p>输入三角形的三条边(提交给servlet去处理):</p>
<br/>边A:<input type=text name="sideA" value=0 size=4>
边B:<input type=text name="sideB" value=0 size=4>
边C:<input type=text name="sideC" value=0 size=4>
<input type=submit value="提交">
</form>
</body>
</html>
show.jsp
<%@ page language="java" import="flower.grass.Triangle" pageEncoding="GB18030"%>
<jsp:useBean id="triangle" type="flower.grass.Triangle" scope="request"></jsp:useBean>
<html>
<body>
<font size=2>
<p>三角形的三条边是:
<br>边A:<jsp:getProperty property="sideA" name="triangle"/>
边B:<jsp:getProperty property="sideB" name="triangle"/>
边C:<jsp:getProperty property="sideC" name="triangle"/>
<br/>这三条边能构成一个三角形吗?
<jsp:getProperty name="triangle" property="isTriangle"/>
面积是:
<jsp:getProperty property="area" name="triangle"/>
</font>
</body>
</html>
控制器(Servlet)
HandleData.java---在rain.snow包中
package rain.snow;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import flower.grass.Triangle;
public class HandleData extends HttpServlet {
public void init(ServletConfig config)throws ServletException
{
super.init(config);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
Triangle tri = new Triangle();//创建JavaBean对象
request.setAttribute("triangle", tri);//将tri存储到HttpServletRequest对象中
double a = Double.parseDouble(request.getParameter("sideA"));
double b = Double.parseDouble(request.getParameter("sideB"));
double c = Double.parseDouble(request.getParameter("sideC"));
double p = (a + b + c)/2.0;
double area = Math.sqrt(p*(p-a)*(p-b)*(p-c));
//将数据存储到tri中
tri.setSideA(a);
tri.setSideB(b);
tri.setSideC(c);
tri.setArea(area);
if (a+b>c&a+c>b&b+c>a)
tri.SetIsTriangle(true);
else
tri.SetIsTriangle(false);
RequestDispatcher dispatcher = request.getRequestDispatcher("/show.jsp");
dispatcher.forward(request, response);//清酒show.jsp显示tri中的数据
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException
{
doPost(request,response);
}
}
运行结果如下:
- 大小: 11.3 KB
- 大小: 9.9 KB
分享到:
相关推荐
总结来说,"MVC设计模式例子程序"是一个演示了如何在C#的Windows Forms环境下实现MVC模式的应用。通过模型、视图和控制器的分离,这个程序实现了业务逻辑、用户界面和数据管理的清晰划分,增强了代码的可读性和可...
本项目是一个基于JavaEE技术栈的MVC模式实现的网上书城购物车系统。这个系统的设计目的是为了帮助初学者深入理解MVC(Model-View-Controller)设计模式,以及如何在实际开发中应用这一模式来构建一个功能完善的电子...
MVC 模式详解 MVC 模式是软件设计中一种非常重要的模式,它将软件或组件分为三个部分:模型(Model)、视图(View)和控制器(Controller)。这种模式已经 menjadi 必备的开发模式之一,广泛应用于 Web 开发、移动...
**MVC模式**是一种软件架构模式,主要用于将业务逻辑(Model)、用户界面(View)和控制逻辑(Controller)分离,以实现良好的代码组织和解耦。在JavaWeb应用中,这种分离使得代码更易于维护和扩展。 1. **Model**...
**一、MVC模式概述** MVC(Model-View-Controller)模式是一种软件设计模式,广泛应用于Web应用开发中,它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。这种模式的主要目标是...
【网上购买图书案例MVC模式】是一个典型的软件开发实践,主要使用了Model-View-Controller(MVC)架构模式来构建一个在线图书销售系统。在这样的系统中,MVC模式帮助我们有效地分离业务逻辑、数据处理和用户界面,...
总的来说,"mvc模式jsp计算器"是一个很好的学习实例,它演示了如何使用MVC模式来构建一个简单的Web应用,同时利用JSP技术实现了用户友好的界面交互。理解这个例子有助于提升对Web开发架构和设计模式的理解。
根据提供的信息,“MVC模式图”,我们来详细探讨一下MVC(Model-View-Controller)设计模式的概念、工作原理以及应用场景等内容。 ### MVC设计模式概述 MVC是一种软件架构模式,广泛应用于用户界面的设计与开发之...
MVC 设计模式是软件架构中的一种经典设计模式,广泛应用于 Java Web 开发中。MVC 模式将应用程序分为三个主要部分:Model(模型)、View(视图)和 Controller(控制器),每个部分都有其特定的职责和功能。 MVC ...
#### 一、MVC模式概览 MVC,即Model-View-Controller(模型-视图-控制器),是一种被广泛应用于软件工程,特别是Web应用程序开发中的设计模式。其核心思想是将应用程序的业务逻辑、用户界面和数据控制分离,从而...
C++作为一个强大的面向对象编程语言,同样可以利用MVC模式来组织代码,提高软件的可维护性和可扩展性。在C++中,MVC模式的应用通常会结合特定的框架,如Microsoft的Visual C++/MFC(Microsoft Foundation Classes)...
在“MVC模式网上书店系统”中,这种设计模式被巧妙地应用,以实现一个高效、可扩展且易于维护的在线图书销售平台。 **模型(Model)** 模型是系统的核心,负责处理业务逻辑和数据管理。在这个网上书店系统中,模型...
**Struts与MVC**:Struts是一个基于MVC模式的开源框架,广泛应用于Java Web应用的开发。通过Struts框架,可以轻松地实现MVC模式的各种功能,如用户请求处理、视图渲染等。 - **Struts框架结构**(见原文图3):...
总之,这个实验是一个很好的起点,可以帮助初学者理解MVC模式在Java EE开发中的作用,以及如何利用它来构建一个用户登录系统。通过完成这个实验,你将掌握更多关于Java EE、MVC模式以及数据库交互的基础知识。
MVC模式是一种软件设计模式,它将系统分为模型(Model)、视图(View)和控制器(Controller)三个部分。这种模式的优点在于降低了软件耦合度,提高了系统的灵活性和可维护性。 知识点2:Struts框架的应用 Struts...
本项目"基于jspMVC模式的成绩管理系统"是一个采用JavaServer Pages(JSP)技术实现的实例,旨在帮助学习者理解并实践MVC模式在实际应用中的运用。 **一、MVC模式简介** MVC模式是软件工程中的一种设计模式,将应用...
**MVC模式详解** MVC(Model-View-Controller)模式是一种软件设计模式,广泛应用于Web应用开发中,尤其在Java、.NET等框架中应用广泛。它将应用程序的业务逻辑、用户界面和数据访问分离开来,提高了代码的可维护性...
MVC模式和Struts框架
1. **MVC模式(Model-View-Controller)**:这是一种架构模式,常用于构建用户界面。Model负责管理应用程序的数据和业务逻辑,View负责显示数据,而Controller作为两者之间的桥梁,处理用户输入并更新Model,进而...