【Web编程技术实验八】基于JavaBean的三角形测试系统(SpringMVC实现)
一、实验背景
本次实验要实现一个三角形测试系统:
- 用户输入三条边的长度
- 系统判断能否构成三角形
- 若能构成,判断三角形类型(锐角/直角/钝角)
- 计算并显示三角形面积
核心技术: SpringMVC + JavaBean + JSP
二、技术原理
2.1 什么是JavaBean?
JavaBean是一个遵循特定规范的Java类,用于封装数据。它包含:
- 私有属性
- 无参构造方法
- Getter和Setter方法
2.2 MVC设计模式
| 角色 | 作用 | 本实验实现 |
|---|---|---|
| Model(模型) | 封装数据和业务逻辑 | TriangleBean.java |
| View(视图) | 用户界面 | triangle.jsp |
| Controller(控制器) | 处理请求 | TriangleController.java |
2.3 三角形判断的数学原理
判断能否构成三角形:
两边之和大于第三边
判断三角形类型(勾股定理):
- a² + b² = c² → 直角三角形
- a² + b² > c² → 锐角三角形
- a² + b² < c² → 钝角三角形
计算面积(海伦公式):
p = (a + b + c) / 2
面积 = √[p(p-a)(p-b)(p-c)]
三、核心代码
3.1 JavaBean(TriangleBean.java)
public class TriangleBean {
private double sideA, sideB, sideC;
private boolean isValid;
private String triangleType;
private double area;
private String message;
// 判断能否构成三角形
public void validateTriangle() {
if (sideA <= 0 || sideB <= 0 || sideC <= 0) {
isValid = false;
message = "❌ 边长必须为正数!";
return;
}
if (sideA + sideB > sideC && sideA + sideC > sideB && sideB + sideC > sideA) {
isValid = true;
message = "✅ 可以构成三角形";
calculateType();
calculateArea();
} else {
isValid = false;
message = "❌ 不能构成三角形";
area = 0;
}
}
// 判断三角形类型
private void calculateType() {
double a2 = sideA * sideA;
double b2 = sideB * sideB;
double c2 = sideC * sideC;
if (a2 + b2 == c2 || a2 + c2 == b2 || b2 + c2 == a2) {
triangleType = "直角三角形";
} else if (a2 + b2 < c2 || a2 + c2 < b2 || b2 + c2 < a2) {
triangleType = "钝角三角形";
} else {
triangleType = "锐角三角形";
}
}
// 计算面积(海伦公式)
private void calculateArea() {
double p = (sideA + sideB + sideC) / 2;
area = Math.sqrt(p * (p - sideA) * (p - sideB) * (p - sideC));
area = Math.round(area * 100) / 100.0;
}
// Getter和Setter方法
// ...
}
3.2 Controller(TriangleController.java)
java
@Controller
public class TriangleController {
@RequestMapping("/triangle")
public String triangle() {
return "triangle";
}
@RequestMapping("/calculate")
public String calculate(
@RequestParam double sideA,
@RequestParam double sideB,
@RequestParam double sideC,
Model model) {
TriangleBean triangle = new TriangleBean();
triangle.setSideA(sideA);
triangle.setSideB(sideB);
triangle.setSideC(sideC);
triangle.validateTriangle();
model.addAttribute("triangle", triangle);
return "triangle";
}
}
3.3 JSP页面(triangle.jsp)
jsp
<form action="calculate" method="post">
<input type="number" name="sideA" required>
<input type="number" name="sideB" required>
<input type="number" name="sideC" required>
<button type="submit">判断三角形</button>
</form>
<c:if test="${triangle != null}">
<div class="result">
<p>边长:${triangle.sideA} / ${triangle.sideB} / ${triangle.sideC}</p>
<c:choose>
<c:when test="${triangle.valid}">
<p>✅ ${triangle.message}</p>
<p>三角形类型:${triangle.triangleType}</p>
<p>三角形面积:${triangle.area}</p>
</c:when>
<c:otherwise>
<p>❌ ${triangle.message}</p>
</c:otherwise>
</c:choose>
</div>
</c:if>
四、运行效果
4.1 测试用例1:直角三角形(3,4,5)
项目 结果
输入 3, 4, 5
能否构成 ✅ 能
三角形类型 直角三角形
面积 6.0


4.2 测试用例2:等边三角形(3,3,3)
项目 结果
输入 3,3,3
能否构成 ✅ 能
三角形类型 等边三角形
面积 约3.897

4.3 测试用例4:不能构成三角形(1,2,3)
项目 结果
输入 1, 2, 3
能否构成 ❌ 不能
提示信息 两边之和不大于第三边

五、遇到的问题及解决
问题1:Spring配置后404错误
现象:访问/calculate时返回404
原因:
Java类没有编译成.class文件
Tomcat找不到Controller
解决:
确保WEB-INF/lib下有Spring的jar包
确保WEB-INF/classes下有编译后的.class文件
检查spring-servlet.xml中的包扫描路径是否正确
问题2:三角形类型判断不准确
原因:判断逻辑写反了
解决:根据勾股定理重新梳理:
直角:a² + b² = c²
锐角:a² + b² > c²
钝角:a² + b² < c²
问题3:面积计算精度问题
原因:double类型计算后小数位过多
解决:使用Math.round(area * 100) / 100.0保留两位小数
六、项目结构
text
TriangleTest/
├── triangle.jsp
└── WEB-INF/
├── web.xml
├── spring-servlet.xml
├── lib/
│ ├── spring-webmvc-5.3.30.jar
│ ├── javax.servlet-api-4.0.1.jar
│ └── jstl-1.2.jar
└── classes/
└── com/triangle/
├── bean/TriangleBean.class
└── controller/TriangleController.class
七、总结
通过本次实验,我掌握了:
JavaBean的使用:封装数据,分离业务逻辑
MVC设计模式:Model(数据+逻辑)、View(界面)、Controller(请求处理)
SpringMVC框架:@Controller、@RequestMapping、@RequestParam注解
三角形判断的数学原理:不等式定理、勾股定理、海伦公式

浙公网安备 33010602011771号