SpringMVC结合天气api实现天气查询
发布时间 - 2026-01-11 00:58:51 点击率:次本实例实现在jsp页面实现查询全国城市天气预报的功能,供大家参考,具体内容如下

实例目录:
实现效果:
具体思路:
从和风天气api那里取得具体城市的api接口,获取json数据,再对json数据进行解析。
获取json数据:
package com.util;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class NetUtilImpl implements NetUtil{
@Override
public String getJson(String url) throws IOException{
HttpURLConnection connection = null;
URL url2 = new URL(url);
connection=(HttpURLConnection) url2.openConnection();
/*对和风天气提供的链接进行连接*/
connection.connect();
/*获取状态码*/
int recode = connection.getResponseCode();
BufferedReader bufferedReader = null;
String json = new String();
/*如果连接成功*/
if(recode==200) {
/*对数据进行读,并且封装到json这个字符串,并且返回json*/
InputStream inputStream = connection.getInputStream();
bufferedReader=new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
String string = null;
while ((string=bufferedReader.readLine())!=null) {
json=json+string;
ByteBuffer buffer = ByteBuffer.wrap(new String(string).getBytes("UTF-8"));
}
}
return json;
}
}
对json字符串进行解析,这里使用谷歌的gson工具包:
package com.util;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class JsonUtilImpl implements JsonUtil{
@Override
public List<String> getData(String json) {
ArrayList<String> lists = new ArrayList<String>();
JsonParser jsonParser = new JsonParser();//json解析器
JsonObject object=(JsonObject) jsonParser.parse(json); //创建JsonObject对象
JsonArray array=object.get("results").getAsJsonArray();//得到json数组
JsonObject sJsonObject = array.get(0).getAsJsonObject();//按索引得到其中具体数据
JsonObject location = sJsonObject.get("location").getAsJsonObject();
JsonObject now = sJsonObject.get("now").getAsJsonObject();
lists.add(location.get("name").getAsString());
lists.add(now.get("text").getAsString());
lists.add(now.get("temperature").getAsString());
// lists.add(now.get("humidity").getAsString());
// lists.add(now.get("wind_speed").getAsString());
return lists;
}
}
完整代码:
Controller层:
package com.web;
import java.io.IOException;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.w3c.dom.ls.LSException;
import com.google.common.collect.Lists;
import com.sun.org.apache.bcel.internal.generic.NEW;
import com.util.JsonUtil;
import com.util.JsonUtilImpl;
import com.util.NetUtil;
import com.util.NetUtilImpl;
@Controller
@RequestMapping("/wea")
public class Forest {
NetUtilImpl netUtilImpl = new NetUtilImpl();
JsonUtilImpl jsonUtilImpl = new JsonUtilImpl();
@RequestMapping("/forest")
public String forest(String city,Model model) throws IOException {
String url = "https://api.seniverse.com/v3/weather/now.json?key=mtpmwyecaphmrzwc&location="+city+"&language=zh-Hans&unit=c";
String data = netUtilImpl.getJson(url);
List<String> lists = jsonUtilImpl.getData(data);
model.addAttribute("lists",lists);
return "display";
}
@RequestMapping("/fff")
public String fff() {
return "a";
}
}
springMVC配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 注解扫描包 --> <context:component-scan base-package="com.web" /> <!-- 开启注解 --> <mvc:annotation-driven /> <!-- 静态资源(js/image)的访问 --> <mvc:resources location="/js/" mapping="/js/**"/> <!-- 定义视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
查询主页:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" > <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" rel="external nofollow" > --> </head> <body> <form action="/MyWeather/wea/forest"> city: <input type="text" name="city"> <input type="submit" value="提交"> </form> </body> </html>
展示页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" >
<title>My JSP 'display.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" rel="external nofollow" >
-->
</head>
<body>
<c:if test="${!empty lists }">
<c:forEach items="${lists}" var="lists">
<c:out value="${lists}"></c:out>
</c:forEach>
</c:if>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# SpringMVC
# api
# 天气查询
# Java 调用天气Webservice详解及实例代码
# 用Java实现全国天气预报的api接口调用示例
# java调用中国天气网api获得天气预报信息的方法
# 工具包
# 具体内容
# 配置文件
# 大家多多
# 再对
# array
# parse
# lists
# jsonParser
# getData
# object
# location
# add
# getAsString
# getAsJsonObject
# results
# getAsJsonArray
# sJsonObject
# ArrayList
# List
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
如何在七牛云存储上搭建网站并设置自定义域名?
昵图网官方站入口 昵图网素材图库官网入口
如何快速重置建站主机并恢复默认配置?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
免费视频制作网站,更新又快又好的免费电影网站?
如何利用DOS批处理实现定时关机操作详解
Laravel中的withCount方法怎么高效统计关联模型数量
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
Laravel如何为API生成Swagger或OpenAPI文档
如何快速搭建高效服务器建站系统?
微信小程序 HTTPS报错整理常见问题及解决方案
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
iOS发送验证码倒计时应用
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
如何在 React 中条件性地遍历数组并渲染元素
网站制作企业,网站的banner和导航栏是指什么?
js实现获取鼠标当前的位置
如何用狗爹虚拟主机快速搭建网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
浅谈javascript alert和confirm的美化
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Bootstrap CSS布局之列表
Laravel如何升级到最新版本?(升级指南和步骤)
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
原生JS获取元素集合的子元素宽度实例
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何用景安虚拟主机手机版绑定域名建站?
EditPlus中的正则表达式实战(5)
打造顶配客厅影院,这份100寸电视推荐名单请查收
Android中AutoCompleteTextView自动提示
三星、SK海力士获美批准:可向中国出口芯片制造设备
如何在云指建站中生成FTP站点?
如何用花生壳三步快速搭建专属网站?
如何快速生成ASP一键建站模板并优化安全性?
如何用AWS免费套餐快速搭建高效网站?
Laravel Session怎么存储_Laravel Session驱动配置详解

