java获取和风天气_SpringMVC结合天气api实现天气查询
本实例实现在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 getData(String json) {
ArrayList lists = new ArrayList();
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 lists = jsonUtilImpl.getData(data);
model.addAttribute("lists",lists);
return "display";
}
@RequestMapping("/fff")
public String fff() {
return "a";
}
}
springMVC配置文件:
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">
查询主页:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'index.jsp' starting page
city:
展示页面:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'display.jsp' starting page
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java获取和风天气_SpringMVC结合天气api实现天气查询相关推荐
- java获取经纬度_java调用高德地图api获取某个位置的经纬度
java调用高德地图api获取经纬度的方法,废话少说,直接上代码: import com.fasterxml.jackson.databind.JsonNode; import com.ning.ht ...
- java获取工作日 日历接口_节假日api接口之获取指定日期的节假日信息
获取指定日期的节假日信息 1.接口地址:http://api.goseek.cn/Tools/holiday?date=数字日期 2.返回数据: 3.节假日数据说明:本接口包含2017年起的中国法定节 ...
- java获取当前日期时间_Java日期时间API系列10-----Jdk8中的DateTimeFormatter
1.DateTimeFormatter final修饰,线程安全,用于打印和解析日期-时间对象的格式化程序. 创建DateTimeFormatter: DateTimeFormatter dateTi ...
- java获取前台值_SpringMVC接收前台传递过来的值的实例
之前控制器方法获得前台传来的值有三种方式: 1.通过HttpServletRequest: @RequestMapping(value="/index1") public Stri ...
- java获取oracle表空间_Oracle 表空间使用情况查询与修改
-- 查询用户表空间 select username, default_tablespace, u.temporary_tablespace from dba_users u; -- 查询表空间信息 ...
- 获取项目服务器ip,java获取服务器ip地址
java获取服务器ip地址 内容精选 换一换 如果IP经过NAT/WAF,则只能获取到NAT/WAF转化后的IP地址,无法获取到NAT/WAF前的IP地址.如果客户端为容器,只能获取到容器所在主机的I ...
- Android使用和风天气接口获取天气数据在APP中展示天气
公司APP项目需要能能够显示当前天气,网上找了很多天气数据接口,总结下来要么收费,要么用起来不友好,最后还是用了郭霖推荐的和风天气接口 这里记录一下自己的使用过程 首先注册和风天气个人开发者,认证时间 ...
- 如何一步一步地获取和风天气的天气数据
如何获取和风天气的天气数据 天气服务对比结果 注册帐号 创建密钥 获取数据 城市查询 数据解析 天气服务对比结果 目前提供天气数据的服务有很多,对比了很多家,还是觉着和风天气的比较好.个人觉着有以下几 ...
- JAVA获取天气情况
转载本文章请标明作者和出处 本文出自<Darwin的程序空间> 背景 笔者曾经想在情人节送给女朋友一个礼物,就是可以把每天的天气情况加上一些暖心的小情话每天给对象发送邮件或者是短信(收费) ...
最新文章
- c++生成nurbs曲面文件_使用曲面细分丰富原始多边形
- WinForm窗体间如何传值
- linux 静态配置多个ip,linux 配置静态IP
- Java阶段性测试--第二三大题参考代码
- Javascript实现导航锚点滚动效果实例
- paper 46 :中文latex的安装与使用
- AI基础:特征工程-文本特征处理
- 机器人“铁手”可以保护工厂工人免受伤害
- vecm模型怎么写系数_用Stata搞实证之面板模型入门
- 3分钟入门python_3分钟带你了解世界第一语言Python 入门上手也这么简单!
- MySQL 存储过程 if语句
- sql 判断分钟是偶数数据_SQL注入数据库类型判断
- SD卡驱动(详细介绍,不明白的人可以仔细看看了.有流程图)
- 决策树算法(ID3算法)
- EasyPoi word导出教程
- C++入门级编程题(基础)
- 怀想集——高中众生相
- 《牧羊少年的奇幻之旅》-保罗 柯艾略
- Linux中vmstat命令详解
- 诗人温古与洛夫的特别情缘:冥冥之中的有意安排