<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Natural

     

    jsp內(nèi)嵌google天氣

    做網(wǎng)站的時候有時需要個天氣預(yù)報的功能??梢岳胓oogle的api來獲取目標城市的天氣預(yù)報。。
    常用的做法是先獲取天氣的xml存到本地,再解析出當(dāng)天的日期顯示到頁面上。

    獲取天氣的bean
     1 package com.company.utils;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.BufferedWriter;
     5 import java.io.File;
     6 import java.io.FileOutputStream;
     7 import java.io.IOException;
     8 import java.io.InputStream;
     9 import java.io.InputStreamReader;
    10 import java.io.OutputStreamWriter;
    11 import java.io.Writer;
    12 import java.net.URL;
    13 
    14 import javax.xml.parsers.DocumentBuilder;
    15 import javax.xml.parsers.DocumentBuilderFactory;
    16 
    17 import org.w3c.dom.Document;
    18 import org.w3c.dom.NodeList;
    19 
    20 public class GetWeather {
    21 
    22     /**
    23      * 傳入選入的城市
    24      */
    25     public String getWeather(String cityName, String fileAddr) {
    26         // 獲取google上的天氣情況,寫入文件
    27         try {
    28             URL url = new URL("http://www.google.com/ig/api?hl=zh_cn&weather="
    29                     + cityName);
    30             InputStream inputstream = url.openStream();
    31             String s, str;
    32             BufferedReader in = new BufferedReader(new InputStreamReader(inputstream));
    33             StringBuffer stringbuffer = new StringBuffer();
    34             Writer out = new BufferedWriter(new OutputStreamWriter(
    35                     new FileOutputStream(fileAddr), "utf-8"));
    36             while ((s = in.readLine()) != null) {
    37                 stringbuffer.append(s);
    38             }
    39             str = new String(stringbuffer);
    40             out.write(str);
    41             out.close();
    42             in.close();
    43         } catch (IOException e) {
    44             e.printStackTrace();
    45         }
    46 
    47         // 讀取需要的數(shù)據(jù)
    48         File file = new File(fileAddr);
    49         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    50         String str = null;
    51         try {
    52             DocumentBuilder builder = factory.newDocumentBuilder();
    53             Document doc = builder.parse(file);
    54             NodeList nodelist1 = (NodeList) doc.getElementsByTagName("forecast_conditions");
    55             NodeList nodelist2 = nodelist1.item(0).getChildNodes();
    56             str = nodelist2.item(4).getAttributes().item(0).getNodeValue()
    57                     + ",溫度:"
    58                     + nodelist2.item(1).getAttributes().item(0).getNodeValue()
    59                     + "℃-"
    60                     + nodelist2.item(2).getAttributes().item(0).getNodeValue()
    61                     + "";
    62         } catch (Exception e) {
    63             e.printStackTrace();
    64         }
    65         return str;
    66     }
    67     
    68 }
    69 

    利用servlet來獲取目標城市的天氣。google的天氣api是用城市名的拼音。
    當(dāng)然,xml的存儲路徑可以用request獲取web應(yīng)用的根目錄,存到應(yīng)用的根目錄上去。畢竟linux系統(tǒng)是沒有C盤的……
     1 package com.company.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import java.text.DateFormat;
     6 
     7 import javax.servlet.ServletException;
     8 import javax.servlet.ServletOutputStream;
     9 import javax.servlet.http.HttpServlet;
    10 import javax.servlet.http.HttpServletRequest;
    11 import javax.servlet.http.HttpServletResponse;
    12 
    13 import com.company.utils.GetWeather;
    14 
    15 public class servletWeather extends HttpServlet {
    16 
    17 
    18     private static final String APP_TODAY_WEATHER = "app_today_weather";    //applcation中的天氣屬性名
    19     private static final String cityName = "hangzhou";                        //天氣預(yù)報對象——城市名(用拼音)
    20     private static final String cityName_ZH = "杭州";                        //天氣預(yù)報對象——城市名(中文)
    21     private static final String fileAddr = "C:/" + cityName + ".xml";        //用來存儲天氣預(yù)報的xml文件的路徑名
    22     
    23     protected void processRequest(HttpServletRequest request,
    24                                   HttpServletResponse response) throws
    25         ServletException, IOException {
    26         response.setContentType("text/html;charset=utf-8");
    27         
    28         //獲取今天的日期
    29         java.util.Date nowDate = new java.util.Date();
    30         DateFormat dateformat = DateFormat.getDateInstance();
    31         String todayDate = dateformat.format(nowDate);
    32         
    33         
    34         // 獲取application中存儲的天氣
    35         String today_weather = (String)request.getSession().getServletContext().getAttribute(APP_TODAY_WEATHER);
    36         
    37         // 如果application中存儲的天氣為空,則重新獲取一下;并存到application中
    38         if(today_weather == null || "".equals(today_weather))
    39         {    
    40             today_weather = getTodayWeather();
    41             today_weather = todayDate + " " + cityName_ZH + " " + today_weather;
    42             request.getSession().getServletContext().setAttribute(APP_TODAY_WEATHER, today_weather);
    43         }
    44         else
    45         {    // 如果application中存儲的天氣不是今天的,則重新獲取一下;并存到application中
    46             int flag = today_weather.indexOf(todayDate);
    47             if(flag < 0)
    48             {
    49                 today_weather = getTodayWeather();
    50                 today_weather = todayDate + " " + cityName_ZH + " " + today_weather;
    51                 request.getSession().getServletContext().setAttribute(APP_TODAY_WEATHER, today_weather);
    52             }
    53         }
    54 
    55         PrintWriter responsePrintWriter = response.getWriter();
    56         
    57         // 輸出天氣(字符串)到頁面
    58         responsePrintWriter.write(today_weather);
    59         
    60         //以下關(guān)閉輸入流!
    61         responsePrintWriter.flush();
    62         responsePrintWriter.close();
    63     }
    64     
    65     /**
    66      * 獲取今天的天氣
    67      * @return String
    68      */
    69     public String getTodayWeather()
    70     {
    71         GetWeather ggw = new GetWeather();
    72         return ggw.getWeather(cityName, fileAddr);
    73     }
    74 
    75     protected void doGet(HttpServletRequest request,
    76                          HttpServletResponse response) throws ServletException,
    77         IOException {
    78         processRequest(request, response);
    79     }
    80 
    81     protected void doPost(HttpServletRequest request,
    82                           HttpServletResponse response) throws ServletException,
    83         IOException {
    84         processRequest(request, response);
    85     }
    86 
    87 }
    88 



    web.xml中需要配置一下servlet
    <servlet>
        
    <servlet-name>servletWeather</servlet-name>
        
    <servlet-class>com.company.servlet.servletWeather</servlet-class>
    </servlet>
    <servlet-mapping>
        
    <servlet-name>servletWeather</servlet-name>
        
    <url-pattern>/servletWeather</url-pattern>
    </servlet-mapping>

    ok,只要在jsp頁面調(diào)用一下這個servlet就好了
    <div>
    <iframe frameborder="0"  src="servletWeather"></iframe>
    </div>



    posted on 2010-03-24 22:11 此號已被刪 閱讀(916) 評論(0)  編輯  收藏 所屬分類: J2EE

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(8)

    隨筆分類(83)

    隨筆檔案(78)

    文章檔案(2)

    相冊

    收藏夾(7)

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久精品国产亚洲av四虎| a级毛片高清免费视频就| 亚洲AV无码久久精品狠狠爱浪潮 | 亚州免费一级毛片| rh男男车车的车车免费网站| 亚洲AV无码专区在线亚| 婷婷精品国产亚洲AV麻豆不片| 国产午夜无码视频免费网站| 我们的2018在线观看免费高清| a级在线免费观看| 日韩在线视频线视频免费网站| 亚洲高清一区二区三区| 亚洲日本视频在线观看| 久久青青草原亚洲AV无码麻豆| 亚洲人妻av伦理| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲一级二级三级不卡| 久久影视国产亚洲| 亚洲黄黄黄网站在线观看| 精品国产免费观看一区| 很黄很色很刺激的视频免费| 一区二区三区在线免费看 | 亚洲AV无码专区国产乱码电影| 亚洲日韩中文在线精品第一| 国产成人免费A在线视频| 国产香蕉九九久久精品免费| 91九色老熟女免费资源站| 91精品国产免费久久国语麻豆| 午夜精品射精入后重之免费观看| 国产高清对白在线观看免费91 | 可以免费看黄视频的网站| 亚洲免费中文字幕| 国产免费不卡视频| 无人影院手机版在线观看免费| 男女免费观看在线爽爽爽视频 | 亚洲人成人无码网www电影首页| 国产亚洲精品自在久久| 亚洲Aⅴ无码专区在线观看q| 亚洲五月六月丁香激情| 亚洲欧洲国产视频| 亚洲人成综合网站7777香蕉|