2008年9月17日 星期三

[指引] 用 SSMSE 連接到 sql server 做簡易查詢

備忘一下,透過 Microsoft SQL Server Management Studio Express來連接資料庫做簡單的操作。

1.如果連線主機有防火牆,記得開通。

2. 下載 SQL Server Management Studio Express SP2 並安裝

Microsoft SQL Server Management Studio Express (SSMSE) 是一套免費又簡單好用的圖形化管理工具,可以用來管理 SQL Server 2005 Express Edition 和 SQL Server 2005 Express Edition with Advanced Services。

開啟時出現的連線視窗,通常是選擇
a) Database Engine
b) ip
c) SQL Server 驗證
d) 帳號
e) 密碼

3. 成功登入後,檢視與查詢 SQL

展開 [資料庫] > [some_one_db] > [資料表] > table_list

在某 table 右鍵點[開啟資料表],可以看到該 table的資料,接著這模式下按快速鍵
ctrl+3 出現 sql 語法輸入視窗
ctrl+r 是執行 sql


[指引] 透過 JDBC 連接 MS SQL Server

以前連到 informix 資料庫都是照著前輩的語法跑,現在試著連到新平台的資料庫看看。


簡述步驟

1.下載 driver
Microsoft SQL Server 2005 JDBC Driver 1.2 載點


2.安裝 driver

解壓縮找到sqljdbc,jar,而讓程式找的到 driver有幾種方式

1)設定環境變數
ex: classpath=C:\sqljdbc.jar
2)將sqljdbc.jar 拷貝到jdk\jre\lib\ext目錄下
(或是從專案屬性設定新增 sqljdbc.jar)
第二種方法似乎比較好,不用多改 classpath。
3)若是執行 JSP程式,需將 . jar copy到 Tomcat/專案下的 lib目錄下,


3.連接語法

在 sql server 2000 中的語法是
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://ip:1433;DatabaseName=sample","user","pawd";

而 sql server 2005 則為
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://ip:1433;DatabaseName=sample","user","pawd";

這樣子就大功告成,如果是要方便往後的系統沿用,可以包成公用物件.jar,程式需要連到sql資料庫時下 connection會比較簡便。

[jsp筆記] web services

未來不同的程式溝通機制之一,有空時先研究好。


JavaWorld Web Services教學範例
從介紹到範例實做,蠻清楚的

簡述步驟:
1. JWSDP
2. Web container 偏好設定到 3-6.pdf p18
3. 接著改用 xfire 部屬 (找了一些資料稍微比較,感覺設定比較單純)
4. 建構 pojo and then copy classes 到對應目錄 (註1.)
5. 測試網址

成功的話,在 http://localhost:8080/webservices/services/communication?wsdl 會看到 XML資訊。

留意!開發環境跟發佈環境可能因為版本新舊,或是納入 .jar 的完整性,可能會遇到一些錯誤,解法是自行加入xalan.jar跟serializer.jar。
http://www.blogjava.net/XXNiuLang/archive/2007/08/15/136952.html

另外是要發佈到 Weblogic 的 qname 問題,請參考官網
http://xfire.codehaus.org/XFire+on+Weblogic+8.1

註:
1.
JWSDP: Java Web Services Developer Pack - Java Web Services相關工具的集合

Web container負責執行 JSP 和 servlet. Web container 提供一些服務(services),
諸如網頁請求分派(request dispatching), 安全控管, 同步控管(concurrency),
和生命週期控管(life-cycle management).

Web container 同時提供一些API的執行 如命名(naming), 交易(transactions),
email 等. 一些設定可以在程式部署時定義在Web container. Web container
最主要的功能是支援HTTP protocol.

From EJB的基本觀念介紹 and Wiki Page
POJO: Plain Old Java Object(其實就是一般的 Java Class)

#延伸閱讀
XFire入門

POJO Web Services using Apache Axis2

Axis vs XFire

Building a Simple Web Service (有點舊)

2008年5月26日 星期一

[筆記] jQuery-tablesorter

這是在撰寫系統時想到可以派上用場的功能,同樣的除了 include jquery.js 外,只要多寫幾行 js,配上 html tag ,就可以完成以前可能要寫數十行程式的功能..

參考的來源在此 Flexible client-side table sorting,只要對於 jQuery 有點認識了,相信瀏覽過就知道怎麼寫了。

這邊做一些重點摘要:
1. include .js 檔
2. 定義 table id (經過測試,不透過id jQuery 也可以找到 table,可能是多 table 時才有差)
3. 新增 table 欄位標籤 ,分成 THEAD與 TBODY,並且要有 th tag(這些在撰寫一般Html都是會被忽略的),如此一來 jQuery 才知道要對哪些欄位來進行操作。
4. 撰寫 js function
$(document).ready(function()
{
$("#myTable").tablesorter();
}
);
這樣子就差不多啦,也可以套用他的 theme,顯示不同的風格。在table sorter的背景圖示部份,是在 css裡指定,把 style.css 打開來看就會知道他怎麼指定個欄位與其動作樣式啦!(thead背景圖片路徑,表格的字體樣式置中等細節,都在這邊完成。)

[筆記] jQuery-Tabs

這是自己學 jQuery 所寫的第一個功能。



一開始上手有看到 ericsk 的文章,覺得看起來蠻不錯的。第二則有說明 Hello jQuery怎麼寫
function showMsg() {    // 設定 Hello 給 msg 物件
$('#msg').html(' Hello');
}

[節錄]
$ 在 jQuery 裡被定義為 jQuery 物件,
$() 則是用來取得頁面上元件(DOM element)的函式,
傳入的 ‘#msg’ 代表的即是 id 為 msg (跟 CSS 的用法一模一樣),
所以 $('#msg') 整個的意義是:
取得頁面上 id 為 msg 的元件,然後把它變成一個 jQuery 物件。

接著理解他的 DOM概念後,直接看 jQuery UI Tabs這邊,可以很清楚的看到透過指定 div 的 id 與 js code做一個對應: $('#container-1 > ul').tabs();,分頁功能就可以完成。

其中的 Start With Custom Tab,也是個很實用的功能,因為我們在有分頁的頁面,不一定跳過去都是想看到第一個分頁,可能想看到第二或其他分頁的資訊,接著我找到 getUrlParam ,透過在網址上串接變數,即可將分頁 index資訊傳到目的頁,但是需要留意
var index = $(document).getUrlParam("tab");
其中 x會被當成字元,所以得透過 eval()轉成 int!
$('#container > ul').tabs({ selected: eval(index) )});
如此一來,便大公告成。

當然,在 UI Tabs上還有很多其他切換的效果,可以選一個適當的做呈現,以Rotating UI Tabs example為例我覺得挺炫的,那麼配上我上述的 code 該怎麼改呢?只要改成以下

$('#container > ul').tabs({ selected: index , fx: { opacity: 'toggle' }});

這樣子就可以正常 work了!
ps. 原本的 .tabs('rotate', 2000) 是自動切換的秒數,用不到所以拿掉了。

備忘 switch tabs

[學習資源] jQuery

輔助 Ajax 功能效果的套件有不少,會選這個的原因之一是承接的系統,是用這個做當前端顯示,於是藉由這個機會好好摸熟吧!

其他套有機會再多接觸來比較看看。

從摸索到上手找了不少參考資料,做一下整理吧!

#教學類
jQuery Tutorials for Designers(英)
Learning jQuery(英)
Easy Ajax with jQuery(簡)
jQuery查詢手冊(簡)

#使用心得類
jQuery Selector Test
jQuery神奇的選擇器(Selector)
jQuery 教學 - 基礎篇 (上一層還有篇文章)
jQuery, I LOVE YOU
jQuery some example (一些心得筆記)


#文件查詢類
API查詢(版本非最新)
官方文件

2008年4月14日 星期一

jsp 程式透過 session 取得 hashmap 值

承接的系統,因為需要處理一個比較複雜的資料傳遞,想說試著用 hashmap 看看。日前是卡在傳完後要怎麼引用,經過多番嘗試與查詢,終於踹出來惹。

sample code:

.java
Map list = new HashMap();
ArrayList ar=new ArrayList();
ar.add(new String[]{"101","honda"});
ar.add(new String[]{"102","asuka"});

list.put("100",ar);
request.getSession().setAttribute("Slist",list);

是由 arraylist 串到 hashmap 的資料型態,構成 arraylist 又是 String[]。

.jsp
"${sessionScopeSlist['100'][0][0]}"

在呈現單筆資料,如此可以正確印出「101」
後面的 index如為 ['100'][1][1] 則是印出「asuka」

之前會卡在無法正確引用,應是 'single quotes',卻一直在試 double quote, [number]組合。

不過原本的系統的資料是有好幾組 key與 value對應,所以顯示部份是包在 foreach 裡,如下:

﹤c:forEach items="${sessionScope.Slist}" var="rowdata">
﹤li> "${rowdata}" ﹤/li>
﹤/c:forEach>


以塞入 99、100 之key 為例,會秀出
- "99=[[Ljava.lang.String;@c2ee15, [Ljava.lang.String;@19cd75a]"
- "100=[[Ljava.lang.String;@c2ee15, [Ljava.lang.String;@19cd75a]"
(物件資訊)

如要指定 string array 的值,或是取 key值寫法就是 .key 與 .value,所以改成這樣子就可以了!

"${rowdata.value[0][0]}"