這兩天上了 開源程式碼的課程 知道有個網頁還不錯, 可以協助定義出 open source license 下
的開發限制 , 是否需要繼續OPEN 程式的義務 及相關的感染力
https://tldrlegal.com/
2018年2月8日 星期四
2011年11月30日 星期三
心得 WordPress 安裝外掛
WordPresss 有一個好處就是很多的外掛可以玩,很多很酷的外掛,比如說可以結合本身的相簿管理外掛(NextGEN Gallery)[1],或者是call 其他網路相簿的話掛(Filker, Picasa 等等),還有可以有外掛把他變論壇。
之前有稍微介紹 http://catonchuang.blogspot.com/2011/08/wordpress.html
這裡要說的心得是:
參考:
[1]. WordPress - NextGEN Gallery 簡單好用的相簿外掛
[2]. Wordpress FAlbum外掛 - flickr相簿與 blog完美的結合
[3]. [WP] kPicasa Gallery – 讓 WordPress 結合 Google Picasa
[4]. WordPress外掛&佈景主題安裝教學(此教學適用於WP2.9以下版本)
之前有稍微介紹 http://catonchuang.blogspot.com/2011/08/wordpress.html
這裡要說的心得是:
- 安裝 wordpress 前 先要準備好 php,Mysql , 而且要在mySql 先建一個資料庫給 wordpress.
- 我直接安裝外掛會出現FTP 上傳的訊息,若懶得再架FTP,可以利用後台安裝法[4],下載完解壓縮後複製到 ..\var\www\wordpress\wp-content\plugins\ 下,在由網路控制介面啟動
參考:
[1]. WordPress - NextGEN Gallery 簡單好用的相簿外掛
[2]. Wordpress FAlbum外掛 - flickr相簿與 blog完美的結合
[3]. [WP] kPicasa Gallery – 讓 WordPress 結合 Google Picasa
[4]. WordPress外掛&佈景主題安裝教學(此教學適用於WP2.9以下版本)
2011年8月26日 星期五
轉貼 WordPress
從網路上的資料看來 WordPress WordPress 是一套以 PHP + mySQL 為基礎的架Blog網站軟體,若想自己維護blog 資料的話倒是可以玩玩。 不過架站還要考慮到:
- Web server 安裝, 可以考慮懶人方式的 WAMP
- 固定ip 申請 , 像ISP,中華電信, 申請固定ip
- 網址申請 這些問題。
手邊沒有伺服器的話,或許可以考慮 AWS, AWS 像是一台遠端的伺服器,申請帳號後可以免費使用1 年(實際時間以AWS 網站說了算),雖然有頻寬流量的限制,不過一開始玩玩應該還是夠的。
相關的 WordPress 文章可以看看:
2011年7月26日 星期二
2011年5月31日 星期二
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)。
參考 改變滑鼠游標圖片的語法(全)
2010年12月30日 星期四
轉貼 網頁圖表產生套件
標籤:
網路,
javascript
查資料中找到幾個介紹關於網頁圖表的套件,
如下
如下
- PHP 程式 學習 筆記本, 介紹幾個漂亮的圖表生成插件
- JavaScript Chart 函式庫整理
- 1stwebdesigner 5 Top jQuery Chart Libraries for Interactive Charts
- 前端觀察,6個jQuery圖表Web應用擴展
- Google chart, 設定好要畫得資料就可以透過AJAX 傳回
- FusionCharts Free, 利用flash 畫圖的套件,還有jquery 的 plugin 版本,另外有付費的版本,不過free 版就很夠用了
2010年11月19日 星期五
轉貼 Apache 整合 Tomcat
由於想要使用 jsp + mysql 來開發, 但是 tomcat 的路徑有包含 要輸入 port 8080, 覺得很麻煩, 而且想要同時使用 php 和 jsp, 因為 phpmyadmin 還蠻好用的說
過慮了一些資料 節錄下面兩個方法
1. 轉貼自 javaworld 的文章 , http://www.javaworld.com.tw/jute/post/view?bid=9&id=87446&sty=1&tpg=1&age=-1 , javaer 大大的做法
他提到
其實tomcat 5.x版及apache2.x版之後,都已經內建connector了
根據文件的說法,是ready to use的
步驟如下:
1.安裝tomcat及apache
2.打開{apache安裝目錄}\conf\httpd.conf,依底下兩個步驟做設定。完成後,重新啟動apache,使設定生效。
1)在設定載入模組的地方:
2)在設定模組的地方加入
不過這樣設定的話, 感覺上放在 apache htdoc下的資料夾就無法開啟,因為都指向tomcat 的 wwwroot. 這樣一來 phpmyadmin就開不起來 還要額外設定就要再研究了
2. 建中先生的文章 http://blog.yam.com/u9323523/article/25178591
使用Apache Tomcat Connector來結合兩者, 可以到這裡下載
這裡版本是用
mod_jk-1.2.28-httpd-2.2.X.so,
並將檔案存放至/etc/httpd/conf/modules
在 /etc/httpd/conf.d 目錄下增加 mod_jk.conf 設定檔
------------------------------------------
[mod_jk.conf 檔案內容]
<IfModule mod_jk.c>
JkWorkersFile /etc/httpd/conf.d/workers.properties
JkLogFile /var/log/jk.log
JkLogLevel info
JkMount /jsp/* jsp
</IfModule>
-------------------------------------------
在 /etc/httpd/conf.d 目錄下增加 workers.properties 設定檔
[workers.properties 檔案內容]
worker.list=jsp
worker.jsp.type=ajp13
worker.jsp.host=localhost
worker.jsp.port=8009
-----------------------------------------
修改Tomcat 設定檔
[server.xml]
確認 8009 Connector port 是否有開啟
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
關閉8080 server port,將這幾行mark
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-------------------------------
完成~!
過慮了一些資料 節錄下面兩個方法
1. 轉貼自 javaworld 的文章 , http://www.javaworld.com.tw/jute/post/view?bid=9&id=87446&sty=1&tpg=1&age=-1 , javaer 大大的做法
他提到
其實tomcat 5.x版及apache2.x版之後,都已經內建connector了
根據文件的說法,是ready to use的
步驟如下:
1.安裝tomcat及apache
2.打開{apache安裝目錄}\conf\httpd.conf,依底下兩個步驟做設定。完成後,重新啟動apache,使設定生效。
1)在設定載入模組的地方:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2)在設定模組的地方加入
ProxyRequests On
ProxyVia On
Order deny,allow
Deny from all
Allow from localhost
ProxyPass /img !
ProxyPass / http://localhost:8080/
ProxyPass /first http://localhost:8080/another
ProxyPassReverse / http://localhost:8080/
不過這樣設定的話, 感覺上放在 apache htdoc下的資料夾就無法開啟,因為都指向tomcat 的 wwwroot. 這樣一來 phpmyadmin就開不起來 還要額外設定就要再研究了
2. 建中先生的文章 http://blog.yam.com/u9323523/article/25178591
使用Apache Tomcat Connector來結合兩者, 可以到這裡下載
這裡版本是用
mod_jk-1.2.28-httpd-2.2.X.so,
並將檔案存放至/etc/httpd/conf/modules
在 /etc/httpd/conf.d 目錄下增加 mod_jk.conf 設定檔
------------------------------------------
[mod_jk.conf 檔案內容]
<IfModule mod_jk.c>
JkWorkersFile /etc/httpd/conf.d/workers.properties
JkLogFile /var/log/jk.log
JkLogLevel info
JkMount /jsp/* jsp
</IfModule>
-------------------------------------------
在 /etc/httpd/conf.d 目錄下增加 workers.properties 設定檔
[workers.properties 檔案內容]
worker.list=jsp
worker.jsp.type=ajp13
worker.jsp.host=localhost
worker.jsp.port=8009
-----------------------------------------
修改Tomcat 設定檔
[server.xml]
確認 8009 Connector port 是否有開啟
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
關閉8080 server port,將這幾行mark
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-------------------------------
完成~!
2010年4月16日 星期五
轉貼 HTML 保留字
以下轉錄 html 的 保留字
可以查詢 關鍵字 :Escaping Special Characters
相關網站
http://www.degraeve.com/reference/specialcharacters.php
http://code.google.com/intl/zh-TW/apis/gadgets/docs/fundamentals.html#Escape
不過一些像 > < && 等符號 可以用 CDATA 區段的方式 來告訴編譯器這不是標籤的
可參考
http://www.w3schools.com/xml/xml_cdata.asp
http://msdn.microsoft.com/zh-tw/library/ms256076%28VS.80%29.aspx
可以查詢 關鍵字 :Escaping Special Characters
相關網站
http://www.degraeve.com/reference/specialcharacters.php
http://code.google.com/intl/zh-TW/apis/gadgets/docs/fundamentals.html#Escape
不過一些像 > < && 等符號 可以用 CDATA 區段的方式 來告訴編譯器這不是標籤的
可參考
http://www.w3schools.com/xml/xml_cdata.asp
http://msdn.microsoft.com/zh-tw/library/ms256076%28VS.80%29.aspx
2009年11月11日 星期三
轉貼java sock 範例
透過 socket 可以讓兩台電腦達成連線並且互相傳訊訊息
在範例中 利用java建立
有兩個部份
server 端
client 端
client 透過連線可以和server 端溝通
直接轉貼範例
永遠的UNIX- Java做一個最簡單的Socket通話程序
在範例中 利用java建立
有兩個部份
server 端
client 端
client 透過連線可以和server 端溝通
直接轉貼範例
永遠的UNIX- Java做一個最簡單的Socket通話程序
2009年10月22日 星期四
Silver light 開發環境設定
標籤:
知識,
網路,
Sliver Light
2009年10月19日 星期一
Google Calendar的小工具 介紹
標籤:
知識,
網路,
google api
除了 google calendar api 外, google 在 calendar 還提供了一些相關的應用
包含
Calendar Gadgets
這裡還可細分兩種
Event Gadgets
在google calendar 上加入小圖示,點入小圖示之後可以開啟一個小視窗可以包含 圖片、網頁或 gadget
如圖
建立的方法有三種,這裡都有詳細的介紹
使用 Calendar Event Gadget Creator
使用 the iCalendar Format
使用 the Google Calendar data API
Sidebar Gadgets
開發 Gadget 在 google calendar 的右邊, 範例的功能有 世界時鐘、顯示年曆等等
說明網站在這邊, 不過開發 Gadget 又要另一種的方式了
CalDAV
CalDAV 是一種行事曆同步協定,可以使其他行事曆 (如 Apple iCal、Mozilla Sunbird) ) 交換Google calendar 的資料。
Publishing Tools
透過這個小工具可以在網頁上鑲入google calendar
在網頁上(如blogger)中新增calendar 事件
包含
Calendar Gadgets
這裡還可細分兩種
Event Gadgets
在google calendar 上加入小圖示,點入小圖示之後可以開啟一個小視窗可以包含 圖片、網頁或 gadget
如圖
建立的方法有三種,這裡都有詳細的介紹
使用 Calendar Event Gadget Creator
使用 the iCalendar Format
使用 the Google Calendar data API
Sidebar Gadgets
開發 Gadget 在 google calendar 的右邊, 範例的功能有 世界時鐘、顯示年曆等等
說明網站在這邊, 不過開發 Gadget 又要另一種的方式了
CalDAV
CalDAV 是一種行事曆同步協定,可以使其他行事曆 (如 Apple iCal、Mozilla Sunbird) ) 交換Google calendar 的資料。
Publishing Tools
透過這個小工具可以在網頁上鑲入google calendar
在網頁上(如blogger)中新增calendar 事件
2009年10月9日 星期五
在html 中 克服 ie 無法讀取 svg 的 library (SVG Web)
標籤:
知識,
網路,
javascript
SVG 是XML的一種可以用來顯示圖片,詳細的說明可以參照以下的網址
但可惜的是目前 IE 系列的瀏覽器還沒支援顯示SVG 的功能,
所幸可以透過安裝library 來解決這個問題
安裝及使用library 的步驟很簡單
1. 下載 library
2. 注意必須架在 HTTP server 上才可以正常執行,如IIS、 apache,不能直接用檔案開啟
3. 引用library (複製 library 的 src 資料夾 )
4. 引用 SVG 在 ie 和 非 ie 有不同用法, 其中 sample.svg 只是檔名
用法1
用法 2
但可惜的是目前 IE 系列的瀏覽器還沒支援顯示SVG 的功能,
所幸可以透過安裝library 來解決這個問題
安裝及使用library 的步驟很簡單
1. 下載 library
2. 注意必須架在 HTTP server 上才可以正常執行,如IIS、 apache,不能直接用檔案開啟
3. 引用library (複製 library 的 src 資料夾 )
- <script src="src/svg.js" data-path="src" ></script>
- src/svg.js js 檔相對於首頁的位置
- src 相關的library
4. 引用 SVG 在 ie 和 非 ie 有不同用法, 其中 sample.svg 只是檔名
用法1
<!--[if IE]>
<object src="sample.svg"classid="image/svg+xml"
width="200" height="200"
id="mySVGObject">
<![endif]-->
<!--[if !IE]>-->
<object data="sample.svg" type="image/svg+xml"
width="200" height="200"
id="mySVGObject">
<!--<![endif]-->
</object>用法 2
<object type="image/svg+xml" data="sample.svg" width="200" height="200">
<param name="mySVG" value="sample.svg"/>
2009年10月7日 星期三
2009年6月2日 星期二
GAE&JDO by XMLHttpRequest()
標籤:
網路,
Eclipse,
HTTP request,
java,
javascript
基本上 和
範例網站 http://6.latest.catontest.appspot.com/
例子這裡就簡單的介紹三個功能
js 檔案格式如下
//-----------------------------------------------------
// 宣告 set httprequest by explorer
//-----------------------------------------------------
XmlsReq = false;
if(window.XMLHttpRequest) {
XmlsReq = new XMLHttpRequest();
} else if(window.ActiveXObject) {
try {
XmlsReq = new ActiveXObject("Msxml2.XMLHTTP"); // ie
} catch(e) {
XmlsReq = new ActiveXObject("Microsoft.XMLHTTP"); // ie
}
}
//----------------------------------------------------------
// 新增 PostHttpRequestAdd()
//----------------------------------------------------------
function PostHttpRequestAdd() {
// servlet name 記得要在web.xml 設定
var uri='add';
// 連接成功傳回訊息
XmlsReq.onreadystatechange=function() {
if (XmlsReq.readyState==4 && XmlsReq.status == 200) {
alert(XmlsReq.responseText);
}
}
// 取得輸入檔案的值
var aUserName = document.getElementById('aUserName').value;
var aUserPassword =document.getElementById('aUserPassword').value;
var aUserContent= document.getElementById('aUserContent').value;
// 設定要傳到server的值
var param = "aUserName="+aUserName+"&aUserPassword="+aUserPassword+"&aUserContent="+aUserContent;
// 以POST 方式 像server 傳送資料
XmlsReq.open("POST",uri,true);
XmlsReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
XmlsReq.send(param);
}
2. 查詢所有
//----------------------------------------------------------
// 新增 GetHttpRequestShow()
//----------------------------------------------------------
function GetHttpRequestShow() {
// servlet name 記得要在web.xml 設定
var uri='show';
// 連接成功傳回訊息
XmlsReq.onreadystatechange=function() {
if (XmlsReq.readyState==4 && XmlsReq.status == 200) {
alert(XmlsReq.responseText);
}
}
// 以GET方式 像server 傳送資料
XmlsReq.open("GET",uri,true);
XmlsReq.send(null);
}
//----------------------------------------------------------
// 新增 PostHttpRequest()
//----------------------------------------------------------
function PostHttpRequest() {
// servlet name 記得要在web.xml 設定
var uri='update';
// 連接成功傳回訊息
XmlsReq.onreadystatechange=function() {
if (XmlsReq.readyState==4 && XmlsReq.status == 200) {
alert(XmlsReq.responseText);
}
}
// 取得輸入檔案的值
var uUserName = document.getElementById('uUserName').value;
var uUserPassword =document.getElementById('uUserPassword').value;
var uUserContent= document.getElementById('uUserContent').value;
// 設定要傳到server的值
var param = "uUserName="+uUserName+"&uUserPassword="+uUserPassword+"&uUserContent="+uUserContent;
// 以POST 方式 像server 傳送資料
XmlsReq.open("POST",uri,true);
XmlsReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
XmlsReq.send(param);
}
三個功能的 server 端 檔案如下
//-----------------------------------------------------
// add.java
//-----------------------------------------------------
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jdo.cookie.example.PMF;
import jdo.cookie.example.User;
@SuppressWarnings("serial")
public class add extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
/// get content
String UserName = req.getParameter("aUserName");
String UserPassword = req.getParameter("aUserPassword");
String UserContent = req.getParameter("aUserContent");
System.out.println(UserName);
/// Set new user
User newUesr=new User(UserName,UserPassword,UserContent );
/// Get Persistence Manager
PersistenceManager pm = PMF.get().getPersistenceManager();
/// check the name is already exist
String query = "select from " + User.class.getName() + " where Name == "+ "'"+UserName+"'";
List UserAll = (List) pm.newQuery(query).execute();
/// declare the output function,
/// out.println the html code in the client browser
PrintWriter out = resp.getWriter();
if(UserAll.isEmpty()){
out.println(newUesr.GetName());
/// add user in data store
pm.makePersistent(newUesr);
out.println("Success");
}
else
{
out.println("already exist");
}
}
}
//-----------------------------------------------------
// show.java
//-----------------------------------------------------
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jdo.cookie.example.PMF;
import jdo.cookie.example.User;
@SuppressWarnings("serial")
public class show extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
/// set response type
resp.setContentType("text/plain");
/// get Persistence Manager
PersistenceManager pm = PMF.get().getPersistenceManager();
/// set query String
String query = "select from " + User.class.getName() ;
/// start query
List userAll = (List) pm.newQuery(query).execute();
/// declare the output function,
/// out.println the html code in the client browser
PrintWriter out = resp.getWriter();
/// check the data is exist or not
if(userAll.isEmpty()){
out.println("no data exist");
}
else
{
/// print all data name and content
for (User g : userAll) {
resp.getWriter().println(g.GetName()+" :"+" Content ="+g.GetContent());
}
}
}
}
//-----------------------------------------------------
// update .java
//-----------------------------------------------------
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.jdo.Transaction;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jdo.cookie.example.PMF;
import jdo.cookie.example.User;
public class update extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
/// set response type
resp.setContentType("text/html;charset=UTF-8");
req.setCharacterEncoding("UTF-8");
/// get content
String UserName = req.getParameter("uUserName");
String UserPassword = req.getParameter("uUserPassword");
String UserContent = req.getParameter("uUserContent");
System.out.println(UserName);
/// get Persistence Manager
PersistenceManager pm = PMF.get().getPersistenceManager();
/// check the name is already exist
String query = "select from " + User.class.getName() + " where Name == "+ "'"+UserName+"'";
List UserAll = (List) pm.newQuery(query).execute();
/// declare the output function,
/// out.println the html code in the client browser
PrintWriter out = resp.getWriter();
/// declare Transaction when you update
Transaction tx = pm.currentTransaction();
try {
tx.begin();
/// get the User you want update
Iterator iter=UserAll.iterator();
User my_obj=(User)iter.next();
if (my_obj.GetPassword().equals(UserPassword))
{
my_obj.SetContent(UserContent); // Change the value
out.println("OK");
/// must be commit or will be do nothing
tx.commit();
}
}
catch (Exception e)
{
/// when no this data
if (tx.isActive())
{
out.println("sorry retry again");
tx.rollback();
}
}
}
}
Google App Engines Datastore with JDO ( GAE&JDO 1/7)) 這篇類似
不過在index.html 方面改用 XMLHttpRequest 呼叫server範例網站 http://6.latest.catontest.appspot.com/
例子這裡就簡單的介紹三個功能
- 新增
- 查詢所有
- 和更新三個功能
js 檔案格式如下
//-----------------------------------------------------
// 宣告 set httprequest by explorer
//-----------------------------------------------------
XmlsReq = false;
if(window.XMLHttpRequest) {
XmlsReq = new XMLHttpRequest();
} else if(window.ActiveXObject) {
try {
XmlsReq = new ActiveXObject("Msxml2.XMLHTTP"); // ie
} catch(e) {
XmlsReq = new ActiveXObject("Microsoft.XMLHTTP"); // ie
}
}
//----------------------------------------------------------
// 新增 PostHttpRequestAdd()
//----------------------------------------------------------
function PostHttpRequestAdd() {
// servlet name 記得要在web.xml 設定
var uri='add';
// 連接成功傳回訊息
XmlsReq.onreadystatechange=function() {
if (XmlsReq.readyState==4 && XmlsReq.status == 200) {
alert(XmlsReq.responseText);
}
}
// 取得輸入檔案的值
var aUserName = document.getElementById('aUserName').value;
var aUserPassword =document.getElementById('aUserPassword').value;
var aUserContent= document.getElementById('aUserContent').value;
// 設定要傳到server的值
var param = "aUserName="+aUserName+"&aUserPassword="+aUserPassword+"&aUserContent="+aUserContent;
// 以POST 方式 像server 傳送資料
XmlsReq.open("POST",uri,true);
XmlsReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
XmlsReq.send(param);
}
2. 查詢所有
//----------------------------------------------------------
// 新增 GetHttpRequestShow()
//----------------------------------------------------------
function GetHttpRequestShow() {
// servlet name 記得要在web.xml 設定
var uri='show';
// 連接成功傳回訊息
XmlsReq.onreadystatechange=function() {
if (XmlsReq.readyState==4 && XmlsReq.status == 200) {
alert(XmlsReq.responseText);
}
}
// 以GET方式 像server 傳送資料
XmlsReq.open("GET",uri,true);
XmlsReq.send(null);
}
//----------------------------------------------------------
// 新增 PostHttpRequest()
//----------------------------------------------------------
function PostHttpRequest() {
// servlet name 記得要在web.xml 設定
var uri='update';
// 連接成功傳回訊息
XmlsReq.onreadystatechange=function() {
if (XmlsReq.readyState==4 && XmlsReq.status == 200) {
alert(XmlsReq.responseText);
}
}
// 取得輸入檔案的值
var uUserName = document.getElementById('uUserName').value;
var uUserPassword =document.getElementById('uUserPassword').value;
var uUserContent= document.getElementById('uUserContent').value;
// 設定要傳到server的值
var param = "uUserName="+uUserName+"&uUserPassword="+uUserPassword+"&uUserContent="+uUserContent;
// 以POST 方式 像server 傳送資料
XmlsReq.open("POST",uri,true);
XmlsReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
XmlsReq.send(param);
}
三個功能的 server 端 檔案如下
//-----------------------------------------------------
// add.java
//-----------------------------------------------------
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jdo.cookie.example.PMF;
import jdo.cookie.example.User;
@SuppressWarnings("serial")
public class add extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
/// get content
String UserName = req.getParameter("aUserName");
String UserPassword = req.getParameter("aUserPassword");
String UserContent = req.getParameter("aUserContent");
System.out.println(UserName);
/// Set new user
User newUesr=new User(UserName,UserPassword,UserContent );
/// Get Persistence Manager
PersistenceManager pm = PMF.get().getPersistenceManager();
/// check the name is already exist
String query = "select from " + User.class.getName() + " where Name == "+ "'"+UserName+"'";
List
/// declare the output function,
/// out.println the html code in the client browser
PrintWriter out = resp.getWriter();
if(UserAll.isEmpty()){
out.println(newUesr.GetName());
/// add user in data store
pm.makePersistent(newUesr);
out.println("Success");
}
else
{
out.println("already exist");
}
}
}
//-----------------------------------------------------
// show.java
//-----------------------------------------------------
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jdo.cookie.example.PMF;
import jdo.cookie.example.User;
@SuppressWarnings("serial")
public class show extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
/// set response type
resp.setContentType("text/plain");
/// get Persistence Manager
PersistenceManager pm = PMF.get().getPersistenceManager();
/// set query String
String query = "select from " + User.class.getName() ;
/// start query
List
/// declare the output function,
/// out.println the html code in the client browser
PrintWriter out = resp.getWriter();
/// check the data is exist or not
if(userAll.isEmpty()){
out.println("no data exist");
}
else
{
/// print all data name and content
for (User g : userAll) {
resp.getWriter().println(g.GetName()+" :"+" Content ="+g.GetContent());
}
}
}
}
//-----------------------------------------------------
// update .java
//-----------------------------------------------------
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.jdo.Transaction;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jdo.cookie.example.PMF;
import jdo.cookie.example.User;
public class update extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
/// set response type
resp.setContentType("text/html;charset=UTF-8");
req.setCharacterEncoding("UTF-8");
/// get content
String UserName = req.getParameter("uUserName");
String UserPassword = req.getParameter("uUserPassword");
String UserContent = req.getParameter("uUserContent");
System.out.println(UserName);
/// get Persistence Manager
PersistenceManager pm = PMF.get().getPersistenceManager();
/// check the name is already exist
String query = "select from " + User.class.getName() + " where Name == "+ "'"+UserName+"'";
List
/// declare the output function,
/// out.println the html code in the client browser
PrintWriter out = resp.getWriter();
/// declare Transaction when you update
Transaction tx = pm.currentTransaction();
try {
tx.begin();
/// get the User you want update
Iterator iter=UserAll.iterator();
User my_obj=(User)iter.next();
if (my_obj.GetPassword().equals(UserPassword))
{
my_obj.SetContent(UserContent); // Change the value
out.println("OK");
/// must be commit or will be do nothing
tx.commit();
}
}
catch (Exception e)
{
/// when no this data
if (tx.isActive())
{
out.println("sorry retry again");
tx.rollback();
}
}
}
}
2009年5月25日 星期一
顯示螢幕解析度和瀏覽器類別
標籤:
網路,
javascript
//顯示瀏覽器類別
navigator.appName
如
Firefox 顯示 Netscape
IE 顯示 Microsoft Internet Explorer
//顯示螢幕解析度
screen.width 寬度
screen.height 高度
可以用以下例子放入javascript中
alert("瀏覽器是:"+navigator.appName );
alert("螢幕解析度是:"+screen.width+" * "+screen.height );
navigator.appName
如
Firefox 顯示 Netscape
IE 顯示 Microsoft Internet Explorer
//顯示螢幕解析度
screen.width 寬度
screen.height 高度
可以用以下例子放入javascript中
alert("瀏覽器是:"+navigator.appName );
alert("螢幕解析度是:"+screen.width+" * "+screen.height );
2009年5月20日 星期三
Login Data with JDO ( GAE&JDO 7/7)
標籤:
網路,
Eclipse,
google api,
HTTP request,
java,
javascript
Modify 3 point
getCookie(c_name) 取得cookie
deleteCookie(c_name) 刪除 cookie
initial() 起始設定
logoutfunction() 登出函式
並加入以下的html
------------------------------------------------------------------------
< tr>
< td colspan="2" style="font-weight:bold;">Login function:< /td>
< /tr>
< tr>
< td>
< form id=frmLogin method=get action="login" >
< span id="tobeVisible" >Enter your message ulen!
請輸入姓名:
< input type=text name="lUserName">
請輸入Password:
< input type=text name="lUserPassword">
< input type=submit value="確定">
< /span>
< /form>
< input id=logout type=submit value="logout" onclick='logoutfunction()'>
< /td>
< /tr>
--------------------------------------------------------------------------------------
修改完的 index.html
撰寫 java serverlet function login.java
設定servlet的位置名稱
----------------------------------這裡是XML--------------------------
< servlet>
<servlet-name>login</servlet-name>
<servlet-class>jdo.cookie.example. login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> login</servlet-name>
<url-pattern>/ login</url-pattern>
</servlet-mapping>
----------------------------------這裡是XML--------------------------
- 1 Modify index html
getCookie(c_name) 取得cookie
deleteCookie(c_name) 刪除 cookie
initial() 起始設定
logoutfunction() 登出函式
並加入以下的html
------------------------------------------------------------------------
< tr>
< td colspan="2" style="font-weight:bold;">Login function:< /td>
< /tr>
< tr>
< td>
< form id=frmLogin method=get action="login" >
< span id="tobeVisible" >Enter your message ulen!
請輸入姓名:
< input type=text name="lUserName">
請輸入Password:
< input type=text name="lUserPassword">
< input type=submit value="確定">
< /span>
< /form>
< input id=logout type=submit value="logout" onclick='logoutfunction()'>
< /td>
< /tr>
--------------------------------------------------------------------------------------
修改完的 index.html
- 2 Add servlet function
撰寫 java serverlet function login.java
- 3 Web.xml
設定servlet的位置名稱
<servlet-name>login
<servlet-class>jdo.cookie.example.
</servlet>
<servlet-mapping>
<servlet-name>
<url-pattern>/
</servlet-mapping>
2009年5月19日 星期二
Delete Data with JDO ( GAE&JDO 6/7)
標籤:
網路,
Eclipse,
google api,
HTTP request,
java,
javascript
Modify 3 point
delete function:
刪除資料 有此姓名才可以刪除!!!!!
<form method="post" action="delete">
請輸入姓名:
<input name="dUserName" type="text">
<input value="確定" type="submit">
</form>
注意 form method=post action="delete"
撰寫 java serverlet function delete.java
設定servlet的位置名稱
----------------------------------這裡是XML--------------------------
< servlet>
<servlet-name> delete</servlet-name>
<servlet-class>jdo.cookie.example. delete</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> delete</servlet-name>
<url-pattern>/ delete</url-pattern>
</servlet-mapping>
----------------------------------這裡是XML--------------------------
- 1 Modify index html
delete function:
刪除資料 有此姓名才可以刪除!!!!!
<form method="post" action="delete">
請輸入姓名:
<input name="dUserName" type="text">
<input value="確定" type="submit">
</form>
注意 form method=post action="delete"
- 2 Add servlet function
撰寫 java serverlet function delete.java
- 3 Web.xml
設定servlet的位置名稱
<servlet-name>
<servlet-class>jdo.cookie.example.
</servlet>
<servlet-mapping>
<servlet-name>
<url-pattern>/
</servlet-mapping>
Update Data with JDO ( GAE&JDO 5/7)
標籤:
網路,
Eclipse,
google api,
HTTP request,
java,
javascript
Modify 3 point
Update function:
姓名密碼相符才可以修改!!!!!
<form method="post" action="update">
請輸入姓名:
<input name="uUserName" type="text">
請輸入Password:
<input name="uUserPassword" type="text">
請輸入要修改的 Content:
<input name="uUserContent" type="text">
<input value="確定" type="submit">
</form>
注意 form method=post action="update"
撰寫 java serverlet function update.java
這裡是用了 PersistenceManager 的方法 update
這裡有說明的文章 http://blog.csdn.net/wafd/archive/2004/01/02/17757.aspx
設定servlet的位置名稱
----------------------------------這裡是XML--------------------------
< servlet>
<servlet-name>update</servlet-name>
<servlet-class>jdo.cookie.example. update</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> update</servlet-name>
<url-pattern>/ update</url-pattern>
</servlet-mapping>
----------------------------------這裡是XML--------------------------
- 1 Modify index html
Update function:
姓名密碼相符才可以修改!!!!!
<form method="post" action="update">
請輸入姓名:
<input name="uUserName" type="text">
請輸入Password:
<input name="uUserPassword" type="text">
請輸入要修改的 Content:
<input name="uUserContent" type="text">
<input value="確定" type="submit">
</form>
注意 form method=post action="update"
- 2 Add servlet function
撰寫 java serverlet function update.java
這裡是用了 PersistenceManager 的方法 update
這裡有說明的文章 http://blog.csdn.net/wafd/archive/2004/01/02/17757.aspx
- 3 Web.xml
設定servlet的位置名稱
< servlet>
<servlet-name>update</servlet-name>
<servlet-class>jdo.cookie.example.
</servlet>
<servlet-mapping>
<servlet-name>
<url-pattern>/
</servlet-mapping>
List Data with JDO ( GAE&JDO 4/7)
標籤:
網路,
Eclipse,
google api,
HTTP request,
java,
javascript
Modify 3 point
Show all user:
<form method="get" action="show">
<input value="顯示所有使用者" type="submit">
</form>
注意 form method=get action="show"
撰寫 java serverlet function show.java
設定servlet的位置名稱
----------------------------------這裡是XML--------------------------
< servlet>
<servlet-name>show</servlet-name>
<servlet-class>jdo.cookie.example.show</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>show</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>
----------------------------------這裡是XML--------------------------
- 1 Modify index html
Show all user:
<form method="get" action="show">
<input value="顯示所有使用者" type="submit">
</form>
注意 form method=get action="show"
- 2 Add servlet function
撰寫 java serverlet function show.java
- 3 Web.xml
設定servlet的位置名稱
<servlet-name>show</servlet-name>
<servlet-class>jdo.cookie.example.show</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>show</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>
----------------------------------這裡是XML--------------------------
訂閱:
文章 (Atom)