时间:2021-05-19
本实例实现在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) { 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:///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>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
python结合API实现即时天气信息importurllib.requestimporturllib.parseimportjson"""利用“最美天气”抓取
本文实例讲述了java调用中国天气网api获得天气预报信息的方法。分享给大家供大家参考。具体实现方法如下://以冰城哈尔滨为例通过中国天气api调用天气信息pr
天气预报查询接口API,在这里我使用的是国家气象局天气预报接口使用较多的还有:新浪天气预报接口、百度天气预报接口、google天气接口、Yahoo天气接口等等。
python编写的语音天气预报本系统主要包括四个函数:1、获取天气数据1、输入要查询天气的城市2、利用urllib模块向中华万年历天气api接口请求天气数据3、
怎么用微信查询天气微信查天气预报指南怎么用微信查询天气微信查天气预报指南怎么用微信查询天气微信查天气预报指南怎么用微信查询天气微信查天气预报指南怎么用微信查询天