1. 准备工作
- 环境要求:
- Java JDK
- Maven
- IDE(如IntelliJ IDEA或Eclipse)
2. 创建Spring Boot项目
-
使用Spring Initializr创建一个新的Spring Boot项目:
- 访问 Spring Initializr
- 选择项目元数据(如Group和Artifact)
- 添加依赖:
Spring Web
和Spring Boot DevTools
- 点击“Generate”下载项目。
-
解压下载的项目并在IDE中打开。
3. 添加依赖
在pom.xml
中添加对HTTP客户端的支持(如RestTemplate
):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
4. 创建天气服务
创建一个服务类,用于调用天气API。
package com.example.weatherapp.service;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
@Service
public class WeatherService {
private final String API_KEY = "YOUR_API_KEY"; // 替换为你的API密钥
private final String API_URL = "https://api.openweathermap.org/data/2.5/weather";
public String getWeather(String city) {
RestTemplate restTemplate = new RestTemplate();
String uri = UriComponentsBuilder.fromHttpUrl(API_URL)
.queryParam("q", city)
.queryParam("appid", API_KEY)
.queryParam("units", "metric") // 使用摄氏度
.toUriString();
return restTemplate.getForObject(uri, String.class);
}
}
5. 创建控制器
创建一个控制器以处理用户请求。
package com.example.weatherapp.controller;
import com.example.weatherapp.service.WeatherService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class WeatherController {
@Autowired
private WeatherService weatherService;
@GetMapping("/")
public String index() {
return "index";
}
@GetMapping("/weather")
public String getWeather(@RequestParam String city, Model model) {
String weatherData = weatherService.getWeather(city);
model.addAttribute("weatherData", weatherData);
return "result";
}
}
6. 创建视图
在src/main/resources/templates
目录下创建两个HTML文件。
- index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Weather App</title>
</head>
<body>
<h1>Weather Application</h1>
<form action="/weather" method="get">
<input type="text" name="city" placeholder="Enter city name" required>
<button type="submit">Get Weather</button>
</form>
</body>
</html>
- result.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Weather Result</title>
</head>
<body>
<h1>Weather Information</h1>
<pre>${weatherData}</pre>
<a href="/">Back</a>
</body>
</html>
7. 运行应用
- 在IDE中运行你的Spring Boot应用。
- 打开浏览器,访问
http://localhost:8080
。 - 输入城市名称并查看天气信息。
8. 改进功能
- 解析JSON:使用Jackson库解析天气API返回的JSON数据,并以更友好的格式展示。
- 错误处理:处理无效城市名称或API调用失败的情况。
- 样式美化:使用CSS或前端框架(如Bootstrap)美化界面。
9. 获取API密钥
访问 OpenWeatherMap 注册并获取API密钥。
10. 部署
可以将应用部署到Heroku、AWS等云平台,方便他人访问。
本文作者:GT工作室
如有疑问联系qq:3771822731