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