方立勋_30天掌握JavaWeb_(JSP+JavaBean实现)简单计算器

  1. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据。
  2. Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。 Servlet+JSP、JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。

这里写图片描述

使用JSP+JavaBean编写一个计算器(calculator)页面,JavaBean具有firstNum、secondNum、result、operator属性,并提供一个calculate方法。


JSP页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>简单计算器</title>
</head>

<body style="text-align: center;">

    <jsp:useBean id="calculatorBean" class="com.java.domain.CalculatorBean"></jsp:useBean>
    <jsp:setProperty property="*" name="calculatorBean" />
    <%
        try{
            calculatorBean.calculator();
        }catch(Exception e){
            out.write(e.getMessage());
            }
    %>
    <br />-------------------------------------------------------------------------------
    <br> 计算结果是:
    <jsp:getProperty property="firstNum" name="calculatorBean" />
    <jsp:getProperty property="operator" name="calculatorBean" />
    <jsp:getProperty property="secondNum" name="calculatorBean" />
    =
    <jsp:getProperty property="result" name="calculatorBean" />
    <br />-------------------------------------------------------------------------------
    <br>

    <form action="/day09_calculator/calculator.jsp" method="post">
        <table width="50%" border="1px">
            <tr>
                <td colspan="2">简单的计算器</td>
            </tr>
            <tr>
                <td>第一个参数:</td>
                <td><input name="firstNum" type="text"></td>
            </tr>
            <tr>
                <td>运算符:</td>
                <td><select name="operator">
                        <option value="+">+</option>
                        <option value="-">-</option>
                        <option value="*">*</option>
                        <option value="/">/</option>
                </select></td>
            </tr>
            <tr>
                <td>第二个参数:</td>
                <td><input name="secondNum" type="text"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="计算"></td>
            </tr>
        </table>
    </form>
</body>
</html>

JavaBean

package com.java.domain;

import java.math.BigDecimal;

//封装计算器数据的Bean
public class CalculatorBean {

    private String firstNum = "0";
    private char operator = '+';
    private String secondNum = "0";
    private String result;

    public String getFirstNum() {
        return firstNum;
    }

    public void setFirstNum(String firstNum) {
        this.firstNum = firstNum;
    }

    public char getOperator() {
        return operator;
    }

    public void setOperator(char operator) {
        this.operator = operator;
    }

    public String getSecondNum() {
        return secondNum;
    }

    public void setSecondNum(String secondNum) {
        this.secondNum = secondNum;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }

    public void calculator() {
        BigDecimal first = new BigDecimal(this.firstNum);
        BigDecimal second = new BigDecimal(this.secondNum);

        switch (this.operator) {
        case '+':{
            this.result = first.add(second).toString();
            break;
        }
        case '-':{
            this.result = first.subtract(second).toString();
            break;
        }
        case '*':{
            this.result = first.multiply(second).toString();
            break;
        }
        case '/':{
            if(second.doubleValue()==0){
                throw new RuntimeException("被除数不能为0");
            }
            this.result = first.divide(second,20,BigDecimal.ROUND_HALF_UP).toString();
            break;
        }
        default:
            throw new RuntimeException("被除数只能为+-*/");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值