SpringMVC结合天气api实现天气查询

作者:Coder_py 时间:2021-06-01 16:56:41 

本实例实现在jsp页面实现查询全国城市天气预报的功能,供大家参考,具体内容如下

实例目录:

SpringMVC结合天气api实现天气查询

实现效果:

SpringMVC结合天气api实现天气查询

SpringMVC结合天气api实现天气查询

具体思路:

从和风天气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,天气查询
0
投稿

猜你喜欢

  • Maven Plugin的@Mojo和@Execute的具体使用

    2021-12-19 05:23:17
  • JAVA 内存溢出案例汇总

    2022-02-16 08:49:22
  • java selenium 操作浏览器实例

    2023-04-13 17:57:13
  • Java的super关键字与instanceof运算符使用方法

    2022-02-18 10:02:22
  • Spring Boot利用@Async如何实现异步调用:自定义线程池

    2021-11-09 17:32:11
  • Maven学习----Maven安装与环境变量配置教程

    2021-12-04 08:20:25
  • 关于Java的ArrayList数组自动扩容机制

    2021-11-26 13:12:46
  • 解决spring.thymeleaf.cache=false不起作用的问题

    2022-03-25 04:27:15
  • Java动态线程池插件dynamic-tp集成zookeeper

    2023-11-25 03:41:38
  • 详解Android数据存储—使用SQLite数据库

    2023-07-31 03:14:08
  • Android Camera+SurfaceView自动聚焦防止变形拉伸

    2023-06-18 06:35:54
  • SpringCloud重试机制配置详解

    2023-05-13 23:48:46
  • Java并发编程之同步容器

    2023-03-10 16:34:29
  • 通过FeignClient调用微服务提供的分页对象IPage报错的解决

    2022-01-27 20:19:23
  • C#使用Monitor类实现线程同步

    2021-07-20 03:01:14
  • 教你如何使用Java输出各种形状

    2023-08-21 00:46:55
  • 浅析Java中Apache BeanUtils和Spring BeanUtils的用法

    2021-07-10 21:29:15
  • java中String字符串删除空格的七种方式

    2023-03-11 05:54:24
  • 详解基于MVC的数据查询模块进行模糊查询

    2022-02-13 19:26:49
  • Spring Security OAuth 自定义授权方式实现手机验证码

    2021-10-03 23:30:27
  • asp之家 软件编程 m.aspxhome.com