一般在寫Ajax時,最直覺的使用方法就是利用Ajax Object來要求Server給與回應,
再依回應的內容解西倒底是完成動作?還是有錯誤產生,如必填欄位未填。
這裡介紹一個小技巧,在編譯式的網頁伺服器語言可能比較合適使用。
大概的原理是利用程式在執行有錯誤時Throw Exception來當做錯誤訊息,
回傳給client,而client只要接收到503的錯誤,則就可以知道動作並未完成,
反之則是完成。
範例使用prototype來使用Ajax,傳送及回應,有需要可以參考:
Ajax 使用prototype.js 1
以下是載行結果,當有填值時,則回應填寫的值,
沒填值的時候就回傳錯誤訊息。(Exception)
程式很簡單
只需要在利用command在程式目錄下執行
java -jar ReSizeImage.jar
就可以啦!
預設是縮成以寬為500px基準
如果要改變寬可以利用
java -jar ReSizeImage.jar 數字
縮完的圖會放到程式目錄的resize目錄裡
我Blog都是以500寬為基準,我想應該夠用了吧^^
程式目錄結構
ReSizeImage.jar
jmagick.dll
lib/Jmagick.jar
記得要先下載Imagick來安裝才能使用喔
按裝方法如下:
JMagick-Java open source free影像壓縮
原始碼如下:
一般Java要取得圖片的長寬size大部份的人,也是最簡單的方法,
就是使用java.awt.image.BufferedImage來取得,不過有時JVM在釋放記憶體來不及時,很容易會出Exception
這時候可以利用Jmagick來取得,它會呼叫外部的ImageMagick 的dll來取得長寬,
以下就是原始碼:
import magick.ImageInfo; import magick.MagickException; import magick.MagickImage; import java.awt.Dimension;
想法
用一個JFrame裡面放三個Tab panel分別為
時間、計時、倒數
利用三個Thread控制以上三件事
1時間
取得一個Calendar.getInstance() 得到 時、分、秒
然後在Thread的Run裡每一秒加一
2計時
”開始”利用一個Runnable從0時0分0秒一直累加
”結束”把Runnable解除掉(run直接結束)
”清除”設時、分、秒為0
3倒數
需三個TextField控制設定初始之時、分、秒
”開始”利用一個Runnable初始值一直減少到0
”結束”把Runnable解除掉(run直接結束)
會有的問題
1. 利用Sleep控制會因為電腦的處理其它判斷快慢而影響其正確性
2. 倒數之設定初始值可用除制只輸入數字及判斷輸入值之正確性來避免Exception
3. 計時及倒數,初始時並沒有顯示於畫面上
以下是程式碼及包裝好的jar檔,有興趣的可以下載看看
展畫面如下
前一篇已經介紹過如何讀取檔案了,那再來看寫入Excel應該就容易多了,
如何下載可以參考
[java]利用poi讀取Excel檔
寫入Excel的範例如下
概今大概是把Excel看成一個大的table表,先指定要在那一行那一列,
再把資料寫到這個cell裡。
public void writeExcel() { FileOutputStream fos ; POIFSFileSystem fs ; HSSFWorkbook wb ; [...]
一般來說要讀取excel檔一般的方法大概是先把Excel檔另存成cvs檔,利用","或是"\t"來做分格,
但是如果資料裡有分行\r\n或是"”"的那話,那處理起來就不方便了
這時候可以利用poi這個framework來讀取excel檔案
官網http://poi.apache.org/
POI 3.2-FINAL Released (2008-10-19)是穩定的版本,支援office 2000以下格式
POI 3.5 beta 6, and Office Open XML Support (2009-06-22)這個應該可以支援更新的office及open xml格式
載點:http://www.apache.org/dyn/closer.cgi/poi/
下載後解開有三個jar檔
poi-3.2-FINAL-20081019.jar
poi-contrib-3.2-FINAL-20081019.jar
poi-scratchpad-3.2-FINAL-20081019.jar
把這三個jar檔全都載入classpath裡
底下有一個簡單的範例有興趣可以看一下,
這是一個簡單的例子
大概的構想是,先把原始要上移的範圍A copy(clone)一份放置於無接縫的下方B
當B移到動可視範圍的0px時,瞬間把A設成在0px的地方
那向上移的方式是利用外框的style屬性overflow:hidden,然後利用scrollTop一直增加,那內容物就會被向上跑了
由右向左看物件的變化大概下如(紅色代表B,藍色代表A)
在第四個跟第五個時瞬間把A設成在0px
再來做的小實驗
利用scrollTop來移動物件位置