MVC模式:MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

  • (控制器Controller)- 负责转发请求,对请求进行处理。

  • (视图View) - 界面设计人员进行图形界面设计。

  • (模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据   库设计(可以实现具体的功能)。

Java

Java 平台企业版 (J2EE)

和其他的各种框架不一样,J2EE为模型对象(Model Objects)定义了一个规范。

视图(View):在J2EE应用程序中,视图(View)可能由Java Server Page(JSP)承担。生成视图的代码则可能是一个servlet的一部分,特别是在客户端服务端交互的时候。

控制器(Controller):J2EE应用中,控制器可能是一个servlet,现在一般用Struts2/Spring Framework实现。

模型(Model):模型则是由一个实体Bean来实现。

(以上内容摘录自维基百科对MVC模式概念的部分解析)


MVC框架模式在java开发过程中也比较常用,下面通过一个简易计算器的实例去理解一下MVC这个方便而强大的东东。每个人的思路步骤可能会略有不同,我这里只分享我自己的思路“殊途同归”吧,呵呵。

这个简易计算器进行对两个数字的运算,选择(+、-、*、/)结算符,最后计算出结果。大概的界面设计如下所示:

大概可分为下面几个步骤:

1.Model由实体Bean来实现:编写一个bean,用来封装计算器的数字,结果及操作运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.lixiyu.bean;
public class CalculatorBean
 {
    double numberOne,numberTwo,result;//数字1、数字2、结果
                                                                                                                                                                                                                                         
    String operator="+";//操作
 //setxxx和getxxx
    public void setNumberOne(double n)
 {
      numberOne=n;
 }
                                                                                                                                                                                                                                        
    public double getNumberOne()
   {  return numberOne;
   }
                                                                                                                                                                                                                                        
    public void setNumberTwo(double n)
   {  numberTwo=n;
   }
                                                                                                                                                                                                                                        
    public double getNumberTwo()
   {  return numberTwo;
   }
                                                                                                                                                                                                                                        
    public void setOperator(String s)
   {  operator=s.trim();;
   }
                                                                                                                                                                                                                                        
    public String getOperator()
   {  return operator;
   }
                                                                                                                                                                                                                                        
    public void setResult(double r)
   {  result=r;
   }
                                                                                                                                                                                                                                        
    public double getResult()
   {  return result;
   }
}

2.编写控制器CalculatorServlet,用于转发请求,对请求进行处理。下面给出Servlet中doPost()的关键代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        CalculatorBean dataBean = null;
        HttpSession session = request.getSession(true);
        try {
            dataBean = (CalculatorBean) session.getAttribute("ok");
            if (dataBean == null) {
                dataBean = new CalculatorBean(); // 创建Javabean对象
                session.setAttribute("ok", dataBean);// 将dataBean存储到session对象中
            }
        catch (Exception exp) {
            dataBean = new CalculatorBean(); // 创建Javabean对象
            session.setAttribute("ok", dataBean);// 将dataBean存储到session对象中
        }
        double numberOne = Double
                .parseDouble(request.getParameter("numberOne"));
        double numberTwo = Double
                .parseDouble(request.getParameter("numberTwo"));
        String operator = request.getParameter("operator");
        double result = 0;
        if (operator.equals("+")) {
            result = numberOne + numberTwo;
        else if (operator.equals("-")) {
            result = numberOne - numberTwo;
        else if (operator.equals("*")) {
            result = numberOne * numberTwo;
        else if (operator.equals("/")) {
            result = numberOne / numberTwo;
        }
        dataBean.setNumberOne(numberOne); // 将数据存储在dataBean中
        dataBean.setNumberTwo(numberTwo);
        dataBean.setOperator(operator);
        dataBean.setResult(result);
        RequestDispatcher dispatcher = request
                .getRequestDispatcher("showResult.jsp");
        dispatcher.forward(request, response);// 请求showResult.jsp显示dataBean中的数据
    }

在web.xml中注册servlet及实现映射:

1
2
3
4
5
6
7
8
<servlet>
    <servlet-name>CalculatorServlet</servlet-name>
    <servlet-class>com.lixiyu.servlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CalculatorServlet</servlet-name>
    <url-pattern>/calculator</url-pattern>
  </servlet-mapping>

3.编写视图(view),主要通过输入操作和显示结果的两个JSP来实现

inputNumber.jsp(主要代码):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form  id="form1" action="calculator" method="post" name="form1">
   <table>
                                                                                 
   <tr><td> <b>输入任意两个数:</b></td>
       <td> <Input type=text name="numberOne" value=0 size=6></td>
     <td> <Input type=text name="numberTwo" value=0 size=6></td>
   </tr>
   <tr><td><b>选择算术运算符号:</b></td>
       <td> <Select name="operator">
              <Option value="+">+(加)
              <Option value="-">-(减)
              <Option value="*">*(乘)
              <Option value="/">/(除)
            </Select>
       </td>
       <td> <INPUT TYPE="submit" value="提交选择" name="submit"></td>
   </tr>
                                                                                
   </table>
      </form>

showResult.jsp的关键代码,用到<jsp:usebean>:

1
2
3
4
5
6
<jsp:useBean id="ok" type="com.lixiyu.bean.CalculatorBean" scope="session"/>
   运算结果:
  <jsp:getProperty name="ok" property="numberOne"/>
  <jsp:getProperty name="ok" property="operator"/>
  <jsp:getProperty name="ok" property="numberTwo"/> =
  <jsp:getProperty name="ok" property="result"/>

运算结果:

本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1355002,如需转载请自行联系原作者

理解MVC—从实例出发:基于MVC模式的简易算术计算器相关推荐

  1. 基于51单片机的简易电子计算器——有温度显示和万年历等额外功能

    基于51单片机的简易电子计算器--有温度显示和万年历等额外功能 设计实际所实现的功能 模式一可显示日期.时钟.温度,模式二可进行计算器的计算,且显示日期温度模式和计算器模式可随意切换,模式三可以滚动显 ...

  2. 【006】基于51单片机的简易电子计算器Proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...

  3. 基于51单片机的简易数字计算器Proteus仿真(源码+仿真+全套资料)

     资料编号:115 全套资料齐全,功能说明: 该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加. 减.乘.除的简单四则运算,并在 LCD屏幕上相应的显示结果. ...

  4. 从实例出发,让你一文实现Floyd算法

    目录 看完必会的Folyd算法! 前言 Floyd实现原理 从实例出发理解 概念理解一:距离矩阵 概念理解二:路径矩阵 举个例子 代码实现 看完必会的Folyd算法! 前言 最近在学习算法的过程中,接 ...

  5. java三层 开源_java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源...

    [实例简介] java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源 [实例截图] [核心代码] java山寨qq聊天工具(基于mvc三层架构,附mvc架构模式p ...

  6. servlet+javabean+jdbc+mysql基于MVC模式的课件管理系统,有三个表的增删改查和课件搜索、课件上传、课件下载功能, 具体功能请看界面上的导航条

    源码支持在idea.eclipse.myeclipse运行,数据库采用MySQL数据库,项目采用mvc设计模式开发,页面采用jsp+html+css+js完成. servlet+javabean+jd ...

  7. 基于MVC模式下的二手车拍卖平台设计

    课程名称:<软件体系结构与设计模式> 实验项目名称:基于MVC模式下的二手车拍卖平台设计 实验内容 按下列要求编写程序并上机调试运行: 拍卖系统要又三个显示界面,分别是车体图片,文字描述和 ...

  8. OAF框架的基本思想--基于MVC模式

    OAF框架是一个基于MVC架构的应用框架,学习OAF必须理解MVC框架,因为实际上OAF开发也是对M-V-C这3层结构进行开发. OAF是一个应用Model-View-Controller(MVC)架 ...

  9. python编程(基于订阅模式的mvc实现)

    [声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 基于mvc方式开发的客户端软件很多,但是用订阅方式实现mvc,我今天还是第一次看到.今天看到一篇英 ...

最新文章

  1. java int数列转字符串,鍥剧墖杞瓧绗︿覆
  2. XScuGic_Connect分析
  3. python交互式数据可视化_python数据可视化工具
  4. 设计模式--1(设计模式基础,设计模式基本原则,设计模式分类)
  5. 正则表达式与扩展正则表达式区别
  6. HDU 5985 Lucky Coins 数学
  7. python3 ftp服务器_python3实现ftp服务功能(服务端 For Linux)
  8. deepin终端启动自安装程序
  9. python之OrderedDict
  10. Python中的*self,*self._args, **kwargs
  11. 牛腩新闻发布系统—发布错误总结
  12. kali linux捉肉鸡教程,使用Kali中的Metasploit生成木马控制Windows系统
  13. linkedin领英账号限制被封了怎么办?
  14. 安卓手机卡顿基础优化教程
  15. C++战斗游戏-----------圣光战神の起源之战 V8.13.0
  16. 【NLP】非监督文本匹配算法——BM25
  17. 公路自行车入门级推荐java_想玩公路自行车,有没有入门推荐?
  18. python元组的定义方式_python基础之元组(Tuple)、字典(Dictionary)详解
  19. SLF4J--日志门面担当
  20. 计算机基本基础知识实训总结,计算机基本技能实训总结报告[].doc

热门文章

  1. [语义]情感分析方向近况·0908
  2. CentOS5.8 RHCS配置
  3. 百度启动高管退休计划,总裁张亚勤今年十月退休
  4. css3 text-shadow
  5. Console.ReadLine(); 获取用户输入内容
  6. 优先级调度和运行前调度的比较
  7. Citrx XenDesktop 7 实施三 配置XenServer
  8. 优酷土豆:财报不是问题!
  9. libvirt(virt-install命令介绍)
  10. 【已解决】烂泥:耳机有声音,话筒却没有输入……