為了方便取得SessionFactory實例,可撰寫一個test.com.util .HibernateUtil類別:

package test.com.util;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static SessionFactory sessionFactory;

    static {

        try {

            sessionFactory = new Configuration().configure().buildSessionFactory();

        } catch (Throwable ex) {

            throw new ExceptionInInitializerError(ex);

        }

    }

    public static SessionFactory getSessionFactory() {

        return sessionFactory;

    }

    public static void shutdown() {

        getSessionFactory().close();

    }

}


接下來撰寫一個測試的程式test.com.web.TestAction.java:

package test.com.web;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionForward;

import test.com.delegate.TestDelegate;

import test.com.model.UserModel;

public class TestAction extends org.apache.struts.action.Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form,

            HttpServletRequest request, HttpServletResponse response)

            throws Exception {

        /*

         *  declare variable

         */

        String forward = "testjsp";

        String name = null;

        String age = null;

        UserModel usermod = null;

        /*

         *  get value

         */

         name = request.getParameter("name");

         age = request.getParameter("age");

         usermod = new UserModel();

        /*

         *  call delegate

         */

         usermod.setName(name);

         usermod.setAge(age);

         TestDelegate.creatUser(usermod);

        /*

         *  set value

         */

         request.setAttribute("result", usermod);

        /*

         *  forward

         */

        return mapping.findForward(forward);

    }

}


test.com.delegate.TestDelegate.java:

楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

開始Hibernate:

  • 對於該Table建立一個對應的test.com.hbm.User.hbm.xml:

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <hibernate-mapping>

        <class name="test.com.model.UserModel" table="user">

            <id column="id" name="id" type="java.lang.Integer">

                <generator class="native"/>

            </id>

            <property column="name" name="name" type="java.lang.String"/>

            <property column="age" name="age" type="java.lang.String"/>

        </class>

    </hibernate-mapping>

     

  • 對該test.com.hbm.User.hbm.xml,建立一個test.com.model.UserModel:

    package test.com.model;

    import java.io.Serializable;

    public class UserModel implements Serializable {

        //ID

        private Integer id;

        //姓名

        private String name;

        //年齡

        private String age;

        public String getAge() {

            return age;

        }

        public void setAge(String age) {

            this.age = age;

        }

        public Integer getId() {

            return id;

        }

        public void setId(Integer id) {

            this.id = id;

        }

        public String getName() {

            return name;

        }

        public void setName(String name) {

            this.name = name;

        }               }

  • 接著必須在Hibernate配置文件hibernate.cfg.xml中指明映射文件的位置,如下加入映射文件位置:

    <hibernate-configuration>

      <session-factory>

        ……………………….

        <!-- 以下設置物件與資料庫表格映射文件 -->

        <mapping resource="test/com/hbm/User.hbm.xml"/>

      </session-factory>

    </hibernate-configuration>


  • 楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    clip_image002
    說明:

        Hibernate 是「物件/關係對應」ORM(Object/Relational Mapping)的解決方案,簡單說就是物件對應關係,將JAVA中物件映射至關聯式資料庫中的表格, Hibernate 提供了這個過程中自動對應轉換的方案。
        Hibernate其底層對資料庫還是需依賴JDBC,所以您必須先取得JDBC驅動程式,以下將以MySQL為示範(MS-SQL留給各位去練習啦,其實換湯不換藥,原則上只要把JAR檔換掉URL改掉就行啦):

    配置Hibernate:    可以到Hibernate官方網站(http://www.hibernate.org/)下載最新的Hibernate.jar,另有官方說明手冊可以參考,不過現在偷懶一下,我要在NetBeans IDE6.5中直接增加 Frameworks 的方式加上Hibernate。

  • 請至Project的Properties中 Add a Frameworks,選擇Hibernate 3.2.5:

     

  • 增加後你可以在Project的Libraries中看到Hibernate所需的JAR檔:

     

    如果要手動加入Hibernate加入上列JAR檔,也可有相同效果。 

  • 接著設置基本的Hibernate配置文件,可以使用XML或Properties檔案,NetBeans內建設定為xml檔,置放於Classpath路徑之中,配置如下:

    …………………………………

    <hibernate-configuration>

      <session-factory>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- JDBC驅動程式 -->

        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

        <!-- JDBC URL -->

        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>

        <!-- 資料庫使用者 -->

        <property name="hibernate.connection.username">root</property>

        <!-- 資料庫密碼 -->

        <property name="hibernate.connection.password">root</property>

        <!-- 以下設置物件與資料庫表格映射文件 -->

      </session-factory></hibernate-configuration>

    以上請於MySQL中建立一 [test] DB,至於資料庫的使用者與密碼請自行修改。 

  • 請先在MySQL中建立一”test”table:

    DROP TABLE IF EXISTS `test`.`new table`;

    CREATE TABLE  `test`.`new table` (

      `id` int(10) unsigned NOT NULL auto_increment,

      `name` varchar(45) NOT NULL,

      `age` varchar(45) NOT NULL,

      PRIMARY KEY  (`id`)                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

     

  • 楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    • 下載proxool,下載網址:http://proxool.sourceforge.net/
    • 解壓縮後將其中 proxool-0.9.1.jar、proxool-cglib.jar 放入專案中WEB-INF/libs(依各專案設定)
    • 於 hibernate.cfg.xml 同一層目錄下新增一XML檔 proxool.cfg.xml,檔案內容如下:
    <?xml version="1.0" encoding="utf-8"?>
    <!-- the proxool configuration can be embedded within your own application's.
    Anything outside the "proxool" tag is ignored. -->
    <something-else-entirely>
        <proxool>

    楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    f_184907_1
    17歲林冠廷 琴揚俄羅斯
    2009/03/18
    【聯合報╱記者周美惠/台北報導】
    17歲的林冠廷(右)參加俄國鋼琴家Vladimir Viardo為青少年所舉辦的鋼琴大賽,榮獲第二名。 圖/林福進提供
    曾贏得遠東銀行與本報主辦「送你一桶金」的得主、年僅17歲的林冠廷,最近在烏克蘭參加享譽國際的俄國鋼琴家Vladimir Viardo為青少年所舉辦的鋼琴大賽,獲第二名及600美元獎金。

    林冠廷4歲開始學琴,從小在音樂班名列前茅的他,年紀輕輕即立志走專業鋼琴家這條路。3年前,他考上俄國莫斯科Gnesin音樂院,留俄期間表現優異,常獲學校表揚及獎學金獎勵,並曾多次受邀在莫斯科音樂廳演出。

    此次獲獎,主辦此獎的鋼琴家Vladimir Viardo特別讚賞林冠廷把柴可夫斯基帶俄羅斯風的詼諧曲彈奏得「非常具俄國風味」。Viardo出身烏克蘭,雖已入籍美國,仍心繫故里,在烏克蘭舉辦以他為名的國際鋼琴大賽,參賽選手一半是烏克蘭好手,另一半來自世界各國。

    今年約有50名青少年分兩組參加這項大賽。林冠廷是他參加組別最小的選手,同組其他選手平均大他兩歲以上。這回勝出的第一名較林冠廷年長4歲,她實力超強,讓林冠廷覺得雖敗猶榮。

    林冠廷的媽媽一路陪伴他在異鄉求學、參賽,此次獲獎,她最感念的是「一桶金」。去年夏天,林冠廷返台,因媽媽覺得錢景周報舉辦的「送你一桶金」活動很有趣,就與他和妹妹一起試著猜金額,結果林冠廷猜的金額最接近答案,喜獲9萬餘元大獎。

    他們返回生活費奇高無比的莫斯科後,沒料到房東竟將房租調漲為兩倍(約10萬台幣),幸好有「一桶金」為他們解了燃眉之急,讓林媽媽直呼這是「上天派來幫助我們的天使」。

    楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    目錄:
    一、術語session
    二、HTTP協議與狀態保持
    三、理解cookie機制
    四、理解session機制

    楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    Apache SSL

    一、預備檔案

             1. Apache_2.2.4-win32-openssl-0.9.8d.msi  <*重要的是注意1.2.openssl版本要相符*>

             2. OpenSSL-0.9.8d_win32.rar

             3. openssl.cnf

    二、安裝Openssl、產生CA檔案:

            1. OpenSSL-0.9.8d_win32.rar解壓縮,以解壓縮至 C:\Openssl為例,底下應該會有\bin, \include, \lib, \ssl 四個資料夾和一個openssl.cnf 檔。

            2. 另外抓取openssl.cnf(一、3.) 覆蓋掉原本的。

            3. 用文字編輯器打開覆蓋後的openssl.cnf,修改以下部份:*要注意"\\",不可以少打成"\"

                dir = ssl

                certs = $dir\\certs

                crl_dir = $dir\\crl

                database = $dir\\index.txt

                new_certs_dir = $dir

                certificate = $dir\\cacert.pem

                serial = $dir\\serial

                crl = $dir\\crl.pem

                private_key = $dir\\privkey.pem

                RANDFILE = $dir\\privkey.rnd

            4. x509extensions 開頭的這一行註解掉。(前面加上#字號)

            5. C:\Openssl\ 開啟新資料夾 ssl,並在其中新增index.txt serial 兩個檔案,serial用文字編輯器打開,輸入01index.txt保持空白

            6. \bin底下的檔案複製一份到 C:\Openssl\底下。(這是為了避免之後路徑的困擾)

            7. 進入命令列模式,依序執行以下動作:

                7-1: openssl genrsa -des3 -out ssl/ca.key 1024

                7-2: openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr

                7-3: openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt

                7-4: openssl genrsa -out ssl/server.key 1024

                7-5: openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr openssl ca -config

                7-6: openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt

                *在上列6個步驟裡面會要求輸入密碼、國碼(04)、國家、地區、公司名稱、單位、網站位址、Email

                * 7-6步驟,會有兩個問題[y/n],都要選y.不然產生的server.crt會出錯,變成空檔案(Empty)

                *如果有error多半是路徑錯誤,稍微檢查一下指令做修正即可。

            8. 7產生的檔案(整個ssl資料夾)複製到C:/Appserv/Apache2.2/conf/ 底下。

    三、修改httpd-ssl.conf

            1. 打開C:\AppServ\Apache2.2\conf\extra\httpd-ssl.conf 檔案,修改部份如下:

                DocumentRoot 網頁根目錄,比照httpd.conf下的DocumentRoot

                ServerName Server位址:443

                ServerAdmin Email

                ErrorLog logs/error_log

                TransferLog logs/access_log

                ---

                SSLCertificateFile conf/ssl/server.crt    <------crt存放目錄

                SSLCertificateKeyFile conf/ssl/server.key   <------key存放目錄

                SSLCertificateChainFile conf/ssl/ca.crt   <------中繼憑證存放目錄

                ---

    SSLMutex default註解掉,改為SSLMutex none

                ---

    將所有沒有用雙引號包起來的絕對路徑加上雙引號,例如:

                SSLSessionCache "shmcb:C:/AppServ/Apache2.2/logs/ssl_scache(512000)"

                SSLCertificateFile "C:/AppServ/Apache2.2/conf/ssl/server.crt"

                ---

    < VirtualHost >的標注部份改為

                NameVirtualHost *:443

                < VirtualHost *:443 >

    五、修改httpd.conf

            1. 打開C:\AppServ\Apache2.2\conf\httpd.conf檔案,修改部份如下:

    LoadModule ssl_module modules/mod_ssl.so #註解拿掉

    Include conf/extra/httpd-ssl.conf #註解拿掉

    六、重新啟動Apache

    如果啟動過程中沒有出現錯誤,可以連https://localhost 測試看看,應該就會出現要求憑證的認證畫面了。

            *如果Apache啟動失敗,請檢查error.log或到Windows 事件檢視器確認是哪邊設定錯誤。

    楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    24小時制日期顯示:
    public class Datetime {
        public static void main(String args[]){
             java.util.Date current=new java.util.Date();
             java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    Timer與TimerTask應用。利用  timer.schedule(new RemindTask() , now, minutes * 2 * 1000),來實現從程式啟動後每隔幾秒鐘執行一次應用程式,並限定執行幾次後程式自動停止,範例如下:

    package testjava;

    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;

    public class EggTimer {

        private final Timer timer = new Timer();
        private final int minutes;
        public EggTimer(int minutes) {

    楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    var hex_chr = "0123456789abcdef";
    function rhex(num)
    {
    str = "";
    for(j = 0; j <= 3; j++)

    楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

      在一個應用系統中常要定時去執行某些程式, 例如: 同步異質平台的資料, 或是定時發信件; Java是一種跨平台(Window/Linux)的程式語言, 雖然在 Window 平台可以用 AT 指令來作排程, 在 Linux 可以用 crontab 來排程, 但總是無法與系統作密切的結合.
    quartz是個不錯的選擇, 它一樣可以跨異質平台作業, 而且與 Java 的結合也很密切, 只要在Java程式段有 public void execute(JobExecutionContext context)
    throws JobExecutionException {....} 與quartz作接口即可
    , 下面我們來看一下如何實作它.總共有幾個步驟, 就可以讓它順利執行.
    設定

    楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    DUMP TRANSACTION 資料庫名稱 WITH NO_LOG
    dbcc shrinkdatabase(資料庫名稱)

    楊 bey kuen 發表在 痞客邦 留言(0) 人氣()

    1 2 3
    Blog Stats
    ⚠️

    成人內容提醒

    本部落格內容僅限年滿十八歲者瀏覽。
    若您未滿十八歲,請立即離開。

    已滿十八歲者,亦請勿將內容提供給未成年人士。