SpringMVC结合天气api实现天气查询
时间:2019-03-30
本文章向大家介绍SpringMVC结合天气api实现天气查询,主要包括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<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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- JavaScript闭包详解
- Spark你一定学得会(一)No.7
- iOS 滚动视图的复用问题解决方案
- 二叉排序树(BSTree)关于查找算法结合
- 使用ES6新特性开发微信小程序(5)——内建对象的变化
- 弗洛伊德(Floyd)算法
- 迪杰斯特拉(Dijkstra)算法求图中最短路径
- 微信小程序实例-摇一摇抽奖
- 普利姆(prim)算法和克鲁斯卡尔(kruskal)算法
- android Handler机制之ThreadLocal详解
- 图(Graph)的常用代码集合
- 我差不多,哦不我已经是个废人了No.4
- 将Gradle项目发布到Jcenter和Maven Central
- FLAnimatedImage -ios gif图片加载框架介绍
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 二叉树:构造一棵最大的二叉树
- Ubuntu16.04 ext4格式硬盘挂载普通用户权限控制的操作方法
- Apache Spark 2.0 在作业完成时却花费很长时间结束
- centos 6.9 升级glibc动态库的详细过程
- Ubuntu18.04(linux)安装MySQL的方法步骤
- ubuntu18.0.4安装mysql并解决ERROR 1698 (28000): Access denied for user ''root''@''localhost''
- 动态在线扩容root根分区大小的方法详解
- centos7使用rpm安装mysql5.7的教程图解
- 关于Linux命令行下的数学运算示例详解
- Apache访问日志的配置与使用
- linux启动和重启nginx方法
- 简单谈谈centos7中配置php
- Linux动态链接库的使用
- Linux下部署springboot项目的方法步骤
- Linux、CentOS下安装zip与unzip指令功能(服务器)