这个毕业设计项目采用SSM(Spring+SpringMVC+MyBatis)后端框架与Vue.js前端框架,构建了一个轻量级的天气查询应用系统。作为典型的Java Web全栈开发实践案例,它完美展现了前后端分离架构在现代Web应用中的实际应用价值。
我在指导类似项目时发现,天气类应用虽然功能看似简单,但涉及API调用、数据缓存、异常处理等多个关键技术点,是检验学生全栈开发能力的绝佳选题。2026届毕业生选择这个题目,既能控制开发复杂度,又能充分展示SSM和Vue的核心技术运用。
Spring+SpringMVC+MyBatis组合是Java Web开发的经典选择:
实际开发中建议使用SpringBoot简化配置,但传统SSM组合更利于展示配置文件的理解
推荐使用和风天气或OpenWeatherMap的免费API:
java复制// SpringMVC控制器示例
@RestController
@RequestMapping("/api/weather")
public class WeatherController {
@Autowired
private WeatherService weatherService;
@GetMapping("/city/{cityName}")
public ResponseEntity<WeatherData> getByCity(
@PathVariable String cityName) {
return ResponseEntity.ok(
weatherService.fetchByCity(cityName));
}
}
为避免频繁调用API,建议采用Redis缓存:
Vue组件关键代码:
vue复制<template>
<div class="weather-card">
<h3>{{ city }}</h3>
<div class="temp">{{ temp }}°C</div>
<img :src="iconUrl" :alt="condition">
</div>
</template>
<script>
export default {
props: ['city', 'temp', 'condition'],
computed: {
iconUrl() {
return `/icons/${this.condition}.png`
}
}
}
</script>
sql复制CREATE TABLE `query_history` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`user_id` INT DEFAULT NULL COMMENT '登录用户ID',
`city` VARCHAR(50) NOT NULL,
`query_time` DATETIME NOT NULL,
`ip_address` VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
当不使用Redis时,可用MySQL实现基础缓存:
sql复制CREATE TABLE `weather_cache` (
`city` VARCHAR(50) NOT NULL,
`data` JSON NOT NULL,
`expire_time` DATETIME NOT NULL,
PRIMARY KEY (`city`)
);
后端:
前端:
推荐Docker容器化部署:
dockerfile复制# 后端Dockerfile示例
FROM openjdk:17-jdk
COPY target/weather-app.war /usr/local/tomcat/webapps/
EXPOSE 8080
SpringBoot配置示例:
java复制@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST");
}
}
Vue项目添加viewport meta:
html复制<meta name="viewport" content="width=device-width, initial-scale=1.0">
这个项目虽然基础,但通过深入优化每个技术环节,完全可以做出亮点。我在评审类似项目时,特别看重异常处理的完整性和代码的可维护性设计