当前位置: 首页 > news >正文

基于Spring MVC的三角形测试系统设计与实现

🌐 基于Spring MVC的三角形测试系统设计与实现

在本次Web编程实验中,我们基于Spring MVC框架,设计并实现了一个三角形测试系统。用户可以在网页中输入三条边长,系统会自动判断是否能构成三角形,并进一步判定三角形的类型(锐角/直角/钝角),同时计算其面积。


🧠 一、项目背景与目标

实验目的:

  • 掌握JavaBean技术在JSP页面中的应用
  • 理解MVC设计模式的思想
  • 熟悉Spring MVC框架的部署与使用

功能要求:

  • 客户端输入三个自然数作为边长
  • 判断是否能构成三角形,不能则提示原因
  • 能构成三角形时,输出类型(锐角/直角/钝角)并计算面积
  • 不能构成三角形时,面积统一设置为0

🛠️ 二、技术栈与环境

  • 操作系统:Windows XP SP2(兼容更高版本)
  • 开发环境:Eclipse IDE + JDK 1.8 + Tomcat 9.0
  • 技术框架:Spring MVC + JSP + JavaBean + CSS3

🧱 三、项目结构


src/
├── com.jmu.bean/
│   └── Triangle.java
├── com.jmu.controller/
│   └── TriangleController.java
WebContent/
├── view/
│   ├── triInput.jsp
│   └── triResult.jsp
├── css/
│   └── style.css
├── WEB-INF/
│   ├── web.xml
│   └── myspringmvc-servlet.xml

💻 四、核心代码实现

1. JavaBean(Triangle.java)

封装三边属性,实现判定逻辑与面积计算:

public void judge() {if (a <= 0 || b <= 0 || c <= 0) {result = "边长必须为自然数!";area = 0;return;}if (a + b <= c || a + c <= b || b + c <= a) {result = "不能构成三角形(两边之和不大于第三边)";area = 0;return;}// 判断三角形类型(锐角/直角/钝角)double aa = a * a, bb = b * b, cc = c * c;double max2 = Math.max(aa, Math.max(bb, cc));if (max2 == aa) {if (aa == bb + cc) result += ",直角三角形";else if (aa > bb + cc) result += ",钝角三角形";else result += ",锐角三角形";} else if (max2 == bb) {if (bb == aa + cc) result += ",直角三角形";else if (bb > aa + cc) result += ",钝角三角形";else result += ",锐角三角形";} else {if (cc == aa + bb) result += ",直角三角形";else if (cc > aa + bb) result += ",钝角三角形";else result += ",锐角三角形";}// 海伦公式计算面积double p = (a + b + c) / 2.0;double tempArea = Math.sqrt(p * (p - a) * (p - b) * (p - c));area = Math.round(tempArea * 100) / 100.0;
}
  1. 控制器(TriangleController.java)

继承AbstractController,接收请求参数,调用Bean处理,返回视图:

public class TriangleController extends AbstractController {private Triangle triangle;public void setTriangle(Triangle triangle) {this.triangle = triangle;}@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest request,HttpServletResponse response) {int a = 0, b = 0, c = 0;try {a = Integer.parseInt(request.getParameter("a"));b = Integer.parseInt(request.getParameter("b"));c = Integer.parseInt(request.getParameter("c"));} catch (Exception e) {}triangle.setA(a);triangle.setB(b);triangle.setC(c);triangle.judge();ModelAndView mav = new ModelAndView("triResult");mav.addObject("tri", triangle);return mav;}
}
  1. 输入页面(triInput.jsp)

提供表单,限制输入为自然数:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<link rel="stylesheet" href="css/style.css">
<html>
<head><title>三角形判定系统</title>
</head>
<body><div class="triangle-box"><h2>输入三角形三边(自然数)</h2><form method="post" action="tri.do"><div class="triangle-item"><p>边长 a:<br><br> <input type="number" name="a" required min="1"></p ></div><div class="triangle-item"><p>边长 b:<br><br> <input type="number" name="b" required min="1"></p ></div><div class="triangle-item"><p>边长 c:<br><br> <input type="number" name="c" required min="1"></p ></div><input type="submit" class="btn" value="判定三角形"></form></div>
</body>
</html>
  1. 结果页面(triResult.jsp)

使用EL表达式展示结果:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<link rel="stylesheet" href="css/style.css?v=6">
<html>
<head><title>三角形判定结果</title>
</head>
<body><div class="triangle-box"><div class="result-wrapper"><p class="result-text">您输入的三边:a = ${tri.a},b = ${tri.b},c = ${tri.c}</p ><p class="result-text">${tri.result}</p ><p class="area-text">面积:${tri.area}</p ><button class="btn return-btn" onclick="location.href='triInput.jsp'">返回重新输入</button></div></div>
</body>
</html>
  1. web.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>springmvc001</display-name><welcome-file-list><welcome-file>triInput.jsp</welcome-file></welcome-file-list><servlet><servlet-name>myspringmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/myspringmvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>myspringmvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>
</web-app>
  1. Spring MVC 配置(myspringmvc-servlet.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"...><bean class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"></bean><bean id="triangle" class="com.jmu.bean.Triangle"/><bean name="/tri.do" class="com.jmu.controller.TriangleController"><property name="triangle" ref="triangle"/></bean><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/view/"/><property name="suffix" value=".jsp"/></bean>
</beans>
  1. 样式设计(style.css)

实现了蓝紫渐变动态背景、响应式输入面板、按钮交互效果:

* {margin: 0;padding: 0;box-sizing: border-box;font-family: "Microsoft Yahei", sans-serif;
}
html, body {height: 100%;background: linear-gradient(135deg, #74c0f8, #5b3cb8);background-size: 400% 400%;animation: gradientFlow 14s ease-in-out infinite;
}
@keyframes gradientFlow {0% { background-position: 0% 50%; }50% { background-position: 100% 50%; }100% { background-position: 0% 50%; }
}
body {display: flex;justify-content: center;align-items: center;padding: 20px;
}
.triangle-box {width: 550px;padding: 0;background: transparent;border-radius: 20px;text-align: center;
}
.btn {width: 100%;height: 50px;background: linear-gradient(135deg, #6fb6f5, #6744c9);color: #fff;border: none;border-radius: 10px;cursor: pointer;
}
.btn:hover {background: linear-gradient(135deg, #58a3e8, #5332b8);transform: scale(1.02);
}

✅ 五、运行效果展示

微信图片_20260531130525_22224_4

正常三角形判定:

· 输入:3, 4, 5 → 直角三角形,面积 6.0

微信图片_20260531130841_22227_4

非三角形输入:

· 输入:3, 4, 7 → 提示“不能构成三角形”

微信图片_20260531130750_22226_4

异常输入:

· 输入:5, -3, 4 → 提示“边长必须为自然数”

微信图片_20260531130706_22225_4

所有结果页面均通过EL表达式动态展示,支持返回重新输入。


📘 六、实验小结

通过本次实验,我们小组深入理解了MVC架构的设计思想,掌握了Spring MVC的基本配置与开发流程。主要收获包括:

· ✅ 明确了模型、视图、控制器之间的职责划分
· ✅ 掌握了JavaBean封装业务逻辑的方法
· ✅ 熟练使用了EL表达式和JSP视图渲染
· ✅ 提升了前后端协同开发与问题调试能力

本次实验为我们后续开发更复杂的Web应用打下了坚实的基础。

http://www.zskr.cn/news/1434297.html

相关文章:

  • 物理服务器装CentOS 7.9,从BIOS设置到分区规划保姆级避坑指南
  • 为什么AI越强,内容审核反而越难了?深度拆解社交媒体平台内容治理技术架构
  • 终极指南:在Windows上完美使用PS3手柄的DsHidMini虚拟HID驱动
  • 广州海珠区设备搬运公司哪家专业靠谱?2026 实测测评 - 从来都是英雄出少年
  • 2026 广州海珠区搬运公司口碑榜 街坊亲测不踩坑 - 从来都是英雄出少年
  • 实话直说!两个月从二本冲到一本,真的不是天方夜谭|靠谱机构实测推荐 - 品牌测评鉴赏家
  • 告别网盘限速烦恼:LinkSwift 直链下载助手使用指南
  • 2026 广州吊装公司推荐 高难度设备搬迁起重避坑全攻略 - 从来都是英雄出少年
  • LVS总结
  • 基于Arduino与超声波传感器的导盲辅助设备设计与实现
  • UE5 C++项目编译罢工别慌!手把手教你清理Binaries/Intermediate/Saved文件夹的正确姿势(附依赖库丢失修复)
  • 医疗健康IT转型:从混合云架构到数据中台与AI落地的实践路径
  • 别再只用 > 和 >> 了!Linux tee命令的5个实用场景,从日志记录到管道调试
  • AI率总超标?2026年AI论文网站排行榜权威发布,轻松达标不是梦!
  • 告别雷达误报!用Python手把手实现CFAR目标检测(附CA/OS算法对比)
  • 终极宽屏优化:让经典植物大战僵尸完美适配现代显示器
  • 硬核盘点!2026AI写作辅助平台大盘点(覆盖 99% 毕业生论文需求)
  • 树莓派笔记本改造:SMBus电池管理与Max1873/MP26123充电方案详解
  • Ctool深度解析:一站式开发者工具集的架构设计与加密解密实战指南
  • 别再手动分区了!用targetcli在CentOS 7上快速配置iSCSI共享存储(附完整命令清单)
  • Mac鼠标平滑滚动终极指南:如何用Mos实现触控板般的丝滑体验
  • Layerdivider终极指南:5分钟学会将图片自动分层为专业PSD文件
  • 专业级抖音批量下载工具实战指南:7大特性深度解析与高效配置技巧
  • Qwen3.7-Max:当Agent成为新范式,我们站在了AI应用的拐点
  • Steam游戏自动破解终极指南:三步告别DRM限制困扰
  • 温州AI搜索优化服务商2026深度评测:避坑选型指南 - 品牌报告
  • LinkSwift:3分钟搞定网盘下载,让你的文件传输回归正常速度
  • 2026滚塑产品生产厂家怎么选?本凡机械领衔,这些实力派值得关注 - 玖叁鹿
  • 智慧职教刷课脚本终极指南:3分钟实现自动化学习
  • Python自动化邮件系统:基于Google API的群发通知解决方案