2010年9月30日 星期四

ActiveX 控制項建立

本來專題要用 ActiveX,結果失敗了 不過再這邊分享一下如何建置你的第一個 ActiveX 控制項

首先我是用 Microsoft Visual Basic 6.0

檔案 > 建立新專案 > ActiveX 控制項 > 確定

在右邊的的專案欄可以看到一個 UserControl1 (UserControl.ctl)   應該就是你目前看到的頁面了

接下來再做左邊的工具欄拖選 Command Button 到你的 UserControl1

再拖選一個 TextBox (Text1)即可,一樣直覺的對 Command Button 點兩下 XD

Public Function setText(txt As String)
    Text1.Text = txt
End Function


Private Sub Command1_Click()
    MsgBox Text1.Text 
End Sub


2010年9月29日 星期三

Hibernate 教學 - 雙向一對一 (雙向主鍵)

對於上一篇所提及的一對一當中,我們是以多對一的角度,並限制多的一芳外鍵唯一

即可達到一對一的效果,接下來簡單說明一下另外一個一對一的用法

想法即是讓多對一中,"一"的這一方的主鍵成為外來鍵,這樣多的這方即可不用再有外鍵關連到一的這方

以上一篇的例子來說明,Customer & Address (多對一)

即可以將 Customer 的外鍵 address_id 取消,並以 Address 的主鍵當做外鍵即可

那在這兩個類別的寫法都不變,同樣都是有關連到彼此的雙向關係

唯一不同的救是組態檔的設定,稍微來看一下

Customer.hbm.xml

<class name="MapPOJO.Customer" table="Customer">

2010年9月26日 星期日

Hibernate 教學 - 雙向一對一 (外鍵唯一)

Hibernate 再一對一當中有兩種情況,本篇先介紹 外鍵唯一的情況

在此情況中,我們可以看成 "多對一" 中,每個多的一方限制只能關連到唯一 一個 "一方"

這樣的情況下只要讓多的一方在資料表中的外鍵設定為唯一即可!!

以下舉一個 Customer 和 Address 的雙向例子,讓彼此都可參考到彼此

2010年9月23日 星期四

Struts 教學 - ActionForm

ActionForm (org.apache.struts.action.ActionForm) 基本上是個 JavaBean

擁有與 JavaBean 相同的一些規則,譬如對於屬性都須有 get/set method

而一般你建立一個 ActionForm 時都必須繼承 org.apache.struts.action.ActionForm

並且必須在組態檔 struts-config.xml 中的 <form-beans> 標籤裡建立 <form-bean>



<form-beans >
        //以下是一個 name 為 Member 並指定 type 為你繼承 ActionForm  的類別        
        <form-bean name="Member" type="fsc.useActionForm.Member" >
</form-beans >

其中有一些方法你可以覆寫它,這部份之後再多做說明。

2010年9月18日 星期六

Struts 教學 - 流程簡介

再上一篇介紹到第一個 Struts 程式,在這篇在繼續介紹他的工作原理

還記得大致上的流程以及重點吧,以下以一張簡圖說明之

2010年9月15日 星期三

Struts 教學

Struts 目前是 Apache Jakarta 的一個開源軟體,Struts 針對了 JSP, Servlet 改進

簡單說他的目的就是要減少運用 MVC model 開發的 WEB AP 的時間

在學習上這個 Framework 比較容易,比起 Hibernate 和 Spring 來說......

針對

1. Controller,Struts 統一將所有的請求不論是GET 或 POST 一律轉送到      ActionServletActionServlet 則透過組態檔 Struts-config.xml 
   來進行各個請求的配置


2. View,Struts 同樣提供了很多的 JSP 標籤庫


3. Model,主要分為 Action Form、JavaBean or EJB、Action

2010年9月11日 星期六

Java 網路程式 - Socket

java.net.Socket 類別是 Java 拿來進行用戶端 TCP 操作的一個基礎類別

首先來看看兩個比較常見的 Socket 建構式

1. public Socket(String host, int port)
       throws UnknownHostException, IOException
    參數 host 代表一個主機的名稱,而參數 int 是代表遠端連線的通訊埠
    例如:Socket socket = new Socket("tw.yahoo.com", 80);
    以上會建立一個TCP socket 並連接到所指定的遠端主機及通訊埠


2.public Socket(InetAddress host, int port)
       throws IOException
   這邊比較不同的是 host 是一個 InetAddress 物件
   例如:
   InetAddress host = InetAddress.getByName("tw.yahoo.com");
 Socket socket = new Socket(host, 80);

2010年9月9日 星期四

Hibernate 教學 - 多對多

這篇要來介紹一下在 Hibernate 中的多對多關聯

設計模式通常是採用仲介 Table 的方式來聯繫其他兩個個體間的關係

所以通常須設計三個 Table 來實現資料庫的多對多關係

在物件和物件中,盡量避免設計出多對多的關聯

我也有點同感,的確多對多關係是有那嚜一點沒必要

但是既然物件和物件有這樣的關聯那就必須去理解了

接下來說明的是多對多關聯(雙向),雙向就是彼此都認得彼此。

2010年9月6日 星期一

Java 網路程式 - 利用 URLConnection 模擬 HTTP request

以下我是利用 JSP 先撰寫一個請求表單(form),再利用 Java 的 java.net.URLConnection

模擬 form 送出的 HTTP 請求和所代之參數,最後在取得回傳網頁的內容。

先來介紹一下 URLConnection 這個抽象類別,首先

它針對了與伺服器(HTTP伺服器)的互動提供了更多的方法和一些控制

通常都是透過 URL 的 openConnection() 取得 URLConnection,例如以下:
try{
     URL url = new URL("http://tw.yahoo.com");
     URLConnection conn = url.openConnection();
}
catch(MalformedURLException e){...}
catch(IOException e){...}

2010年9月4日 星期六

Hibernate 教學 - 雙向關聯

在前兩篇有介紹到 Hibernate 的"一對多"和"多對一"關聯

而本篇的雙向關聯顧名思義就是雙方都認得對方,拿之前的資料為例子

一對多是宿舍(Room)認得好幾位學生(Student)

多對一則是好幾個學生住在同一個房間

所以先來看看的雙向關聯中  Student 和 Room 類別的寫法

基本上 Student 的寫法跟"多對一"的 Student一樣,而 Room 的寫法則同 "一對多" 的 Room

程式如下:

Java 網路程式 - InetAddress

Java 對於主機的 IP 定址以及主機名稱的相關訊息主要就是透過  java.net.InetAddress 


特別的是  InetAddress 沒有建構子

但是可以透過以下三個類別方法來取得 InetAddress 的實例

1. getLocalHost()   他會回傳目前本地端主機的 InetAddress 實例


    範例:InetAddress myHost = InetAddress.getLocalHost();


2. getByName(String)  會回傳指向傳入參數的主機之 InetAddress 實例   


    範例:InetAddress addr = InetAddress.getByName("192.168.x.yy");

2010年9月3日 星期五

Hibernate 教學 - cascade

本篇主要是說明在組態檔中所使用的 cascade 選項

在之前的 "一對多"和"多對一"教學裡面都有出現過

那它主要的用意就是所謂的 "連鎖效應",以之前的程式作為例子

在一對多的 Room.hbm.xml 中

<set name="students" table="student" cascade="all" >....</set>


如果有以上的設定時,在 JSP 中模擬了三筆學生(Student)資料和兩筆宿舍(Room)資料

分別為 student1、student2、student3 和 room1、room2

最後在用 session.save() 將 room1 和 room2 關連到資料庫

2010年9月1日 星期三

JSP - package org.apache.taglibs.standard.tag.rt.core does not exist

今天無聊在寫個討論區當練習

結果遇到了一個莫名奇妙的問題

在 compile 的時候出錯的,狀況如下:

Compiling 1 source file to C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\useJSTL\build\generated\classes
C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\useJSTL\build\generated\src\org\apache\jsp\index_jsp.java:93: package org.apache.taglibs.standard.tag.rt.core does not exist
org.apache.taglibs.standard.tag.rt.core.OutTag _jspx_th_c_005fout_005f0 = (org.apache.taglibs.standard.tag.rt.core.OutTag) _005fjspx_005ftagPool_005fc_005fout_0026_005fvalue_005fdefault_005fnobody.get(org.apache.taglibs.standard.tag.rt.core.OutTag.class);