Corsair

          My javaWorld
          數(shù)據(jù)加載中……

          2006年9月14日

          JAVA3D包功能介紹

               摘要: 包 簡(jiǎn)介          ...  閱讀全文

          posted @ 2007-04-15 11:06 銀河海盜 閱讀(1706) | 評(píng)論 (3)編輯 收藏
          向上轉(zhuǎn)型中子類(lèi)將能看到父類(lèi)被覆蓋字段的現(xiàn)象探討

          我們知道,在子類(lèi)繼承父類(lèi)之后,如果子類(lèi)與父類(lèi)有同名的字段和方法,那么子類(lèi)中的子段會(huì)代替或隱藏父類(lèi)的子段,說(shuō)明子類(lèi)字段覆蓋了超類(lèi)字段,但可以通過(guò)super關(guān)鍵字去訪問(wèn)超類(lèi)字段。但是,在我們將子類(lèi)對(duì)象向超類(lèi)轉(zhuǎn)型的時(shí)候就會(huì)發(fā)生這個(gè)奇怪的現(xiàn)象,子類(lèi)對(duì)象居然可以看到父類(lèi)曾經(jīng)被覆蓋掉的字段!就正如下面例子中一樣:

          ?1?class?A{
          ?2?????boolean?bb?=false;
          ?3?}
          ?4?
          ?5?public?class?B?extends?A{
          ?6?????boolean?bb?=?true;
          ?7?????//int?a=1;
          ?8?????public?static?void?main(String[]?args)?{
          ?9?????????B?b?=new?B();
          10?????????A?a?;
          11?????????a=?b;
          12?????????//---??
          13?????????System.out.println(a.bb);
          14?????????//---這句可以理解
          15?????????System.out.println(b.bb);
          16?????????//---??
          17?????????System.out.println(?((A)b).bb);
          18?????????//----
          19?????}
          20?????/*運(yùn)行結(jié)果
          21??????*?false
          22??????*?true
          23??????*?false
          24??????*?*/
          25?}

          為什么會(huì)發(fā)生這樣的情況呢?
          關(guān)于這種情況的解釋在[美]Peter van der Linden著的《Just Java2》中有了答案:
          P106他說(shuō):
          ???一定要注意:當(dāng)把子類(lèi)轉(zhuǎn)換成超類(lèi)時(shí),子類(lèi)可以見(jiàn)到或訪問(wèn)被隱藏的同名變量。Java允許名字重復(fù)的原因是,允許將來(lái)把新的字段加到超類(lèi)中,而不影響已經(jīng)使用了該名字的現(xiàn)有子類(lèi),子類(lèi)將會(huì)繼續(xù)使用自己的字段副本。除非讓子類(lèi)以超類(lèi)對(duì)象的形式出現(xiàn),方法可以覆蓋,但是字段不能被覆蓋。注意:最好不要隱藏超類(lèi)中的字段名。
          ?????
          所以我們?cè)谶M(jìn)行向上轉(zhuǎn)型的時(shí)候一定要注意:不要訪問(wèn)子類(lèi)中那些“覆蓋”掉父類(lèi)的字段(它并沒(méi)有真正覆蓋掉,在向上轉(zhuǎn)型的時(shí)候就可以訪問(wèn)的到),要么將子類(lèi)字段改名(在你知道父類(lèi)代碼的情況下),要么通過(guò)方法來(lái)訪問(wèn)字類(lèi)字段(方法即使同名也肯定能覆蓋掉)。

          posted @ 2007-03-31 11:31 銀河海盜 閱讀(710) | 評(píng)論 (2)編輯 收藏
          繼承帶參數(shù)構(gòu)造器的超類(lèi)并且調(diào)用自身其他構(gòu)造器的討論

          // 首先有一個(gè)帶參數(shù)的超類(lèi):?
          class ?SuperClass {?
          ???String?str
          = " create?superClass?obj " ;?
          ???SuperClass(
          int ?num) {?
          ???????System.out.println(num
          + str);?
          ???}
          ?
          }
          ?
          /*
          現(xiàn)在有一個(gè)子類(lèi)繼承了這個(gè)超類(lèi),那么這個(gè)子類(lèi)應(yīng)該顯式的調(diào)用超類(lèi)的構(gòu)造函數(shù),以便初始化自己的父類(lèi),如下。?
          */

          class ?SubClass? extends ?SuperClass {?
          ???SubClass(
          int ?num) {?
          ??????
          super (num);?
          ???}
          ?
          }
          ?
          /*
          現(xiàn)在子類(lèi)還要定義一個(gè)新的構(gòu)造函數(shù),并且在前一個(gè)構(gòu)造函數(shù)中調(diào)用這個(gè)新的構(gòu)造函數(shù),更改如下:?
          */

          class ?SubClass? extends ?SuperClass {?
          ???SubClass(
          int ?num) {?
          ??????
          super (num);?
          ??????
          this ( " other?SubClass(String) " );?
          ???}
          ?
          ???SubClass(String?s)
          {?
          ??????System.out.println(s);?
          ???}
          ?
          ???
          public ? static ? void ?main(String[]?args) {?
          ??????
          new ?SubClass();?
          ???}
          ?
          }
          ?
          /*
          由于我們知道在一個(gè)類(lèi)中的構(gòu)造函數(shù)中要調(diào)用自己的其他構(gòu)造函數(shù),只能通過(guò)this();的方式調(diào)用一個(gè),并且要放在所在構(gòu)造函數(shù)的第一行,但是使用super();顯式調(diào)用也父類(lèi)帶參構(gòu)造函數(shù)也只能放在第一行,那么這樣就會(huì)發(fā)生沖突。
          */
          // 參考:?
          public ? class ?SuperClass? {?
          String?str
          = " create?superClass?obj " ;??
          ?SuperClass(
          int ?num) {??
          ???????System.out.println(num
          + str);??
          ???}
          ??
          }
          ?
          public ? class ?SubClass? extends ?SuperClass? {?
          ???SubClass(
          int ?num) {??
          ??????
          super (num);??
          ??????sub(num,
          " other?Subclass(String) " );?
          ???}
          ??
          ???SubClass(
          int ?num,String?s) {??
          ??????
          super (num);?
          ??System.out.println(s);??
          ???}
          ?
          ???
          // -------------?
          ???SubClass?sub( int ?num,String?s) {?
          ???
          return ? new ?SubClass(num,s);?
          ???}
          ?
          ???
          public ? static ? void ?main(String[]?args) {??
          ??????
          new ?SubClass( 1 );?
          ???}
          ??
          }

          posted @ 2007-03-31 10:56 銀河海盜 閱讀(451) | 評(píng)論 (0)編輯 收藏
          關(guān)于名稱(chēng)屏蔽討論

          關(guān)于超類(lèi)方法重載,子類(lèi)無(wú)法覆蓋其中的任意一個(gè)方法。

          public?class?SuperClass?{?
          public?void?method(){?
          System.out.println(
          "super?method()?worked.");?
          }
          ?
          public?void?method(int?a){?
          System.out.println(
          "super?method(int)?worked");?
          }
          ?
          public?void?method(String?s){?
          System.out.println(
          "super?method(string)?worked");?
          }
          ?
          }
          ?
          //------------sub---------------?
          public?class?SubClass?extends?SuperClass?{?
          ??
          public?void?method(){?
          ??System.out.println(
          "subclass?method()?worked");?
          ??}
          ?
          ??
          public?void?method(int?a){?
          ??
          super.method(a);?
          ??}
          ?
          ??
          public?void?method(char?c){?
          ??System.out.println(
          "subclass?method(char)?worked");?
          ??}
          ?
          }
          ?
          //------------run---------------?
          public?class?Test?{?
          public?static?void?run(SuperClass?a){?
          a.method();?
          a.method(
          1);?
          a.method(
          "string");?
          }
          ?
          public?static?void?main(String[]?args)?{?
          run(
          new?SubClass());?
          new?SubClass().method('r');?
          }
          ?
          }
          ?
          //=============END===============?
          subclass?method()?worked?
          super?method(int)?worked?
          super?method(string)?worked?
          subclass?method(
          char)?worked?
          //=============END===============?

          posted @ 2007-03-31 10:53 銀河海盜 閱讀(321) | 評(píng)論 (1)編輯 收藏
          解決linux環(huán)境下jsp+mysql數(shù)據(jù)庫(kù)中文亂碼的問(wèn)題

          經(jīng)過(guò)一個(gè)星期的艱苦奮斗終于解決了這個(gè)問(wèn)題,特將經(jīng)驗(yàn)摘錄下來(lái)備忘。本文將解決以下的幾種亂碼問(wèn)題。

          中文存入 mysql 數(shù)據(jù)表出現(xiàn)的亂碼,從 JSP 頁(yè)面讀取 mysql 中文數(shù)據(jù)出現(xiàn)亂碼,以及在 sell 環(huán)境下查看數(shù)據(jù)庫(kù)表中文數(shù)據(jù)出現(xiàn)亂碼。

          linux平臺(tái):ubuntu6.10

          mysql版本:5.0

          瀏覽器:firefox2.0

          為了解決中文亂碼的問(wèn)題首先就是要同一字符集,我采用utf-8

          第一步:安裝mysql后,修改配置文件/etc/mysql/my.cnf 找到相應(yīng)項(xiàng)并添加如下字段,如下所示:(注意是添加,配置文件中其他不相關(guān)的內(nèi)容下面并沒(méi)有列出來(lái))

          [client]

          default-character-set=utf8

          [mysqld_safe]

          default-character-set=utf8

          [mysqld]

          default-character-set=utf8

          [mysql]

          default-character-set=utf8

          重新啟動(dòng)mysql服務(wù),進(jìn)入sell終端,進(jìn)入mysql的命令提示符下輸入如下指令:

          mysql>show variables like '%char%';

          如果出現(xiàn)的列表各項(xiàng)內(nèi)容和以下相同表明配置成功了,

          +---------------------+---------------------

          | Variable_name | Value

          +-----------------------+---------------------

          | character_set_client | utf8

          | character_set_connection | utf8

          | character_set_database | utf8

          | character_set_filesystem | binary

          | character_set_results | utf8

          | character_set_server | utf8

          | character_set_system | utf8

          | character_sets_dir | /usr/share/mysql/charsets/

          +---------------------+----------------------

          第二步:在要發(fā)送中文或者要讀取中文的JSP頁(yè)面(最好所有頁(yè)面)都添加如下聲明:

          <%@page pageEncoding="UTF-8"%>

          <%@ page contentType="text/html;charset=utf-8"%>

          <% request.setCharacterEncoding("utf-8"); %>

          <head>標(biāo)簽對(duì)中添加如下:

          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

          注意在servlet中對(duì)請(qǐng)求進(jìn)行響應(yīng)的方法中同樣要有:

          response.setContentType("text/html;charset=utf-8");


          第三步:(由于不明原因firefox發(fā)送的請(qǐng)求仍然是latin1的時(shí)候執(zhí)行這一步)

          在將請(qǐng)求的參數(shù)插入數(shù)據(jù)庫(kù)之前還要再執(zhí)行一次轉(zhuǎn)碼(latin1編碼轉(zhuǎn)換為utf-8),例如:

          String utf8_str = new String( latin_str .getBytes("latin1"),"utf-8");

          這一步可以寫(xiě)在一個(gè)過(guò)濾器中,不怕麻煩也可以在每一次在將請(qǐng)求數(shù)據(jù)插入之前都進(jìn)行一次轉(zhuǎn)碼。


          另外:在連接數(shù)據(jù)庫(kù)的時(shí)候可以不用加上字符集參數(shù)了,直接用用戶名和密碼連接就可以了,如連接:

          con=DriverManager.getConnection("jdbc:mysql://localhost:3306/數(shù)據(jù)庫(kù)名","用戶名","密碼");

          posted @ 2007-01-14 20:04 銀河海盜 閱讀(2053) | 評(píng)論 (0)編輯 收藏
          設(shè)計(jì)模式學(xué)習(xí)筆記(2006.10,11,12)

               摘要: 時(shí)間過(guò)的快么?人的感覺(jué)而已,時(shí)間還是那樣地流過(guò),但人們卻有不同的感受,收獲的越多,感覺(jué)時(shí)間過(guò)的越慢,認(rèn)知的越少,時(shí)間也就過(guò)的越快。有三個(gè)月沒(méi)寫(xiě)點(diǎn)什么東西了,為了讓時(shí)間記住這三個(gè)月都發(fā)生了什么,趁現(xiàn)在還沒(méi)有忘記還是記錄下來(lái)罷,今天心情不好所以廢話也就多點(diǎn)。 ?????? 按時(shí)間順序一個(gè)一個(gè)來(lái)吧。 ...  閱讀全文

          posted @ 2007-01-14 03:19 銀河海盜 閱讀(310) | 評(píng)論 (0)編輯 收藏
          linux安裝配置筆記

          關(guān)于ubuntu與xp雙系統(tǒng)的安裝過(guò)程

          1. (正常安裝完windows之后)分區(qū):使用harddiskmanager或其它分區(qū)軟件劃分一個(gè)ext3主分區(qū)和swap分區(qū),另外在擴(kuò)展分區(qū)中劃分出多個(gè)要供linux使用的的邏輯分區(qū)。
          2. 將windows系統(tǒng)分區(qū)的激活狀態(tài)設(shè)置為關(guān)閉(不能設(shè)置為隱藏)。將linux主分區(qū)設(shè)置為激活。
          3. 光盤(pán)啟動(dòng)ubuntu的liveCD,進(jìn)入系統(tǒng)后安裝,手動(dòng)編輯分區(qū)表:將/root掛載在linux主分區(qū)上,將/usr , /var , /home 掛載在邏輯分區(qū)上。grub安裝在linux的主分區(qū)上(即/root分區(qū)),注意grub的分區(qū)計(jì)數(shù)是從0開(kāi)始,系統(tǒng)目錄掛載分區(qū)技數(shù)從1開(kāi)始,假如linux系統(tǒng)分區(qū)是第一個(gè)硬盤(pán)的第三個(gè)分區(qū),則系統(tǒng)目錄掛載分區(qū)表示為:/dev/hda3其中a表示第一塊硬盤(pán)3表示第三個(gè)分區(qū),相應(yīng)的grub表示為(hd0,2)數(shù)字0表示第一個(gè)硬盤(pán),2表示第三個(gè)分區(qū)。
          4. 安裝完畢后取出光盤(pán)重起進(jìn)入ubuntu系統(tǒng)。

          配置ubuntu系統(tǒng)

          1. 上網(wǎng):sudo pppoeconf
          2. 更改源:sudo gedit /etc/apt/sources.list 按速度快慢(使用ping測(cè)試)將源地址添加在開(kāi)頭,最后加入官方源。
          3. 更新軟件包信息:sudo apt-get update
          4. 添加中文支持。在語(yǔ)言支持中選chease并打勾,自動(dòng)下載語(yǔ)言包和輸入法。
          5. 在英文界面下添加輸入法: sudo apt-get install im-switch libapt-pkg-perl sudo im-switch -s scim -z default 注銷(xiāo)一次
          6. ?下載可同軟件的更新。

          與window局域網(wǎng)互聯(lián)

          1. 安裝網(wǎng)絡(luò)服務(wù)nfs 和 smb 修改靜態(tài)IP。
          2. 添加一個(gè)window可訪問(wèn)的用戶帳號(hào): sudo adduser -a xxx? 輸入密碼? 添加smb用戶 smbpasswd -a xxx 輸入密碼。
          3. 創(chuàng)建一個(gè)網(wǎng)絡(luò)文件夾的本地掛載點(diǎn)? 協(xié)議:window共享? 服務(wù)器:對(duì)發(fā)ip? 域:工作組名 用戶名:登錄對(duì)方window的帳號(hào) 連接名:隨便。

          雙網(wǎng)卡與window實(shí)現(xiàn)共享上網(wǎng),ububtu做主機(jī)

          1. 下載firestarter安裝,配置:連接internet:pppo -》打開(kāi)網(wǎng)絡(luò)共享:與window互聯(lián)的網(wǎng)卡—》添加策略:inbound traffic policy :Allow connection:對(duì)方IP。—》service: DNS ,SSH ,FTP ,HTTP ...?根據(jù)需要開(kāi)放端口。
          2. 下載并安裝bind9,配置bind9:sudo gedit /etc/bind/name.conf.options 在forwards 下添加域名解析服務(wù)器的IP地址。

          其他注意

          1. firefox與flash插件9.0存在兼容問(wèn)題,使用較低的flash插件版本。
          2. 備份/var/cache/apt/下的所有軟件包文件以避免以后重新下載。以后需要安裝時(shí)只需copy相應(yīng)的軟件包到該目錄下即可。
          3. 可以在使用在windows下安裝的ghost8.3在dos下來(lái)備份和恢復(fù)linux ext3分區(qū)。
          4. 安裝bin文件:先給予可執(zhí)行權(quán)限chmod +x xxx.bin在sell下輸入bin文件所在的路徑執(zhí)行即可,如 ~/backup/xxx.bin
          另外注意備份windows的分區(qū)表,以防萬(wàn)一

          posted @ 2006-12-25 18:26 銀河海盜 閱讀(400) | 評(píng)論 (0)編輯 收藏
          XML精要二

               摘要: DTD和Schema簡(jiǎn)介
          DTD和Shema用來(lái)定義將用來(lái)表示數(shù)據(jù)的元素
          DTD語(yǔ)法
          Schema簡(jiǎn)介
          使用 XML 模式,您會(huì)有更多的能力來(lái)定義什么樣的 XML 文檔是有效的
            閱讀全文

          posted @ 2006-11-01 10:21 銀河海盜 閱讀(231) | 評(píng)論 (0)編輯 收藏
          XML精要一

               摘要: 《XML精要》
          前言
          開(kāi)始學(xué)XML也有個(gè)把星期了,前后看了幾本書(shū)關(guān)于XML基礎(chǔ)的書(shū),感覺(jué)講的甚是凌亂,有些書(shū)甚至干脆直接在網(wǎng)上COPY些資料東抄一點(diǎn)西抄一點(diǎn)最后就出版了(比如《XML語(yǔ)言及應(yīng)用---清華大學(xué)出版社》就干脆直接將網(wǎng)上的《XML初學(xué)進(jìn)階》抄下來(lái),將例子改改就完了)現(xiàn)在中國(guó)大學(xué)治學(xué)的態(tài)度可見(jiàn)一斑,直到本周發(fā)現(xiàn)了一個(gè)IBM的在線XML教程,該教程將XML所有的知識(shí)分解為一個(gè)個(gè)單獨(dú)的講座,每堂課還介紹了所需要的前提知識(shí)以及所要用到到參考資料,而且教程將知識(shí)講的非常的簡(jiǎn)練和精確,但可惜該教程是在2002年左右發(fā)表的了,在網(wǎng)上資源不是很好找而且比較散,所以我決定將我學(xué)的每趟講座的精要和我個(gè)人的讀書(shū)筆記整理出來(lái)形成一個(gè)連載,一來(lái)鞏固我的學(xué)習(xí),二來(lái)也可以供大家參考,取名《XML精要》。言歸正傳,那我就開(kāi)始嘍  閱讀全文

          posted @ 2006-10-29 22:54 銀河海盜 閱讀(336) | 評(píng)論 (1)編輯 收藏
          javaScript的基礎(chǔ)知識(shí)筆記《一》

          一:語(yǔ)法結(jié)構(gòu):

          ?????? 嵌入 *.js 文件 <script? language=”javScript” src=”url ”></script>

          1.? 定義結(jié)構(gòu):

          a)???????? 變量定義: var xx = “xx” 無(wú)須匹配類(lèi)型;

          b)??????? 函數(shù)定義: function method(x , y){…} 參數(shù)同樣不用匹配類(lèi)型;

          可以通過(guò) arguments.length 屬性來(lái)確定參數(shù)個(gè)數(shù)來(lái)創(chuàng)建不確定參數(shù)的函數(shù)如:

          ??? function noArguments(){

          ????????????? var len = arguments.length;

          ????????????? for(var i=0;i<len;i++){

          ????????????? ????????????? var fristArgument = noArguments.arguments[i];

          ??????????????????????????? ………// 通過(guò) ? noArguments.arguments[i] 獲得參數(shù);

          }

          }

          c)??????? 對(duì)象定義:

          定義方式一 ? function obj(x,y){

          ?????? this.x=x;

          ?????? this.y=y;

          ?????? this.m1=method1;

          ?????? this.m2=method2;

          ?????? function method1(){…..}

          function method2(){…..}

          }

          定義方式二 ? function obj(x,y){

          ?????? this.x=x;

          ?????? this.y=y;

          ?????? this.m1=function method1(){……}

          ?????? this.m2=function method2(){……}

          }

          d)??????? 使用對(duì)象:

          var obj1 = new obj();

          var new_x = obj.x; // 是用屬性的方式 1

          var new_y = obj[‘y’]; // 是用屬性的方式 2

          內(nèi)置對(duì)象:

          ?????? a) 數(shù)組對(duì)象( Array ):

          ???????????????????? var newArry =new Arry(n);

          ???????????????????? var newArry =new Arry(“one”,”two”,”there”,”four”);

          ?????? 注:屬性和方法不再列出。

          ??????

          b) 字符串對(duì)象( String ):

          ???????????????????? var newStr =”xxx”;

          ???????????????????? var newStr=new String(“xxx”);

          ?????? 對(duì)字符串的比較直接使用 ”= =”

          ??????

          ?????? c) 數(shù)學(xué)對(duì)象( Math

          ????????????? 注意:使用數(shù)學(xué)對(duì)象時(shí)不需要?jiǎng)?chuàng)建該對(duì)象,直接使用即可;

          ????????????? 例如: Math.PI; // 屬性的使用

          Math.abs(x);// 方法的使用;

          d) 日期對(duì)象( Date

          ??????? var date1 =new Date();

          ????????????? var date2 =new Date(“ 日期子串 ”);

          ????????????? var date3 =new Date( 年,月,日, [ 時(shí),分,秒,毫秒 ]);

          ????????????? var date4 =new Date( 毫秒 );

          ?

          posted @ 2006-09-26 11:29 銀河海盜 閱讀(278) | 評(píng)論 (0)編輯 收藏
          解決jsp+MysQL輸入和輸出中文亂碼的方法!

          當(dāng)使用JSP頁(yè)面將中文數(shù)據(jù)添加到MySql數(shù)據(jù)庫(kù)中的時(shí)候發(fā)現(xiàn)變?yōu)閬y碼,或者從mysql中讀取中文的時(shí)候出現(xiàn)亂碼,這些問(wèn)題根源都是由于字符編碼不一致造成的。要知道病源是什么我們才能對(duì)癥下藥,所以我將問(wèn)題產(chǎn)生的過(guò)程簡(jiǎn)單描述一下(如有不對(duì)望高人賜教)
          ?我們以一個(gè)從form表單讀取數(shù)據(jù)并寫(xiě)入mysql數(shù)據(jù)庫(kù)的例子來(lái)講解;

          HTML頁(yè)面參數(shù)—(以瀏覽器的編碼方式發(fā)送)—》JSP頁(yè)面—(以JSP定義的編碼方式被編譯)—》被JSP引擎編譯為*.class文件——》在JSP容器中運(yùn)行——》傳遞給Mysql數(shù)據(jù)庫(kù)—(以數(shù)據(jù)庫(kù)的編碼方式讀取數(shù)據(jù)并存儲(chǔ))—》讀取Mysql—(以數(shù)據(jù)庫(kù)的編碼方式讀取)—》JSP頁(yè)面接受后在瀏覽器中顯示(以瀏覽器編碼方式解碼顯示);

          注意:這里的“瀏覽器編碼”“JSP頁(yè)面編碼”“JSP頁(yè)面輸出編碼”“JSP頁(yè)面輸入編碼”“數(shù)據(jù)庫(kù)的編碼”可能存在潛在的不一直,當(dāng)它們中的任意一個(gè)不相同的時(shí)候就會(huì)出現(xiàn)亂碼;就好像傳話游戲一樣,張三要把話傳給李四,李四把他聽(tīng)到的傳給王五,要讓王五知道張三說(shuō)的什么就需要他們?nèi)齻€(gè)人使用的相同語(yǔ)言,如果李四是個(gè)火星人,他當(dāng)然聽(tīng)不懂張三說(shuō)什么,然后他還不厚道的對(duì)王五說(shuō)火星話(亂碼),結(jié)果王五就只能聽(tīng)到亂碼了。(比喻比較汗~~^_^!)

          好了,現(xiàn)在我們就依次把各個(gè)編碼方式改為相同就可以了;
          //-------------------------瀏覽器編碼-----------------
          <html>
          ? <head><meta http-equiv="Content-Type" content="text/html; charset=GB2312"></head>
          </html>
          //---------------------------JSP頁(yè)面-------------------
          <%@ page pageEncoding="GB2312"%>??????????????????????????? //JSP頁(yè)面編碼:
          <%@ page contentType="text/html;charset=gb2312"%>????//JSP頁(yè)面輸出編碼:
          <% request.setCharacterEncoding("gb2312");?%>?????????????? //JSP頁(yè)面輸入編碼:
          //------------------------MySql編碼-------------------
          Connection connect = java.sql.DriverManager.getConnection(
          "jdbc:mysql://localhost/mydb?user=登陸帳號(hào)&password=你的密碼&useUnicode=true&characterEncoding=gb2312");

          //-------------------------------------------------------
          注意:gb2312的寫(xiě)法(紅色部分) 在瀏覽器和數(shù)據(jù)庫(kù)中的寫(xiě)法要區(qū)分!
          以上配置測(cè)試成功!(tomcat5.5+MySql5.0)
          //另外看了網(wǎng)上的很多文章,比如通過(guò)函數(shù)轉(zhuǎn)碼啊~~改配置文件啊~~都不如這樣來(lái)的簡(jiǎn)便且成功率高!
          推薦!

          posted @ 2006-09-24 11:24 銀河海盜 閱讀(1579) | 評(píng)論 (0)編輯 收藏
          使用JSP連接MySql數(shù)據(jù)庫(kù)讀取HTML表單數(shù)據(jù)進(jìn)行存貯

          運(yùn)行環(huán)境 tomcat5.5+MySql5.0
          編寫(xiě)一個(gè)簡(jiǎn)單的HTML表單:

          <html>
          ????
          <head>
          ????
          </head>
          ????
          <body>
          ????????
          <form?action="http://127.0.0.1/test/login.jsp"?method="post">
          ????????????????學(xué)號(hào):
          <input?type="text"?name="id"><br>
          ????????????????姓名:
          <input?type="text"?name="name"><br>
          ????????????????
          <label>
          ??????
          <input?type="radio"?name="sex"?value="boy"?checked>
          ????????????男
          </label>
          ??????
          <label>
          ??????
          <input?type="radio"?name="sex"?value="girl">
          ????????????女
          </label><br>
          ????????????????電話:
          <input?type="text"?name="tel"><br>
          ????????????????
          <input?type="submit"?value="提交">
          ????????????????
          <input?type="reset"?value="重填">
          ????????
          </form>
          ????
          </body>
          </html>
          接這編寫(xiě)一個(gè)JSP文件用于讀取表單數(shù)據(jù)
          Connection?conn?=?null;
          Class.forName(
          "com.mysql.jdbc.Driver").newInstance();
          conn?
          =?java.sql.DriverManager.getConnection("jdbc:mysql://localhost/mydb","root","corsair");
          if(conn==null){
          System.out.println(
          "get?Conn?Error");
          }

          Statement?stmt
          =conn.createStatement();
          ResultSet?rs
          =null;
          %>
          <%
          ????String?id,name,sex,tel;
          ????id
          =request.getParameter("id");
          ????name
          =request.getParameter("name");
          ????sex
          =request.getParameter("sex");
          ????tel
          =request.getParameter("tel");
          ????
          try{
          ????stmt.executeUpdate(
          "INSERT?INTO?inf_student(id,name,sex,tel)?VALUES?('"+id+"','"+name+"','"+sex+"','"+tel+"')");
          ????}
          catch(SQLException?e){}
          stmt.close();
          conn.close();
          %>
          將以上文件保存在tomcat5.5的webapps目錄下;然后啟動(dòng)tomcat5.5和mysql數(shù)據(jù)庫(kù),最后打開(kāi)表單,插入數(shù)據(jù)提交,并可以mysqlQueryBrower查看到插入數(shù)據(jù)的情況了。

          posted @ 2006-09-15 15:42 銀河海盜 閱讀(2317) | 評(píng)論 (4)編輯 收藏
          JSP語(yǔ)法

          <%@ %>指令塊。定義JSP文件的全局屬性,該指令不能作用動(dòng)態(tài)包含文件;

          ?

          <%@ page

          ??? language="java"

          ??? extends="指定父類(lèi)"

          ??? import="導(dǎo)入JAVA類(lèi)" ??

          ??? session="false||true是否使用session對(duì)象"

          ??? buffer="定義緩沖區(qū)大小默認(rèn)8kb"

          ??? autoFlush="false||true自動(dòng)清除緩沖區(qū)"

          ??? isThreadSafe="false||true是否處理多請(qǐng)求"

          ??? info="定義相關(guān)信息.txt"

          ??? errorPage="url指定錯(cuò)誤頁(yè)"

          ??? contentType="編碼方式"

          ??? isErroPage="false||true是否為處理異常頁(yè)"

          %>?

          ?

          <%@ include file ="URL指定要包含的另外一個(gè)JSP文件,*.jspf,*.htmlf"%>

          <%@ taglib uri ="" prefix=""%>

          ?

          常用的JSP動(dòng)作元素

          1

          ??? <jsp:useBean

          ??????? id="指定該bean對(duì)象名"

          ??????? scope="page||request||session||application bean的作用域"

          ??????? class="bean的class文件名,注意不能與beanName屬性一起使用"

          ??????? beanName="*.class或*.ser或bean包的名字,緊當(dāng)bean不存在于指定???????????? 的作用域時(shí)才使用 "

          ??????? type="與class或beanName一起使用,指定要實(shí)例化的bean的類(lèi)或接口"

          ??? >

          ??? <jsp:setProperty name="" property="" value="">實(shí)例話bean的初始特性值。

          ??? </jsp:/useBean>

          2??

          ??? <jsp:setProperty

          ??????? name="對(duì)應(yīng)<jsp:useBean>中的id"

          ??????? property="*||bean屬性名 通過(guò)request參數(shù)設(shè)定bean屬性值"

          ??????? value="為bean屬性值指定值,需要指定bean屬性名"

          ??? />

          ?

          3??

          ??? <jsp:getProperty

          ??????? name="對(duì)應(yīng)<jsp:useBean>中的id"

          ??????? property="對(duì)應(yīng)想要獲得的屬性值名"

          ??? />

          4

          ??? <jsp:include>

          ??????? page="要包含文件的相對(duì)地址"

          ??????? flush="true||false 是否清空緩沖區(qū)"

          ??????? <jsp:param name="" value="" 可以傳遞一個(gè)參數(shù)/>

          ??? </jsp:include>

          5

          ??? <jsp:forward page="URL或者一個(gè)表達(dá)式,用于將請(qǐng)求的頁(yè)面轉(zhuǎn)向其他頁(yè)面">

          ??????? <jsp:param name="" value="">可以傳遞參數(shù);

          ??? </jsp:forward>

          6??

          ??? <jsp:param name="" value="">

          <%! %> 變量和方法聲明塊,要使用“;”結(jié)尾

          <%? %> 腳本塊 可以聲明局部變量 但是不能定義方法!

          <%= %> 表達(dá)式 注意內(nèi)部不能使用“;”

          posted @ 2006-09-14 11:24 銀河海盜 閱讀(280) | 評(píng)論 (0)編輯 收藏
          主站蜘蛛池模板: 汝城县| 兴山县| 长顺县| 邵阳市| 德昌县| 天柱县| 加查县| 琼结县| 临漳县| 尼玛县| 永登县| 商水县| 永年县| 华宁县| 丰县| 阿拉善右旗| 义马市| 开鲁县| 辉县市| 文水县| 犍为县| 朝阳区| 高密市| 合作市| 桐城市| 永城市| 湘阴县| 眉山市| 西充县| 贡嘎县| 拉孜县| 遵义市| 隆子县| 四会市| 南乐县| 徐汇区| 历史| 石家庄市| 娄烦县| 连平县| 淮安市|