四则运算项目介绍
1. 如何使用?
首先在文本框中输入变量a和b的值,再从下方选择加法或减法或乘法或除法,再点击计算即可进行相应的运算.
2. 考虑了哪些特殊情况?怎么处理的?
(1)制作简易前端: 在src/main/resources/static中新建一个index.html,再从文件中编写相应的前端代码
(2)升级到实数的四则运算:借助BigDecimal类进行精确计算
(3)判断数据是否溢出:不太懂,但好像通过BigDecimal进行计算不会溢出
(4)判断数据类型是否有误:还没实现,我目前有两个想法,一是代码运行前用if
语句判断数据类型是否正确,二是使用try
语句.
(5)防御注入攻击:貌似我的代码不会受到注入攻击,因为我的代码实现的是对参数直接赋值,所以若输入框留空的话变量值就为空,但在url中仍存在这个值为空的变量,所以再点击计算按钮就无法访问到正确的网址.
3. 学习历程
(1)html的一些基本知识(文本框,from表单等)
(2)BigDecimal的一些知识(不懂但大致会用了)
4.代码
src/main/java/com/example/demo/controller/main.java:
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.InputMismatchException;
@RestController
public class main {
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
@GetMapping("/add")
public static String add(double a, double b) {
BigDecimal b1 = new BigDecimal(Double.toString(a));
BigDecimal b2 = new BigDecimal(Double.toString(b));
return b1.add(b2).toString();
}
@GetMapping("/subtract")
public static double sub(double a, double b) {
BigDecimal b1 = new BigDecimal(Double.toString(a));
BigDecimal b2 = new BigDecimal(Double.toString(b));
return b1.subtract(b2).doubleValue();
}
@GetMapping("/multiplication")
public static double mul(double a, double b) {
BigDecimal b1 = new BigDecimal(Double.toString(a));
BigDecimal b2 = new BigDecimal(Double.toString(b));
return b1.multiply(b2).doubleValue();
}
@GetMapping("/division")
private static double div(double a, double b) {
BigDecimal b1 = new BigDecimal(Double.toString(a));
BigDecimal b2 = new BigDecimal(Double.toString(b));
return b1.divide(b2,DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
src/main/resources/static/index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>四则运算</title>
</head>
<body>
<form action = "http://localhost:8080/">
<div>a:</div>
<input type="text" name=a />
<div>b:</div>
<input type="text" name=b />
<br>
<p>
<input type="radio" onclick="this.form.action = 'http://localhost:8080/add'"name="count">加法
<input type="radio" onclick="this.form.action = 'http://localhost:8080/subtract'"name="count">减法
<input type="radio" onclick="this.form.action = 'http://localhost:8080/multiplication'"name="count">乘法
<input type="radio" onclick="this.form.action = 'http://localhost:8080/division'"name="count">除法
</p>
<button type="submit">计算</button>
</form>
</body>
</html>