要在 jQuery 影藏標籤的話,
可以使用 show(), hide() 的方式
不過若是在 div 標籤先設定 Style= " visibility:hidden;", 的屬性的話, 就會無法控制
因為 jQuery 還不能控制 DOM 裡面的標籤
不過或許可以試試$() .css 來設定
2011年1月28日 星期五
2011年1月27日 星期四
2011年1月26日 星期三
struts 2 首頁
標籤:
struts2
如題,想要在首頁就使用 structs 2 定義的頁面 是有點問題,會顯示不出來, 網路上搜尋 struts2 index.action 就有很多結果
目前還沒全部看懂,限介紹一個簡單的方法,就是先建一個 假的首頁 ,在利用 location.href 的方式轉到真正的首頁
入以下的 index.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>index</title>
<SCRIPT>
function Init(){
location.href= "index.action ";
}
</SCRIPT>
</head>
<body onload="Init()">
</body>
</html>
為何要那樣麻煩,在我的應用是為了要支援多國語言的首頁.
目前還沒全部看懂,限介紹一個簡單的方法,就是先建一個 假的首頁 ,在利用 location.href 的方式轉到真正的首頁
入以下的 index.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>index</title>
<SCRIPT>
function Init(){
location.href= "index.action ";
}
</SCRIPT>
</head>
<body onload="Init()">
</body>
</html>
為何要那樣麻煩,在我的應用是為了要支援多國語言的首頁.
2011年1月24日 星期一
struts2 多國語言依據瀏覽器語言選項
主要參考了這篇文章 struct2 國際化
我是在GAE 上執行的 所以相關設定可以參考 轉貼 struts2 整合 Google Appengine
的設定,主要包含 下載 struts2 , web.xml 設定 , structs.xml ,ServletContextListener 和 freemarker.core.TextBlock 等步驟
要使用 struct 的多國語言,不只一種方式,這裡我介紹的是在 struts.xml 中的宣告
在 struts.xml 加入 以下的敘述
value 就是自訂的名稱, 因為 struts2 資源檔的定義格式就是 自訂的名稱_語系簡碼_國家簡碼.properties 例如: applicationResource_zh_tw.properties
修改後的 struts.xml 如下
若在eclipse 下開發的話還可以下載 “PropEdit”(http://propedit.sourceforge.jp/eclipse/updates/)這個外掛
來源參考 Struts 2.0系列教程(四)Struts2国际化(i18n)您的应用程序
簡單的jsp 如下
properties 檔的設定文字必須要先轉成 unicode 的形式字串
在java中 可以呼叫native2ascii 來協助達成, native2ascii -編碼 來源檔案 目標檔案
例如
native2ascii -encoding utf8 applicationResource_zh_tw.properties applicationResource_zh_tw2.properties
加入 properties 檔 在 src 資料夾下面 如圖
就可以開始執行
結果如範例網站 ,這裡支援 俄文(ru)、繁體中文(zh_tw)、簡體中文(zh_CN)、英文(en)
http://11.latest.catontest.appspot.com/HelloWorld.jsp
要改預覽語言的方式:
IE:
工具-> 網際網路選項-> 語言
Firefox
工具->選項->內容-> 語言->選擇
我是在GAE 上執行的 所以相關設定可以參考 轉貼 struts2 整合 Google Appengine
的設定,主要包含 下載 struts2 , web.xml 設定 , structs.xml ,ServletContextListener 和 freemarker.core.TextBlock 等步驟
要使用 struct 的多國語言,不只一種方式,這裡我介紹的是在 struts.xml 中的宣告
在 struts.xml 加入 以下的敘述
<constant name="struts.custom.i18n.resources" value="applicationResource" />
value 就是自訂的名稱, 因為 struts2 資源檔的定義格式就是 自訂的名稱_語系簡碼_國家簡碼.properties 例如: applicationResource_zh_tw.properties
修改後的 struts.xml 如下
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="applicationResource" />
</struts>
若在eclipse 下開發的話還可以下載 “PropEdit”(http://propedit.sourceforge.jp/eclipse/updates/)這個外掛
來源參考 Struts 2.0系列教程(四)Struts2国际化(i18n)您的应用程序
簡單的jsp 如下
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>
<body>
<h1>Struts 2 i18n tag example</h1>
<s:text name="hello"/>
</body>
</html>
properties 檔的設定文字必須要先轉成 unicode 的形式字串
在java中 可以呼叫native2ascii 來協助達成, native2ascii -編碼 來源檔案 目標檔案
例如
native2ascii -encoding utf8 applicationResource_zh_tw.properties applicationResource_zh_tw2.properties
加入 properties 檔 在 src 資料夾下面 如圖
就可以開始執行
結果如範例網站 ,這裡支援 俄文(ru)、繁體中文(zh_tw)、簡體中文(zh_CN)、英文(en)
http://11.latest.catontest.appspot.com/HelloWorld.jsp
要改預覽語言的方式:
IE:
工具-> 網際網路選項-> 語言
Firefox
工具->選項->內容-> 語言->選擇
2011年1月21日 星期五
轉貼 struts2 與 servlet 共用
標籤:
struts2
在 web.xml 下加入以下設定, 否則 servlet 也會被 struts2 濾掉
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
轉貼 struts2 整合 Google Appengine
標籤:
struts2
簡單的說 struts2 是第二代基於Model-View-Controller (MVC)模型的web應用框架。 詳細說明就請查閱 WIKI
步驟有點繁複,我這裡只整理簡單的步驟,詳細可以看參考文件
1. 下載 struts2 ,這裡我是下載 struts-2.2.1.1-all
2. 載入以下的 jar 檔, javassist-3.7.ga.jar 這個檔要到apps\struts2-blank-2.2.1\WEB-INF\lib 這裡找
2-1. commons-fileupload-1.2.1.jar
2-2. commons-io-1.3.2.jar
2-3. commons-logging-1.0.4.jar
2-4. freemarker-2.3.16.jar
2-5. ognl-3.0.jar
2-6. struts2-core-2.2.1.jar
2-7. xwork-2.2.1.jar
2-8. javassist-3.7.ga.jar
2. 建立 java
3. 配置 web.xml
4. 建立要使用的jsp檔案
如 login.jsp 和 home.jsp
login.jsp:
home.jsp:
5. 在SRC 目錄下建立 structs.xml 大小寫不能變, 設定檔案的對應
如
6. 建立 ServletContextListener 避免錯誤
如下 命名為 OgnlListener , implements ServletContextListener
7. 將對應的 檔案加入 web.xml宣告中
8. 建立 Package: freemarker.core, 並在下面建立 一個 TextBlock 的檔案 如下
https://docs.google.com/leaf?id=0B_JOf_Tyv_f6MzcwNDY5NTAtZTkwYS00OWUzLWJjN2ItNDhmNDNmYTg0NzQ4&hl=en
9. 完成執行GAE
參考文章:
Creating Struts2 application on Google App Engine (GAE)
在GAE中使用struts2框架
步驟有點繁複,我這裡只整理簡單的步驟,詳細可以看參考文件
1. 下載 struts2 ,這裡我是下載 struts-2.2.1.1-all
2. 載入以下的 jar 檔, javassist-3.7.ga.jar 這個檔要到apps\struts2-blank-2.2.1\WEB-INF\lib 這裡找
2-1. commons-fileupload-1.2.1.jar
2-2. commons-io-1.3.2.jar
2-3. commons-logging-1.0.4.jar
2-4. freemarker-2.3.16.jar
2-5. ognl-3.0.jar
2-6. struts2-core-2.2.1.jar
2-7. xwork-2.2.1.jar
2-8. javassist-3.7.ga.jar
2. 建立 java
package com
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport{
private String userName;
private String password;
public void setUserName(String name){
userName = name;
}
public void setPassword(String pwd){
password = pwd;
}
public String execute(){
if(userName.equals("gae") && password.equals("struts2")){
addActionMessage("Welcome," + userName);
return SUCCESS;
}
addActionError("Username and Password Combination doesnot match.");
return INPUT;
}
}
3. 配置 web.xml
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
4. 建立要使用的jsp檔案
如 login.jsp 和 home.jsp
login.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Please login</title>
</head>
<body>
<s:actionerror/>
<s:form action="home" method="post">
<s:textfield name="username" label="UserName"></s:textfield>
<s:textfield name="password" label="Password"></s:textfield>
<s:submit name="login" value="login"></s:submit>
</s:form>
</body>
</html>
home.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Home Page</title>
</head>
<body>
<s:actionmessage />
</body>
</html>
5. 在SRC 目錄下建立 structs.xml 大小寫不能變, 設定檔案的對應
如
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"></include>
<package name="member" namespace="/member" extends="struts-default">
<action name="login">
<result>/login.jsp</result>
</action>
<action name="home" method="login" class="com.login.LoginAction">
<result>/home.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
6. 建立 ServletContextListener 避免錯誤
如下 命名為 OgnlListener , implements ServletContextListener
package com;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import ognl.OgnlRuntime;
public class OgnlListener implements ServletContextListener,
HttpSessionListener, HttpSessionAttributeListener {
public OgnlListener() {
}
public void contextInitialized(ServletContextEvent sce) {
OgnlRuntime.setSecurityManager(null);
}
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
public void sessionCreated(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
}
public void sessionDestroyed(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
}
public void attributeAdded(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
}
7. 將對應的 檔案加入 web.xml宣告中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"></include>
<package name="member" namespace="/member" extends="struts-default">
<action name="login">
<listener>
<listener-class>com.OgnlListener</listener-class>
</listener>
<result>/login.jsp</result>
</action>
</package>
</struts>
8. 建立 Package: freemarker.core, 並在下面建立 一個 TextBlock 的檔案 如下
https://docs.google.com/leaf?id=0B_JOf_Tyv_f6MzcwNDY5NTAtZTkwYS00OWUzLWJjN2ItNDhmNDNmYTg0NzQ4&hl=en
9. 完成執行GAE
參考文章:
Creating Struts2 application on Google App Engine (GAE)
在GAE中使用struts2框架
2011年1月19日 星期三
範例 javascript 日期增減
標籤:
javascript
以下是簡單的範例碼: 利用先換算成豪秒,再做加減
此外也有看過setDate()方式來作增減的,不過跨月份的話用setDate()方式就會出錯
此外也有看過setDate()方式來作增減的,不過跨月份的話用setDate()方式就會出錯
/**
* AddDate
*
* add the date
*
* param: day [in] : the day , Date() format.
* param: dadd [in] : the day diffefent , integer format.
*
*
* return: date
*
*
*
*/
function AddDate(date,dadd){
date = date.valueOf();
date = date + dadd * 24 * 60 * 60 * 1000;
date = new Date(date);
return date;
}
2011年1月17日 星期一
範例 javascript 利用JQuery日期格式轉換
標籤:
javascript
想要吧 javascript 日期轉成想要的格式,如 yy-mm-dd 的樣子其實是蠻麻煩的。
不過利用 jquery 倒是簡單多了
利用以下的程式馬,就可以把日期轉換成 yyyy/mm/dd 的格式 如 2011/01/01
詳細可以參考JQuery的說明
這裡 yy 就是顯示4位數
不過利用 jquery 倒是簡單多了
利用以下的程式馬,就可以把日期轉換成 yyyy/mm/dd 的格式 如 2011/01/01
$.datepicker.formatDate('yy/mm/dd', new Date())
詳細可以參考JQuery的說明
這裡 yy 就是顯示4位數
範例 javascript 取得本週 日期
標籤:
javascript
以下範例簡單的利用傳日一個日期物件,然後取得本週的開始日期到結束日期
AddDate 參考 範例 javascript 日期增減
AddDate 參考 範例 javascript 日期增減
function GetWeek(day)
{
var weekperiod = new Array(2);
/// 宣告起始日期
var dayweekFirst = AddDate(day,-day.getDay());
/// 宣告結束日期
var dayweekLast = AddDate(dayweekFirst 6);
//alert("today: " +day);
//alert("dayweekFirst: " +dayweekFirst);
//alert("dayweekLast: " +dayweekLast);
weekperiod[0] = dayweekFirst;
weekperiod[1] = dayweekLast;
return weekperiod;
}
2011年1月10日 星期一
轉貼 改變滑鼠鼠標
語法如下
不過實際測試怪怪的改用span tag 包起來才可以
不瞭解的可以看一下 span和div的不同
補充 可以利用 mouseover 的方式變更
在 標籤內加入 下面者段就可以, 範例是換成 pointer(手形)
onMouseOver="this.style.cursor='pointer';"
----------------------------------------
內建游標一覽
* hand:手形 (firefox 可能支援有問題)
* crosshair:精確定位「十」字形
* text:文本「I」形
* wait:等待,「沙漏」形
* default:預設箭頭
* help:幫助,帶尾箭頭
* e-resize:箭頭朝右方
* ne-resize:箭頭朝右上方
* n-resize:箭頭朝上方
* nw-resize:箭頭朝左上方
* w-resize:箭頭朝左方
* sw-resize:箭頭朝左下方
* s-resize:箭頭朝下方
* se-resize:箭頭朝右下方
* auto:自動,鼠標按照默認的狀態根據頁面上的元素自行改變樣式
* no-drop:出現帶有「禁止標示」的手形游標。原本是用來表示被拖曳的對象不容許在游標目前的位置被放下。
* not-allowed:出現「禁止標示」的游標。原本是用來表示請求的作業不容許被執行。
* pointer:與 hand 相同。
* progress:出現帶有沙漏標示的箭頭游標。原本是用來表示一件工作正在被執行中。
* row-resize:出現上下兩個箭頭,中間由橫線分隔開的游標。原本是用來表示專案或標題欄可以被垂直改變尺寸。
* all-scroll:出現上下左右四個箭頭,中間有一個圓點的游標。原本是用來表示頁面可以向上下左右任何方向捲動。
* col-resize:出現左右兩個箭頭,中間由豎線分隔開的游標。原本是用來表示專案或標題欄可以被水平改變尺寸。
* vertical-text:出現表示可編輯之垂直純文字的游標(通常是大寫字母 I 旋轉 90 度的形狀)。
* move:出現十字箭頭游標。原本是用來表示對象可被移動。
* url('游標圖檔所在的 URL'):以自選的圖檔做為游標外觀。需使用絕對或相對的 URL,來指定游標圖檔所在的位址(圖檔的副檔名 須為 .cur 或 .ani)。
參考 改變滑鼠游標圖片的語法(全)
<a style="cursor: url('游標網址')" href="連結網址">連結名稱</a>
不過實際測試怪怪的改用span tag 包起來才可以
不瞭解的可以看一下 span和div的不同
補充 可以利用 mouseover 的方式變更
在 標籤內加入 下面者段就可以, 範例是換成 pointer(手形)
onMouseOver="this.style.cursor='pointer';"
----------------------------------------
內建游標一覽
* hand:手形 (firefox 可能支援有問題)
* crosshair:精確定位「十」字形
* text:文本「I」形
* wait:等待,「沙漏」形
* default:預設箭頭
* help:幫助,帶尾箭頭
* e-resize:箭頭朝右方
* ne-resize:箭頭朝右上方
* n-resize:箭頭朝上方
* nw-resize:箭頭朝左上方
* w-resize:箭頭朝左方
* sw-resize:箭頭朝左下方
* s-resize:箭頭朝下方
* se-resize:箭頭朝右下方
* auto:自動,鼠標按照默認的狀態根據頁面上的元素自行改變樣式
* no-drop:出現帶有「禁止標示」的手形游標。原本是用來表示被拖曳的對象不容許在游標目前的位置被放下。
* not-allowed:出現「禁止標示」的游標。原本是用來表示請求的作業不容許被執行。
* pointer:與 hand 相同。
* progress:出現帶有沙漏標示的箭頭游標。原本是用來表示一件工作正在被執行中。
* row-resize:出現上下兩個箭頭,中間由橫線分隔開的游標。原本是用來表示專案或標題欄可以被垂直改變尺寸。
* all-scroll:出現上下左右四個箭頭,中間有一個圓點的游標。原本是用來表示頁面可以向上下左右任何方向捲動。
* col-resize:出現左右兩個箭頭,中間由豎線分隔開的游標。原本是用來表示專案或標題欄可以被水平改變尺寸。
* vertical-text:出現表示可編輯之垂直純文字的游標(通常是大寫字母 I 旋轉 90 度的形狀)。
* move:出現十字箭頭游標。原本是用來表示對象可被移動。
* url('游標圖檔所在的 URL'):以自選的圖檔做為游標外觀。需使用絕對或相對的 URL,來指定游標圖檔所在的位址(圖檔的副檔名 須為 .cur 或 .ani)。
參考 改變滑鼠游標圖片的語法(全)
2011年1月9日 星期日
wireshark 監聽封包心得
標籤:
其他
wireshark 是一個封包監控的軟體,這點就不用多說了,在 wiki 中有詳細的介紹
若要下載的話 可以參考下面的地方
阿榮福利社
官方下載
在這裡補充一下監控的心得, 最近想利用 wireshark 來監聽 機器發出的封包,(該機器沒有作業系統...)但是 wireshark 只能監聽電腦上某個特定的網路卡,
是有聽過用 hub 連結方式,讓 所有封包都能在本機網卡中間聽到,不過現在市面上找得的幾乎都是 switch 等級以上的產品.... 想不到簡單功能的東西反而找不到
再問前輩之後知道要用兩張網卡在同一台機器的方式就可以解決。
簡單的說 是 一張網卡連外,另一張網卡分享給要間聽得機器,
假設我是利用無線網路上網,所以就把無線網路設定網際網路連線共用,如下圖
接者 將機器連到有線網路的網路孔, 機器就可以利用我的無限網路上網。
wiresark 就可以利用 有線網路卡 監控 到進出 機器的封包了
若要下載的話 可以參考下面的地方
阿榮福利社
官方下載
在這裡補充一下監控的心得, 最近想利用 wireshark 來監聽 機器發出的封包,(該機器沒有作業系統...)但是 wireshark 只能監聽電腦上某個特定的網路卡,
是有聽過用 hub 連結方式,讓 所有封包都能在本機網卡中間聽到,不過現在市面上找得的幾乎都是 switch 等級以上的產品.... 想不到簡單功能的東西反而找不到
再問前輩之後知道要用兩張網卡在同一台機器的方式就可以解決。
簡單的說 是 一張網卡連外,另一張網卡分享給要間聽得機器,
假設我是利用無線網路上網,所以就把無線網路設定網際網路連線共用,如下圖
接者 將機器連到有線網路的網路孔, 機器就可以利用我的無限網路上網。
wiresark 就可以利用 有線網路卡 監控 到進出 機器的封包了
Weather api
標籤:
其他,
google api,
WebServer
網路上提供許多查詢天氣的API ,不過在此就介紹使用過的 weather api,
----------------------------------------
Yahoo weather API:
其實是透過發出 HTTP GET 的請求 取得天氣的RSS 型態的資料
語法已知的有兩種:
1. Get by WOEID
location 是要對應 yahoo 的 WOEID
官方說明
查WOEID 可以參考這篇 Jackbin 的懶人筆記-在桌面上顯示數位時鐘與即時天氣 - MoonyDesk
2. Get by US zip code or Location ID
官方說明
取得PID 的方法
a. 先到查詢天氣的網頁 http://weather.yahoo.com/ 輸入要查的程式名稱取得天氣預報,在點右邊的RSS
b. 上方url 終究可以看到 ID 了
不過要取得 WOEID 或 ZIP code 就算是額外的工作了
------------------------
Google's Secret Weather API
就我所知道的方法,也是有兩種方式
a. 利用 城市名稱 查詢
範例 code
參考
http://blog.programmableweb.com/2010/02/08/googles-secret-weather-api/
b. 利用 經緯度查詢
例
參考
邦邦的部落格
取得經緯度的方式可以參考
http://universimmedia.pagesperso-orange.fr/geo/loc.htm
- Yahoo weather API
- Google's Secret Weather API
----------------------------------------
Yahoo weather API:
其實是透過發出 HTTP GET 的請求 取得天氣的RSS 型態的資料
語法已知的有兩種:
1. Get by WOEID
http://weather.yahooapis.com/forecastrss?w=location
location 是要對應 yahoo 的 WOEID
官方說明
查WOEID 可以參考這篇 Jackbin 的懶人筆記-在桌面上顯示數位時鐘與即時天氣 - MoonyDesk
2. Get by US zip code or Location ID
http://weather.yahooapis.com/forecastrss?p=location
官方說明
取得PID 的方法
a. 先到查詢天氣的網頁 http://weather.yahoo.com/ 輸入要查的程式名稱取得天氣預報,在點右邊的RSS
b. 上方url 終究可以看到 ID 了
不過要取得 WOEID 或 ZIP code 就算是額外的工作了
------------------------
Google's Secret Weather API
就我所知道的方法,也是有兩種方式
a. 利用 城市名稱 查詢
範例 code
http://www.google.com/ig/api?weather=Mountain+View
參考
http://blog.programmableweb.com/2010/02/08/googles-secret-weather-api/
b. 利用 經緯度查詢
var strURL="http://www.google.com/ig/api?hl=zh-cn&weather=,,,"+point.y*1000000+","+point.x*1000000;
例
http://www.google.com/ig/api?hl=zh-tw&weather=,,,25012085,121465701
參考
邦邦的部落格
取得經緯度的方式可以參考
http://universimmedia.pagesperso-orange.fr/geo/loc.htm
2011年1月4日 星期二
Java Http post with SSLSocket
標籤:
HTTP request,
java
使用 SSL 的 程式碼如下
import java.net.*;
import java.security.Security;
import java.io.*;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
try {
String xmldata = "xx";
//Create socket
String hostname = "xxx.appspot.com";
int port = 443;
InetAddress addr = InetAddress.getByName(hostname);
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sock = (SSLSocket) factory.createSocket(hostname, port);
//Send header
String path = "/test";
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream(),"UTF-8"));
// You can use "UTF8" for compatibility with the Microsoft virtual machine.
wr.write("POST " + path + " HTTP/1.0\r\n");
wr.write("Host: deltapowermeter.appspot.com\r\n");
wr.write("Connection: close\r\n");
wr.write("Content-Type: application/xml\r\n");
wr.write("Content-Length: " + xmldata.length() + "\r\n");
wr.write("\r\n");
//Send data
wr.write(xmldata);
wr.flush();
// Response
BufferedReader rd = new BufferedReader(new InputStreamReader(sock.getInputStream()));
String line;
while((line = rd.readLine()) != null)
System.out.println(line);
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.toString());
}
Java Http post with Socket
標籤:
HTTP request,
java
程式碼如下
import java.net.*;
import java.io.*;
try {
String xmldata ="QQ" ;
//Create socket
String hostname = "xxx.appspot.com";
int port = 80;
InetAddress addr = InetAddress.getByName(hostname);
Socket sock = new Socket(addr, port);
//Send header
String path = "/powermeter/event";
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream(),"UTF-8"));
// You can use "UTF8" for compatibility with the Microsoft virtual machine.
wr.write("POST " + path + " HTTP/1.0\r\n");
wr.write("Host: deltapowermeter.appspot.com\r\n");
wr.write("Connection: close\r\n");
wr.write("Content-Type: application/xml\r\n");
wr.write("Content-Length: " + xmldata.length() + "\r\n");
wr.write("\r\n");
//Send data
wr.write(xmldata);
wr.flush();
// Response
BufferedReader rd = new BufferedReader(new InputStreamReader(sock.getInputStream()));
String line;
while((line = rd.readLine()) != null)
System.out.println(line);
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.toString());
System.out.println("ASS");
}
訂閱:
文章 (Atom)