SpringMVC结合天气api实现天气查询
来源:互联网 发布:国际关系学院知乎 编辑:程序博客网 时间:2024/05/17 02:56
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{@Overridepublic 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{@Overridepublic 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.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/mvchttp://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%>"> <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">--> </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%>"> <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">--> </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>
0 0
- SpringMVC结合天气api实现天气查询
- 调用天气api实现查询各城市天气
- Ruby实现Google Api天气查询
- 通过新浪天气api查询天气
- VB实现天气查询
- Android实现天气查询
- python实现查询天气
- 【转】百度api查询天气
- 根据中国气象局提供的API接口实现天气查询
- 根据中国气象局提供的API接口实现天气查询
- 天气Api
- 天气API
- 天气 API
- 天气api
- 天气API
- 天气API
- 天气api
- Nodejs 实现天气的查询
- Java去除数组中重复元素的两种实现
- hadoop的调度
- CDN和DNS的区别
- Java虚拟机方法的执行过程简述
- JavaEE学习02--HTTP协议
- SpringMVC结合天气api实现天气查询
- Spring3.1.0实现原理分析(六).实例化
- 使用jquery的ajax进行异步交互(json格式)
- SpringBoot非官方教程 | 第二十六篇: sprinboot整合elk,搭建实时日志平台
- 链表趣题---快慢指针判断链表是否有环
- Scala高阶函数
- pdir ==> 扩展dir的好用的库
- hive--Hive之数据倾斜的原因和解决方法
- shell脚本程序