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

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

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

    Natural

     

    jsp內嵌google天氣

    做網站的時候有時需要個天氣預報的功能。可以利用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         // 讀取需要的數據
    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系統是沒有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頁面調用一下這個servlet就好了
    <div>
    <iframe frameborder="0"  src="servletWeather"></iframe>
    </div>



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

    導航

    統計

    常用鏈接

    留言簿(8)

    隨筆分類(83)

    隨筆檔案(78)

    文章檔案(2)

    相冊

    收藏夾(7)

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产99久久亚洲综合精品| 91麻豆最新在线人成免费观看 | 中文字幕亚洲情99在线| 韩国免费三片在线视频| www.av在线免费观看| 亚洲精品视频在线看| 毛片免费观看的视频在线| 亚洲精品自在在线观看| 你懂的网址免费国产| 国产成人亚洲精品蜜芽影院| 国产精品亚洲片在线va| 亚洲91av视频| 亚洲AV永久无码精品水牛影视| 亚洲成a人在线看天堂无码| 看全色黄大色大片免费久久| 在线永久看片免费的视频| 日韩视频在线观看免费| 国产精品1024在线永久免费| 黄色毛片视频免费| 亚洲大码熟女在线观看| 中文字幕精品三区无码亚洲 | 美女免费视频一区二区三区| 亚洲精品午夜国产va久久| 亚洲成a人片在线观看中文!!!| 亚洲免费在线视频| 亚洲国语精品自产拍在线观看| 国产亚洲欧洲精品| 亚洲AV永久精品爱情岛论坛| 亚洲国产三级在线观看| 亚洲色婷婷一区二区三区| 亚洲日韩精品一区二区三区无码 | 综合偷自拍亚洲乱中文字幕 | 天天干在线免费视频| 永久免费的网站在线观看| 国产一卡二卡3卡四卡免费| xxxxwww免费| 无人在线观看免费高清视频 | 亚洲精品久久无码| 亚洲狠狠婷婷综合久久蜜芽| 亚洲av片在线观看| 污污免费在线观看|