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);