<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)站的時候有時需要個天氣預報的功能。可以利用google的api來獲取目標城市的天氣預報。。
    常用的做法是先獲取天氣的xml存到本地,再解析出當天的日期顯示到頁面上。

    獲取天氣的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是用城市名的拼音。
    當然,xml的存儲路徑可以用request獲取web應用的根目錄,存到應用的根目錄上去。畢竟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";                        //天氣預報對象——城市名(用拼音)
    20     private static final String cityName_ZH = "杭州";                        //天氣預報對象——城市名(中文)
    21     private static final String fileAddr = "C:/" + cityName + ".xml";        //用來存儲天氣預報的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         //以下關閉輸入流!
    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 此號已被刪 閱讀(922) 評論(0)  編輯  收藏 所屬分類: J2EE

    導航

    統(tǒng)計

    常用鏈接

    留言簿(8)

    隨筆分類(83)

    隨筆檔案(78)

    文章檔案(2)

    相冊

    收藏夾(7)

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 色偷偷尼玛图亚洲综合| 在线观看黄片免费入口不卡| 免费一级毛片不卡在线播放| 三年片在线观看免费观看高清电影| 亚洲一区二区三区成人网站| 亚洲日韩VA无码中文字幕| 久久久久国色av免费看| 亚洲最大中文字幕无码网站| 亚洲精品综合久久| 国产成人yy免费视频| 亚洲美女视频网址| 国产传媒在线观看视频免费观看 | 亚洲视频在线观看免费| 一级毛片试看60分钟免费播放| 亚洲第一精品福利| 国产成人涩涩涩视频在线观看免费 | 日韩高清免费在线观看| 免费福利电影在线观看| 亚洲AV无码之国产精品| 亚洲专区在线视频| 18成禁人视频免费网站| 无遮挡国产高潮视频免费观看| 免费国产成人午夜私人影视| 久久综合国产乱子伦精品免费| 精品成人一区二区三区免费视频| 亚洲综合视频在线观看| 亚洲精品一级无码鲁丝片| 在线观看免费人成视频色9| 91视频免费观看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 69堂人成无码免费视频果冻传媒| 一级毛片aaaaaa视频免费看| 亚洲欧洲另类春色校园网站| 亚洲av日韩av无码| 一本色道久久综合亚洲精品高清| 成人爽A毛片免费看| 久久久久久精品免费看SSS| 免费精品久久天干天干| 一级毛片不卡免费看老司机| 国产亚洲欧美日韩亚洲中文色| 免费毛片在线看不用播放器|