完善计算器程序,实现减法、乘法和除法功能
MVC计算器
加法器源码地址使用符合MVC设计模式的自定义框架实现加法计算器 - 柳若絮 - 博客园 (cnblogs.com)
在原有基础上对add.jsp进行修改,代码如下:
<%@ page contentType="text/html;charset=GBK" language="java" %>
<html>
<head>
<title>计算器</title>
</head>
<body bgcolor="#ffffc0">
<h1>算术计算器</h1>
<form id="calcForm" method="post">
<table>
<tbody>
<tr>
<td>第一个数</td>
<td><input type="text" name="num1"/></td>
</tr>
<tr>
<td>第二个数</td>
<td><input type="text" name="num2"/></td>
</tr>
</tbody>
</table>
<td><input type="button" id="add" value="+"/></td>
<td><input type="button" id="sub" value="-"/></td>
<td><input type="button" id="mul" value="*"/></td>
<td><input type="button" id="div" value="/"/></td>
</form>
<script type="text/javascript">
var add=document.getElementById("add");
var sub=document.getElementById("sub");
var mul=document.getElementById("mul");
var div=document.getElementById("div");
var calcForm=document.getElementById("calcForm")
add.onclick=function() {
calcForm.action="add.action";
calcForm.submit();
}
sub.onclick=function() {
calcForm.action="sub.action";
calcForm.submit();
}
mul.onclick=function() {
calcForm.action="mul.action";
calcForm.submit();
}
div.onclick=function() {
calcForm.action="div.action";
calcForm.submit();
}
</script>
</body>
</html>
修改com.dh.ch01.framework包中的Controller类,代码如下:
/**
* Servlet初始化方法
*/
@SuppressWarnings("unchecked")
public void init() throws ServletException {
//初始化actionMap
actionMap = new HashMap();
//将AddAction对象放入到actionMap中
actionMap.put("add", new AddAction());
actionMap.put("sub", new SubAction());
actionMap.put("mul", new MulAction());
actionMap.put("div", new DivAction());
}
在com.dh.ch01.action包中创建SubAction类,代码如下:
package com.dh.ch01.action;
import com.dh.ch01.biz.Calculator;
import com.dh.ch01.framework.Action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SubAction implements Action {
//业务逻辑对象
private Calculator biz = new Calculator();
public String execute(HttpServletRequest request, HttpServletResponse response) {
//获得页面输入
double num1 = Double.parseDouble(request.getParameter("num1"));
double num2 = Double.parseDouble(request.getParameter("num2"));
//调用业务逻辑方法,获得返回值
double result = biz.sub(num1, num2);
//将结果存放在request中,以便在页面中得到
request.setAttribute("result", result);
//返回将要转发的页面路径
return "add_result.jsp";
}
}
在com.dh.ch01.action包中创建MulAction类,代码如下:
package com.dh.ch01.action;
import com.dh.ch01.biz.Calculator;
import com.dh.ch01.framework.Action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MulAction implements Action {
//业务逻辑对象
private Calculator biz = new Calculator();
public String execute(HttpServletRequest request, HttpServletResponse response) {
//获得页面输入
double num1 = Double.parseDouble(request.getParameter("num1"));
double num2 = Double.parseDouble(request.getParameter("num2"));
//调用业务逻辑方法,获得返回值
double result = biz.mul(num1, num2);
//将结果存放在request中,以便在页面中得到
request.setAttribute("result", result);
//返回将要转发的页面路径
return "add_result.jsp";
}
}
在com.dh.ch01.action包中创建DivAction类,代码如下:
package com.dh.ch01.action;
import com.dh.ch01.biz.Calculator;
import com.dh.ch01.framework.Action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DivAction implements Action {
//业务逻辑对象
private Calculator biz = new Calculator();
public String execute(HttpServletRequest request, HttpServletResponse response) {
//获得页面输入
double num1 = Double.parseDouble(request.getParameter("num1"));
double num2 = Double.parseDouble(request.getParameter("num2"));
//调用业务逻辑方法,获得返回值
double result = biz.div(num1, num2);
//将结果存放在request中,以便在页面中得到
request.setAttribute("result", result);
//返回将要转发的页面路径
return "add_result.jsp";
}
}