使用符合MVC设计模式的自定义框架实现加法计算器

使用自定义MVC实现加减乘除 自定义MVC01什么是MVC 什么是MVC m:Model模型 v:View视图 c:Controller控制 主要用于将业务逻辑处理代码,数据代码,界面分离,让html和业务逻辑分开,实现各司其职的作用 阅读详情

自定义MVC框架的核心是控制器的实现:首先我们来定义Action接口,实现Controller类。编译环境为eclipse。

package com.dh.ch01.framework;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface Action {
	String execute(HttpServletRequest request,HttpServletResponse response);
	
}
创建名为Controller的Servlet
public class Controller extends HttpServlet {
	//声明由控制器Controller维护的Action映射,其中保存所有的Action实例
	private HashMap actionMap;
       /**
        * Servlet初始化方法
        */
    public void init() throws ServletException{
    	//初始化actionMap
    	actionMap=new HashMap();
    	//将AddAction对象放入到acctionMap中
    	actionMap.put("add", new AddAction());
//    	actionMap.put("sub", new SubAction());
    }
    private Action determinActionByPath(String path){
    	String actionName=path.substring(path.lastIndexOf('/')+1,path.length()-7);
    	Action ret=(Action)actionMap.get(actionName);
    	return ret;
    }
    
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//得到path
		String path=request.getServletPath();
		//找出Action
		Action action=(Action)this.determinActionByPath(path);
		//执行操作
		String resultView=action.execute(request, response);
		//控制页面转向
		if(null!=resultView){
			request.getRequestDispatcher(resultView).forward(request, response);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
web.xml的配置

<servlet-name>Controller</servlet-name>
    <servlet-class>com.dh.ch01.framework.Controller</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Controller</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>
创建add.jsp页面(用户接收数据)
<title>算数计算器</title>
</head>
<body bgcolor="#ffffc0">

	<h1>算数计算器</h1>
	<form id="calxForm" method="post" action="add.action">
	<table>
		<tbody>
			<tr>
				<td>第一个数</td>
				<td><input type="text" name="num1"/></td>
			</tr>
			<tr>
				<td>第二个数</td>
				<td><input type="text" name="num2"/></td>
			</tr>
			<tr>
				<td><input type="submit" value="加"/></td>
			</tr>
		</tbody>
	</table>
	</form>
</body>
创建Calculator,实现算数运算

public class Calculator {
	public double add(double a,double b){
		return a+b;
	}
	public double subtract(double a,double b){
		return a-b;
	}
	public double multiply(double a,double b){
		return a*b;
	}
	public double divide(double a,double b){
		return a/b;
	}
}

创建AddAction类,实现Action接口

public class AddAction implements Action {
		private Calculator biz=new Calculator();
		public String execute(HttpServletRequest request,HttpServletResponse response){
			//execute获取add.jsp页面的表单数据
			double num1=Double.parseDouble(request.getParameter("num1"));
			double num2=Double.parseDouble(request.getParameter("num2"));
			//调用业务逻辑方法,获得返回值
			double result=biz.add(num1, num2);
			//将结构存放在request中,以便在页面中得到
			request.setAttribute("result", result);
			//返回将要转发到页面路径
			return"add_result.jsp";
		}
		
	
}
创建add_result.jsp页面显示计算结果


<body bgcolor="#ffffc0">
<table>
		<tbody>
			<tr>
				<td>第一个数</td>
				<td>${param.num1}</td>
			</tr>
			<tr>
				<td>第二个数</td>
				<td>${param.num2}</td>
			</tr>
			<tr>
				<td>结果</td>
				<td>${requestScope.result}</td>
			</tr>
		</tbody>
	</table>
	<button onclick="history.go(-1);">返回</button>
</body>
附上两张结构图     

显示如图所示结果就成功啦!同理可以继续完善程序,实现减法,乘法和除法,在这里我就不一一写出啦。
构建JSP简易计算器:Web开发入门案例 Java Server Pages (JSP) 是一种用于开发动态网页的技术,允许开发者在HTML中嵌入Java代码,以便在服务器端执行。通过JSP,开发者可以方便地创建能够与服务器端对象进行交互的Web应用。JSP被编译成Servlet并在运行时由Servlet容器执行,这使得页面逻辑与页面内容分离,提高了开发效率和维护性。在设计一个简易计算器时,首先需要考虑的是基本的运算功能,这通常包括加法、减法、乘法和除法。这些是用户最常使用的计算功能,也是计算器设计的基石。 阅读详情

相关推荐

C#计算器开发实战与源码解析

C#被设计为一种简单、现代、面向对象和类型安全的语言。它的语法清晰简洁,易于学习和理解。C#的一个显著特点是它能够与.NET框架完美集成,利用公共语言运行时(CLR)的特性,比如异常处理、垃圾回收、垃圾回收和类型安全。C#特别适合开发企业级应用程序,如桌面应用程序、Web应用程序、Web服务等。

weixin_32311823的博客 1018

JAVAFX编写程序,实现加法、减法、乘法和除法操作编写程序,实现加法、减法、乘法和除法操作

编写程序,实现加法、减法、乘法和除法操作。运行效果如图所示。 package application2; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import j...

weixin_43786637的博客 3590

laracalc:一个使用Laravel内置的简单计算器应用程序,使用MySQL进行数据库设计并使用顺风设计

拉腊卡 使用Laravel内置的超级简单计算器应用程序,使用MySql后端和tailwindcss进行样式设置。

Java实战之简易计算器(3)——使用IDEA创建一个JavaFX项目

使用IDEA创建一个JavaFX项目 01 创建第一个JavaFX项目 第一步:新建项目 第二步:创建JavaFX项目 第三步:设置项目名称和项目路径 第四步:项目创建完成 第五步:点击运行,运行结果如下: 02 代码说明 项目结构说明 其中Main.java文件的内容如下: package sample; imp...

二木成林 3545

简单的加法MVC实现

一个用jsp+servelet+javabean的mvc模型实现的加法运算

穿透鼠标实现后台点击,适用于任何窗口!【后台鼠标】【风雪】

也许你就是被这标题吸引来的,呵呵!好久没发帖了,勾引一下大家的胃口,当然有的人已经猜出原理了!既然来了,都要把原理学回家,不然就没意思了!很多游戏现在都不支持后台消息鼠标,要实现真的不是简单的,什么注入dll啊,什么hook俺也学不懂,那就简简单单另辟蹊径了下面来讲讲原理吧(下面的玩玩可以,用于实际不现实,俺也不藏了,看到这么多人回复,良心过意不去,呵呵)首先,将要点击的窗口上面覆盖的所有窗...

weixin_34129145的博客 1万+

java fx 计算器_javaFX 实现计算器[面向对象-2小时完成]

可惜放学了,明天再整理,先上张图吧:package com.wk.view;import com.wk.cal.CalAdd;import com.wk.cal.CalDiv;import com.wk.cal.CalMul;import com.wk.cal.CalSub;import com.wk.model.Operator;import javafx.fxml.FXML;import ja...

weixin_34223525的博客 678

基于TI MSPM0的PS2双轴按键摇杆模块ADC+GPIO驱动移植实战

本文详细介绍了在TI MSPM0微控制器上驱动PS2双轴按键摇杆模块的完整实战流程。通过SysConfig图形化工具配置ADC与GPIO引脚,并编写了包含ADC采样、按键检测及数据处理的驱动代码,实现了对摇杆X/Y轴模拟量及按键数字量的稳定读取,为嵌入式控制项目提供了可直接移植的解决方案。

weixin_42465140的博客 83

Java 小练习(1) -- Java FX 编写计算器

引言: 最近在学习java ,在学习的过程中想找几个简单的小程序练手。用Java写一个计算器算一个难度非常低的练习,它将我之前学过的 Java 的知识重新地拾起来了。在这个小练习中,我选择了逻辑层和显示层分离(MVC模式)的JavaFX 技术。在javafx 中,用fxml文件来表示显示层内容,用Java 来编写程序的业务逻辑。 文章结构 |-- 显示层设计 |-- 逻辑层设计 |-- 源...

weixin_38968305的博客 2764

Agent Skills:AI智能体规模化落地的基础设施

摘要:AgentSkills体系已成为AI智能体落地的核心基础设施,解决了能力扩展和行业知识沉淀两大核心难题。该开放标准通过语义优先、渐进式披露等设计原则,实现了工具调用的标准化和可控化,同时支持轻量化知识沉淀。Skill作为最小能力单元,将传统软件功能、行业知识等封装为可被智能体调用的标准化模块,推动了软件产业从"工具时代"向"智能体时代"的范式变革。目前该体系已被主流Agent工具广泛兼容,形成完整生态,未来将持续演进,进一步降低落地门槛,推动AI原生转型。

技术引领业务创新 1158

CNN卷积神经网络手写数字识别实例及代码详解

本文的代码来自githup的Deep Learning的toolbox,是用Matlab实现的。感谢该toolbox的作者付出和分享。 我在应该该代码进行训练时,出现一些报错,如expand函数应用不对,flipall函数未定义等问题,对这些问题进行了修正,完成网络训练和验证。 本文mnist_uint8.mat的获取可以参照我的另一篇博客:MNIST数据库处理--matlab生成mnist_

VivienFu的专栏 6万+

第一章 自定义MVC框架

第一章 自定义MVC框架1.1 MVC模式设计 组成;Model:模型,用于数据和业务的处理 View :视图,用于数据的显示 Controller:控制器,用于进行流程控制 特点:1.一个模型可以对应多个视图 2.显示与逻辑控制的分离 3.分层控制,减低了代码间的耦合1.2 DTD验证XML文档 ...

weixin_30578677的博客 130

Python实战:用NumPy实现LU分解与QR分解(附代码对比)

本文深入探讨了使用NumPy实现LU分解与QR分解的实战方法,通过代码对比分析了两种矩阵分解技术的原理、数值稳定性差异及核心应用场景。LU分解适用于高效求解线性方程组,而QR分解凭借其正交化特性,在求解最小二乘问题和处理病态矩阵时更具优势。文章提供了详细的Python代码示例,帮助开发者根据具体问题选择最合适的分解方法。

php55的博客 1212

android studio 项目 :UI设计 实现简单计算器(实现高精度)

一个实验做了快一天,记录一下 实验二 UI设计(一) 实验目的: 自主完成一个简单APP的设计工作,综合应用已经学到的Android UI设计技巧,重点注意合理使用布局。 实验要求: 1.完成一个计算器的设计,可以以手机自带的计算器为参考。设计过程中,注意考虑界面的美观性,不同机型的适应性,以及功能的完备性。 2.注意结合Activity的生命周期,考虑不同情况下计算器的界面状态。 3.如有余力,可以考虑实现一个高精度科学计算型的计算器。 实现效果: 整数和浮点数的加减乘除、取余、开根号,异号、清零 计算结

wow_awsl_qwq的博客 1万+

快乐8 Ai大模型XGBoost LightGBM预测系统

随机森林回归:通过集成多个决策树模型,提高预测的准确性和稳定性。XGBoost:一种基于梯度提升的强大模型,擅长处理结构化数据。LightGBM:一种高效的基于决策树算法的分布式梯度提升框架,具有快速的训练速度和低内存消耗。高预测准确率:通过集成多种模型,提供更为精准的预测结果。多种预测方法:支持同尾号、重号、温号、连号和综合预测等多种预测策略,满足不同用户的需求。实时日志:在预测过程中,用户可以实时查看系统的预测进度和结果。

m0_72636583的博客 1万+

电力电子新手必看:COT控制模式的工作原理与典型应用场景解析

本文深入解析了COT控制模式的工作原理及其在电力电子领域的典型应用。COT控制(恒定导通时间控制)通过固定导通时间机制,解决了传统滞环控制的问题,特别适用于需要快速瞬态响应和高效率的应用场景,如CPU/GPU供电和便携设备电源管理。文章详细介绍了COT控制的核心流程、技术特点及设计实践中的关键考量,帮助电力电子新手快速掌握这一技术。

weixin_30745553的博客 522

【iOS】仿写iOS计算器总结

显然对于算法部分一定是放在Model中进行数据处理,计算器显示屏与计算器按钮的布局写在View中,当需要在viewController布局View时,View内的布局方法被调用。这次的计算器bug频出,究其原因是在写限制输入的时候没有构思好就写,导致后面bug改完一个,新的就又漏出来,必要处注释缺少。以后的项目会越来越难,必须认真对待,少写bug,改正坏习惯。要学会写计算器,必须要学会用栈来实现四则运算,同时要实现复杂运算的前提,就增加括号、小数点情况的判断来处理。这是布局按钮的完整代码。

zdsey的博客 1540

ZYNQ BRAM实现PS与PL数据交互

有时CPU需要与PL进行小批量的数据交换,可以通过BRAM模块,也就是Block RAM实现此要求。本章通过Zynq的GP Master接口读写PL端的BRAM,实现与PL的交互。在本实验中加入了自定义的FPGA程序,并利用AXI4总线进行配置,通知其何时读写BRAM。以下为本实验原理图,CPU通过AXI BRAM Controller读取BRAM数据,CPU仅配置自定义的PL BRAM Controller 的寄存器,不通过它读写数据。

baidu_34971492的博客 2276

SpringMVC练习:加法计算器与登录

请求路径:calc/add,请求方式:GET/POST.请求参数:num1:类型Integer,必传参数;num2:类型Integer,必传参数.登录请求路径:/user/login,请求方式POST.登录请求参数:userName:类型String,必传参数;password:类型String,必传参数.查询用户是否登录路径:/user/getLoginUser。

slank_noob的博客 733

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

代码重构-MVC框架

1、什么是mvc框架 MVC是当前比较流行的框架,随便Google下,就可以发现几乎所有的应用程序开发中都采用了MVC框架,例如:.NET,Java Spring,Java Struts,PHP 。那么MVC到底是什么,为什么被广泛使用? 简要说明下,什么是MVC。MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型可以对于

bluebell_55的专栏 1195

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

MFC中的MVC及两者之间的关系

可以先看一个帖子:http://bbs.csdn.net/topics/80104688 关于MVC结构模式无须多言,如下图所示: 在MFC中实现经典的MVC结构,如下图所示: 注意: 1、Document和View之间的绑定:View绑定到Document。 2、Frame作为Controller时,由于可以接收到输入消息,比较适合充当控制器。但

Arcsinsin的学习笔记 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java课程设计:基于MVC架构的Swing计算器实现与工程实践

在Java面向对象编程学习中,GUI(图形用户界面)开发是连接基础语法与工程实践的关键环节。其核心原理在于事件驱动模型,通过监听用户操作触发相应业务逻辑。掌握GUI开发不仅能深化对Java集合、多线程等核心技术的理解,更具重要技术价值——它培养了模块化设计与架构思维,这是构建可维护、可扩展软件系统的基石。典型的应用场景包括桌面工具开发、管理系统前端等。本文以Java课程设计中高频出现的【计算器】项目为载体,系统阐述如何运用【MVC架构】将业务逻辑、用户界面与控制逻辑分离,并详细解析状态机管理、异常处理等工程

weixin_33816821的博客 398

Flutter框架跨平台鸿蒙开发——存款利息计算器APP的开发流程

本文介绍了使用Flutter框架开发跨平台存款利息计算器APP的完整流程。该应用支持活期、定期等4种存款方式的利息计算,具有界面美观、操作简单、结果准确等特点。文章详细阐述了开发环境搭建、项目架构设计(采用MVC模式)以及核心功能实现,包括主入口设计、页面结构、利息计算逻辑等关键代码。通过Flutter的跨平台特性,该应用可适配Android、iOS和鸿蒙系统,为开发者提供了实用的金融工具类应用开发示例。

2401_86246062的博客 638

Spring MVC 的案例小练习

当我们完成后端代码后,可以进行小步测试,即先直接使用 postman 对后端代码进行测试。测试正常,先基本确认后端代码可以基本实现功能。无1. 获取全部留言我们可以用 List 表达,用 JSON 来描述这个 List 数据1.登录接口:2. 图书列表展示。

Zz_waiting的博客 770

深入解析:一款基于C语言与EasyX的现代化图形界面计算器设计与实现

它封装了底层的GDI(图形设备接口)操作,提供了如initgraph(初始化图形窗口)、outtextxy(输出文字)、solidroundrect(画实心圆角矩形)等简单易用的函数,极大地降低了图形编程的门槛。• drawRoundRect: 使用EasyX的solidroundrect函数绘制带圆角的矩形,并通过先绘制一个偏移的深色矩形来模拟简单的阴影效果,增加了按钮的立体感。鼠标点击提供了精准的视觉反馈,而键盘输入则极大地提升了高频使用的操作效率,兼顾了不同用户的使用习惯。

weixin_54447959的博客 578

MVC的发展与应用总结

1、 最初的程序都是是命令行界面,后来进化到GUI(Graphic User Interface),即图形化用户接口。以一个计算器软件为例,一个程序无论C/S还是B/S结构都需要搞定:   a) 界面布局。整个计算器界面要怎么布局看起来才合理、美观。   b) 业务逻辑。例如用户点击“=”按钮时,根据输入计算输出结果。   c) 界面交互。例如...

weixin_30629653的博客 579
上一篇: 鼠标悬浮实现各种图片散开的特效
下一篇: 用java开发贪吃蛇游戏
WhoAmI OOOOOOO
博客等级 码龄10年 13粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值