名稱:cat
          使用權(quán)限:所有使用者
          使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
          說明:把檔案串連接后傳到基本輸出(螢?zāi)换蚣?> fileName 到另一個檔案)
          參數(shù):
          -n 或 --number 由 1 開始對所有輸出的行數(shù)編號
          -b 或 --number-nonblank 和 -n 相似,只不過對于空白行不編號
          -s 或 --squeeze-blank 當遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
          -v 或 --show-nonprinting

          范例:
          cat -n textfile1 > textfile2 把 textfile1 的檔案內(nèi)容加上行號后輸入 textfile2 這個檔案里
          cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的檔案內(nèi)容加上行號(空白行不加)之后將內(nèi)容附加到 textfile3

          名稱 : cd
          使用權(quán)限 : 所有使用者
          使用方式 : cd [dirName]
          說明 : 變換工作目錄至 dirName。 其中 dirName 表示法可為絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的 home directory (也就是剛 login 時所在的目錄)。
          另外,"~" 也表示為 home directory 的意思,"." 則是表示目前所在的目錄,".." 則表示目前目錄位置的上一層目錄。
          范例 : 跳到 /usr/bin/ :
          cd /usr/bin
          跳到自己的 home directory :
          cd ~
          跳到目前目錄的上上兩層 :
          cd ../..

          指令名稱 : chmod
          使用權(quán)限 : 所有使用者
          使用方式 : chmod [-cfvR] [--help] [--version] mode file...
          說明 : Linux/Unix 的檔案存取權(quán)限分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。
          參數(shù) :
          mode : 權(quán)限設(shè)定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
          + 表示增加權(quán)限、- 表示取消權(quán)限、= 表示唯一設(shè)定權(quán)限。
          r 表示可讀取,w 表示可寫入,x 表示可執(zhí)行,X 表示只有當該檔案是個子目錄或者該檔案已經(jīng)被設(shè)定過為可執(zhí)行。
          -c : 若該檔案權(quán)限確實已經(jīng)更改,才顯示其更改動作
          -f : 若該檔案權(quán)限無法被更改也不要顯示錯誤訊息
          -v : 顯示權(quán)限變更的詳細資料
          -R : 對目前目錄下的所有檔案與子目錄進行相同的權(quán)限變更(即以遞回的方式逐個變更)
          --help : 顯示輔助說明
          --version : 顯示版本

          范例 :將檔案 file1.txt 設(shè)為所有人皆可讀取 :
          chmod ugo+r file1.txt
          將檔案 file1.txt 設(shè)為所有人皆可讀取 :
          chmod a+r file1.txt
          將檔案 file1.txt 與 file2.txt 設(shè)為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
          chmod ug+w,o-w file1.txt file2.txt
          將 ex1.py 設(shè)定為只有該檔案擁有者可以執(zhí)行 :
          chmod u+x ex1.py
          將目前目錄下的所有檔案與子目錄皆設(shè)為任何人可讀取 :
          chmod -R a+r *
          此外chmod也可以用數(shù)字來表示權(quán)限如 chmod 777 file
          語法為:chmod abc file
          其中a,b,c各為一個數(shù)字,分別表示User、Group、及Other的權(quán)限、
          r=4,w=2,x=1
          若要rwx屬性則4+2+1=7;
          若要rw-屬性則4+2=6;
          若要r-x屬性則4+1=7。

          范例:
          chmod a=rwx file和chmod 777 file效果相同
          chmod ug=rwx,o=x file和chmod 771 file效果相同

          若用chmod 4755 filename可使此程式具有root的權(quán)限
          指令名稱 : chown
          使用權(quán)限 : root
          使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
          說明 : Linux/Unix 是多人多工作業(yè)系統(tǒng),所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統(tǒng)管理者(root)所使用,一般使用者沒有權(quán)限可以改變別人的檔案擁有者,也沒有權(quán)限可以自己的檔案擁有者改設(shè)為別人。只有系統(tǒng)管理者(root)才有這樣的權(quán)限。

          參數(shù):
          user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者群體(group)-c : 若該檔案擁有者確實已經(jīng)更改,才顯示其更改動作-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息-h : 只對于連結(jié)(link)進行變更,而非該 link 真正指向的檔案-v : 顯示擁有者變更的詳細資料-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)--help : 顯示輔助說明--version : 顯示版本
          范例 :
          將檔案 file1.txt 的擁有者設(shè)為 users 群體的使用者 jessie :
          chown jessie:users file1.txt
          將目前目錄下的所有檔案與子目錄的擁有者皆設(shè)為 users 群體的使用者 lamport :
          chmod -R lamport:users *


          名稱:cp
          使用權(quán)限:所有使用者
          使用方式:
          cp [options] source dest
          cp [options] source... directory
          說明:將一個檔案拷貝至另一檔案,或?qū)?shù)個檔案拷貝至另一目錄。
          參數(shù)
          -a 盡可能將檔案狀態(tài)、權(quán)限等資料都照原狀予以復(fù)制。
          -r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
          -f 若目的地已經(jīng)有相同檔名的檔案存在,則在復(fù)制前先予以刪除再行復(fù)制。
          范例:
          將檔案 aaa 復(fù)制(已存在),并命名為 bbb :
          cp aaa bbb
          將所有的C語言程式拷貝至 Finished 子目錄中 :
          cp *.c Finished


          名稱:cut
          使用權(quán)限:所有使用者
          用法:cut -cnum1-num2 filename
          說明:顯示每行從開頭算起 num1 到 num2 的文字。
          范例:
          shell>> cat example
          test2
          this is test1
          shell>> cut -c0-6 example ## print 開頭算起前 6 個字元
          test2
          this i

          名稱 : find
          用法 : find
          使用說明 :
          將檔案系統(tǒng)內(nèi)符合 expression 的檔案列出來。你可以指要檔案的名稱、類別、時間、大小、權(quán)限等不同資訊的組合,只有完全相符的才會被列出來。
          find 根據(jù)下列規(guī)則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份為 path,之后的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 為預(yù)設(shè) expression
          expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。
          -mount, -xdev : 只檢查和指定目錄在同一個檔案系統(tǒng)下的檔案,避免列出其它檔案系統(tǒng)中的檔案
          -amin n : 在過去 n 分鐘內(nèi)被讀取過
          -anewer file : 比檔案 file 更晚被讀取過的檔案
          -atime n : 在過去 n 天過讀取過的檔案
          -cmin n : 在過去 n 分鐘內(nèi)被修改過
          -cnewer file :比檔案 file 更新的檔案
          -ctime n : 在過去 n 天過修改過的檔案
          -empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name
          -ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
          -name name, -iname name : 檔案名稱符合 name 的檔案。iname 會忽略大小寫
          -size n : 檔案大小 是 n 單位,b 代表 512 位元組的區(qū)塊,c 表示字元數(shù),k 表示 kilo bytes,w 是二個位元組。-type c : 檔案類型是 c 的檔案。
          d: 目錄
          c: 字型裝置檔案
          b: 區(qū)塊裝置檔案
          p: 具名貯列
          f: 一般檔案
          l: 符號連結(jié)
          s: socket
          -pid n : process id 是 n 的檔案

          你可以使用 ( ) 將運算式分隔,并使用下列運算。
          exp1 -and exp2
          ! expr
          -not expr
          exp1 -or exp2
          exp1, exp2
          范例:
          將目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來。
          # find . -name "*.c"
          將目前目錄其其下子目錄中所有一般檔案列出
          # find . -ftype f
          將目前目錄及其子目錄下所有最近 20 分鐘內(nèi)更新過的檔案列出
          # find . -ctime -20

          名稱:less
          使用權(quán)限:所有使用者
          使用方式:
          less [Option] filename
          說明:
          less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內(nèi)容,不同的是 less 允許使用者往回卷動
          以瀏覽已經(jīng)看過的部份,同時因為 less 并未在一開始就讀入整個檔案,因此在遇上大型檔案的開啟時,會比一般的文書編輯器(如 vi)來的快速。


          范例:
          指令名稱 : ln
          使用權(quán)限 : 所有使用者
          使用方式 : ln [options] source dist,其中 option 的格式為 :
          [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
          [--help] [--version] [--]
          說明 : Linux/Unix 檔案系統(tǒng)中,有所謂的連結(jié)(link),我們可以將其視為檔案的別名,而連結(jié)又可分為兩種 : 硬連結(jié)(hard link)與軟連結(jié)(symbolic link),硬連結(jié)的意思是一個檔案可以有多個名稱,而軟連結(jié)的方式則是產(chǎn)生一個特殊的檔案,該檔案的內(nèi)容是指向另一個檔案的位置。硬連結(jié)是存在同一個檔案系統(tǒng)中,而軟連結(jié)卻可以跨越不同的檔案系統(tǒng)。
          ln source dist 是產(chǎn)生一個連結(jié)(dist)到 source,至于使用硬連結(jié)或軟鏈結(jié)則由參數(shù)決定。不論是硬連結(jié)或軟鏈結(jié)都不會將原本的檔案復(fù)制一份,只會占用非常少量的磁碟空間。
          -f : 鏈結(jié)時先將與 dist 同檔名的檔案刪除-d : 允許系統(tǒng)管理者硬鏈結(jié)自己的目錄-i : 在刪除與 dist 同檔名的檔案時先進行詢問-n : 在進行軟連結(jié)時,將 dist 視為一般的檔案-s : 進行軟鏈結(jié)(symbolic link)-v : 在連結(jié)之前顯示其檔名-b : 將在鏈結(jié)時會被覆寫或刪除的檔案進行備份-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾-V METHOD : 指定備份的方式--help : 顯示輔助說明--version : 顯示版本
          范例 :
          將檔案 yy 產(chǎn)生一個 symbolic link : zz
          ln -s yy zz
          將檔案 yy 產(chǎn)生一個 hard link : zz
          ln yy xx


          名稱:locate
          使用權(quán)限:所有使用者
          使用方式: locate [-q] [-d ] [--database=]
          locate [-r ] [--regexp=]
          locate [-qv] [-o ] [--output=]
          locate [-e ] [-f ] <[-l ] [-c]
          <[-U ] [-u]>
          locate [-Vh] [--version] [--help]
          說明:
          locate 讓使用者可以很快速的搜尋檔案系統(tǒng)內(nèi)是否有指定的檔案。其方法是先建立一個包括系統(tǒng)內(nèi)所有檔案名稱及路徑的資料庫,之后當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統(tǒng)之中了。
          在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動執(zhí)行。一般使用者在使用時只要用
          # locate your_file_name
          的型式就可以了。
          參數(shù):
          -u
          -U建立資料庫,-u 會由根目錄開始,-U 則可以指定開始的位置。
          -e
          將排除在尋找的范圍之外。

          -l如果是 1.則啟動安全模式。在安全模式下,使用者不會看到權(quán)限無法看到的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統(tǒng)中取得檔案的權(quán)限資料。
          -f將特定的檔案系統(tǒng)排除在外,例如我們沒有到理要把 proc 檔案系統(tǒng)中的檔案放在資料庫中。
          -q安靜模式,不會顯示任何錯誤訊息。
          -n至多顯示個輸出。
          -r使用正規(guī)運算式 做尋找的條件。
          -o指定資料庫存的名稱。
          -d指定資料庫的路徑
          -h顯示輔助訊息
          -v顯示更多的訊息
          -V顯示程式的版本訊息
          范例:
          locate chdrv : 尋找所有叫 chdrv 的檔案
          locate -n 100 a.out : 尋找所有叫 a.out 的檔案,但最多只顯示 100 個
          locate -u : 建立資料庫

          名稱 : ls
          使用權(quán)限 : 所有使用者
          使用方式 : ls [-alrtAFR] [name...]
          說明 : 顯示指定工作目錄下之內(nèi)容(列出目前工作目錄所含之檔案及子目錄)。

          -a 顯示所有檔案及目錄 (ls內(nèi)定將檔案名或目錄名稱開頭為"."的視為隱藏檔,不會列出)
          -l 除檔案名稱外,亦將檔案型態(tài)、權(quán)限、擁有者、檔案大小等資訊詳細列出
          -r 將檔案以相反次序顯示(原定依英文字母次序)
          -t 將檔案依建立時間之先后次序列出
          -A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
          -F 在列出的檔案名稱后加一符號;例如可執(zhí)行檔則加 "*", 目錄則加 "/"
          -R 若目錄下有檔案,則以下之檔案亦皆依序列出

          范例:
          列出目前工作目錄下所有名稱是 s 開頭的檔案,愈新的排愈后面 :
          ls -ltr s*
          將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
          ls -lR /bin
          列出目前工作目錄下所有檔案及目錄;目錄于名稱后加 "/", 可執(zhí)行檔于名稱后加 "*" :
          ls -AF

          名稱:more
          使用權(quán)限:所有使用者
          使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
          說明:類似 cat ,不過會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明文件,請按 h 。
          參數(shù):-num 一次顯示的行數(shù)
          -d 提示使用者,在畫面下方顯示 [Press space to continue, q to quit.] ,如果使用者按錯鍵,則會顯示 [Press h for instructions.] 而不是嗶聲
          -l 取消遇見特殊字元 ^L(送紙字元)時會暫停的功能
          -f 計算行數(shù)時,以實際上的行數(shù),而非自動換行過后的行數(shù)(有些單行字數(shù)太長的會被擴展為兩行或兩行以上)
          -p 不以卷動的方式顯示每一頁,而是先清除螢?zāi)缓笤亠@示內(nèi)容
          -c 跟 -p 相似,不同的是先顯示內(nèi)容再清除其他舊資料
          -s 當遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
          -u 不顯示下引號 (根據(jù)環(huán)境變數(shù) TERM 指定的 terminal 而有所不同)
          +/ 在每個檔案顯示前搜尋該字串(pattern),然后從該字串之后開始顯示
          +num 從第 num 行開始顯示
          fileNames 欲顯示內(nèi)容的檔案,可為復(fù)數(shù)個數(shù)
          范例:
          more -s testfile 逐頁顯示 testfile 之檔案內(nèi)容,如有連續(xù)兩行以上空白行則以一行空白行顯示。
          more +20 testfile 從第 20 行開始顯示 testfile 之檔案內(nèi)容。

          名稱:mv
          使用權(quán)限:所有使用者
          使用方式:
          mv [options] source dest
          mv [options] source... directory
          說明:將一個檔案移至另一檔案,或?qū)?shù)個檔案移至另一目錄。
          參數(shù):-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。

          范例:
          將檔案 aaa 更名為 bbb :
          mv aaa bbb
          將所有的C語言程式移至 Finished 子目錄中 :
          mv -i *.c

          名稱:rm
          使用權(quán)限:所有使用者
          使用方式:rm [options] name...
          說明:刪除檔案及目錄。
          參數(shù):
          -i 刪除前逐一詢問確認。
          -f 即使原檔案屬性設(shè)為唯讀,亦直接刪除,無需逐一確認。
          -r 將目錄及以下之檔案亦逐一刪除。
          范例:
          刪除所有C語言程式檔;刪除前逐一詢問確認 :
          rm -i *.c
          將 Finished 子目錄及子目錄中所有檔案刪除 :
          rm -r Finished

          名稱:rmdir
          使用權(quán)限:于目前目錄有適當權(quán)限的所有使用者
          使用方式: rmdir [-p] dirName
          說明: 刪除空的目錄。
          參數(shù): -p 是當子目錄被刪除后使它也成為空目錄的話,則順便一并刪除。
          范例:
          將工作目錄下,名為 AAA 的子目錄刪除 :
          rmdir AAA
          在工作目錄下的 BBB 目錄中,刪除名為 Test 的子目錄。若 Test 刪除后,BBB 目錄成為空目錄,則 BBB 亦予刪除。
          rmdir -p BBB/Test

          名稱:split
          使用權(quán)限:所有使用者
          使用方式:split [OPTION] [INPUT [PREFIX]]
          說明:將一個檔案分割成數(shù)個。而從 INPUT 分割輸出成固定大小的檔案,其檔名依序為 PREFIXaa, PREFIXab...;PREFIX 預(yù)設(shè)值為 ****x。若沒有 INPUT 檔或為 ****-,則從標準輸入讀進資料。
          參數(shù)
          -b, --bytes=SIZE
          SIZE 值為每一輸出檔案的大小,單位為 byte。
          -C, --line-bytes=SIZE每一輸出檔中,單行的最大 byte 數(shù)。
          -l, --lines=NUMBER
          NUMBER 值為每一輸出檔的列數(shù)大小。
          -NUMBER與 -l NUMBER 相同。
          --verbose于每個輸出檔被開啟前,列印出偵錯資訊到標準錯誤輸出。
          --help顯示輔助資訊然后離開。
          --version列出版本資訊然后離開。
          SIZE 可加入單位: b 代表 512, k 代表 1K, m 代表 1 Meg。

          范例:
          PostgresSQL 大型資料庫備份與回存:
          因 Postgres 允許表格大過你系統(tǒng)檔案的最大容量,所以要將表格 dump 到單一的檔案可能會有問題,使用 split進行檔案分割。
          % pg_dump dbname | split -b 1m - filename.dump.
          重新載入
          % createdb dbname
          % cat filename.dump.* | pgsql dbname

          名稱:touch
          使用權(quán)限:所有使用者
          使用方式:
          touch [-acfm]
          [-r reference-file] [--file=reference-file]
          [-t MMDDhhmm[[CC]YY][.ss]]
          [-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
          [--no-create] [--help] [--version]
          file1 [file2 ...]

          說明:
          touch 指令改變檔案的時間記錄。 ls -l 可以顯示檔案的時間記錄。
          參數(shù):
          a 改變檔案的讀取時間記錄。
          m 改變檔案的修改時間記錄。
          c 假如目的檔案不存在,不會建立新的檔案。與 --no-create 的效果一樣。
          f 不使用,是為了與其他 unix 系統(tǒng)的相容性而保留。
          r 使用參考檔的時間記錄,與 --file 的效果一樣。
          d 設(shè)定時間與日期,可以使用各種不同的格式。
          t 設(shè)定檔案的時間記錄,格式與 date 指令相同。
          --no-create 不會建立新檔案。
          --help 列出指令格式。
          --version 列出版本訊息。

          范例:
          最簡單的使用方式,將檔案的時候記錄改為現(xiàn)在的時間。若檔案不存在,系統(tǒng)會建立一個新的檔案。
          touch file
          touch file1 file2
          將 file 的時間記錄改為 5 月 6 日 18 點 3 分,公元兩千年。時間的格式可以參考 date 指令,至少需輸入 MMDDHHmm ,就是月日時與分。
          touch -c -t 05061803 file
          touch -c -t 050618032000 file
          將 file 的時間記錄改變成與 referencefile 一樣。
          touch -r referencefile file
          將 file 的時間記錄改成 5 月 6 日 18 點 3 分,公元兩千年。時間可以使用 am, pm 或是 24 小時的格式,日期可以使用其他格式如 6 May 2000 。
          touch -d "6:03pm" file
          touch -d "05/06/2000" file
          touch -d "6:03pm 05/06/2000" file
          名稱 : at
          使用權(quán)限 : 所有使用者
          使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME
          說明 : at 可以讓使用者指定在 TIME 這個特定時刻執(zhí)行某個程式或指令,TIME 的格式是 HH:MM其中的 HH 為小時,MM 為分鐘,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 點鍾)等口語詞。
          如果想要指定超過一天內(nèi)的時間,則可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分鐘,DD 是第幾日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 時間間隔來彈性指定時間,其中的時間間隔可以是 minutes, hours, days, weeks另外,使用者也可指定 today 或 tomorrow 來表示今天或明天。當指定了時間并按下 enter 之后,at 會進入交談模式并要求輸入指令或程式,當你輸入完后按下 ctrl+D 即可完成所有動作,至于執(zhí)行的結(jié)果將會寄回你的帳號中。
          參數(shù):
          -V : 印出版本編號
          -q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個
          -m : 即使程式/指令執(zhí)行完成后沒有輸出結(jié)果, 也要寄封信給使用者
          -f file : 讀入預(yù)先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案后再一次讀入
          -l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
          -d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
          -v : 列出所有已經(jīng)完成但尚未刪除的指定
          例子 :
          三天后的下午 5 點鍾執(zhí)行 /bin/ls :
          at 5pm + 3 days /bin/ls
          三個星期后的下午 5 點鍾執(zhí)行 /bin/ls :
          at 5pm + 2 weeks /bin/ls
          明天的 17:20 執(zhí)行 /bin/date :
          at 17:20 tomorrow /bin/date
          1999 年的最后一天的最后一分鐘印出 the end of world !
          at 23:59 12/31/1999 echo the end of world !

          posted @ 2006-12-20 16:17 flustar 閱讀(453) | 評論 (0)編輯 收藏

          <%@ page language="java" contentType="image/jpeg"
          ??? pageEncoding="gb2312"%>
          <%@ page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>

          <%!
          ?? Color getRandColor(int fc,int bc){
          ?Random rand=new Random();
          ?if(fc>255) fc=255;
          ?if(bc>255) bc=255;
          ?int r=fc+rand.nextInt(bc-fc);
          ?int g=fc+rand.nextInt(bc-fc);
          ?int b=fc+rand.nextInt(bc-fc);
          ?return new Color(r,g,b);
          }
          %>
          <%
          ? //設(shè)置頁面不緩存
          ? response.setHeader("Pragma","No-cache");
          ? response.setHeader("Cache-Control","no-cache");
          ? response.setDateHeader("Expires",0);
          ?
          ? //在內(nèi)存中創(chuàng)建圖像
          ? int width=60,height=20;
          ? BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
          ?
          ? //獲取圖像
          ? Graphics g=image.getGraphics();
          ? //生成隨機類
          ? Random rand=new Random();
          ? //設(shè)定背景顏色
          ? g.setColor(getRandColor(200,250));
          ? g.fillRect(0,0,width,height);
          ? //設(shè)定字體
          ? g.setFont(new Font("Times New Roman",Font.PLAIN,18));
          //隨機產(chǎn)生155條干擾線,使圖象中的認證碼不易被其它程序探測到
          ?g.setColor(getRandColor(160,200));
          ?for(int i=0;i<155;i++){
          ? int x=rand.nextInt(width);
          ? int y=rand.nextInt(height);
          ? int x1=rand.nextInt(12);
          ? int y1=rand.nextInt(12);
          ? g.drawLine(x,y,x+x1,y+y1);
          ?
          ?}
          ?//取隨機產(chǎn)生的4位驗證碼
          ?String sRand="";
          ?for(int i=0;i<4;i++){
          ? String strRand=String.valueOf(rand.nextInt(10));
          ? sRand+=strRand;
          ? //將驗證碼顯示到圖像中
          ? g.setColor(new Color(20+rand.nextInt(110),20+rand.nextInt(110),20+rand.nextInt(110)));
          ? g.drawString(strRand,13*i+6,16);

          ?}
          ?//將驗證碼放入session
          ? session.setAttribute("rand",sRand);
          ?
          ?g.dispose();
          //輸出圖象到頁面
          ?ImageIO.write(image, "JPEG", response.getOutputStream());

          ?

          %>

          posted @ 2006-12-20 15:06 flustar 閱讀(608) | 評論 (0)編輯 收藏

          一、在數(shù)據(jù)庫數(shù)據(jù)庫中建立三個表
          1.city
          字段:
          districtname,locationid,districtid
          2.province
          字段:
          locationid,locationname
          3.village
          字段:
          villageid,villagename,districtid
          二、代碼如下:
          <%@ page language="java" contentType="text/html; charset=gb2312"
          ??? pageEncoding="gb2312"%>
          <%@ page import="java.sql.* "%>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
          <title>jsp實現(xiàn)三級聯(lián)動的下拉列表框效果</title>
          <%
          ?? Connection conn=null;
          ?? Statement stmt=null;
          ?? ResultSet rs=null,rs1=null,rs2=null;
          ?? String sql;
          ?? int count;
          ?? int count2;
          ?? String drivername="com.microsoft.jdbc.sqlserver.SQLServerDriver";
          ?? String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=SJLD";
          ?? try{
          ??? Class.forName(drivername);
          ??? conn=DriverManager.getConnection(url,"sa","");
          ??? stmt=conn.createStatement();
          ??? sql="select * from city order by locationid asc";
          ??? rs=stmt.executeQuery(sql);
          ?? }catch(SQLException e){
          ??? System.out.println(e.getMessage());
          ?? }
          ??
          %>
          <script language="javascript">
          var onecount;
          onecount=0;
          subcat=new Array();
          <%
          count=0;
          while(rs.next()){
          ?%>
          ?subcat[<%=count%>]=new Array("<%=rs.getString("districtname")%>","<%=rs.getInt("locationid")%>","<%=rs.getInt("districtid")%>");
          ?<%
          ?count = count + 1 ;

          }
          rs.close();
          rs=null;
          %>
          onecount=<%=count%>;
          function changelocation(locationid){
          document.myform.smalllocation.length=0;
          var locationid=locationid;
          var i;
          document.myform.smalllocation.options[0]=new Option('==所選城市的地區(qū)==','');
          for(i=0;i<onecount;i++){
          if (subcat[i][1] == locationid)
          {
          document.myform.smalllocation.options[document.myform.smalllocation.length] = new Option(subcat[i][0], subcat[i][2]);
          }
          }

          ??
          }
          </script>
          <%
          ?sql="select * from village order by districtid asc";
          ?rs2=stmt.executeQuery(sql);
          %>
          <script language="javascript">
          var onecount2;
          onecount2=0;
          subcat2=new Array();
          <%
          count2=0;
          while(rs2.next()){
          ?%>
          ?subcat2[<%=count2%>]=new Array("<%=rs2.getString("villagename")%>","<%=rs2.getInt("districtid")%>","<%=rs2.getInt("villageid")%>");
          ?<%
          ?count2 = count2 + 1 ;

          }
          rs2.close();
          rs2=null;
          %>
          onecount2=<%=count2%>;
          function changelocation2(districtid)
          {
          document.myform.village.length = 0;

          var districtid=districtid;
          var j;
          document.myform.village.options[0] = new Option('==所選地區(qū)的縣區(qū)==','');
          for (j=0;j < onecount2; j++)
          {
          ? if (subcat2[j][1] == districtid)
          ?{
          ? document.myform.village.options[document.myform.village.length] = new Option(subcat2[j][0], subcat2[j][2]);
          ? }
          }

          }
          </script>

          </head>
          <body>
          <form name="myform" method="post">
          分類:<select name="biglocation" onChange="changelocation(document.myform.biglocation.options[document.myform.biglocation.selectedIndex].value)" size="1">
          <option selected>請選擇你所在的省份</option>
          <%
          ? sql ="select * from province order by locationname asc";
          ?rs1 = stmt.executeQuery(sql);
          ?while(rs1.next()){
          ?%>
          ?<option value="<%=rs1.getInt("locationid")%>"><%=rs1.getString("locationname")%></option>

          ?<% }
          ?
          ?
          ?rs1.close();
          ?rs1 = null;
          ?conn.close();
          ?conn =null;


          %>
          </select><select name="smalllocation" onChange="changelocation2(document.myform.smalllocation.options[document.myform.smalllocation.selectedIndex].value)">
          <option selected value="">==所有地區(qū)==</option>
          </select><select name="village" size="1">
          <option selected>==所有縣區(qū)==</option>
          </select>
          </form>

          </body>
          </html>

          posted @ 2006-12-20 15:03 flustar 閱讀(4598) | 評論 (4)編輯 收藏

          僅列出標題
          共6頁: 上一頁 1 2 3 4 5 6 

          posts - 146, comments - 143, trackbacks - 0, articles - 0

          Copyright © flustar

          主站蜘蛛池模板: 毕节市| 江阴市| 青田县| 余庆县| 临清市| 阜宁县| 雅江县| 海兴县| 茌平县| 吉首市| 济南市| 泌阳县| 贡觉县| 中超| 靖州| 武威市| 榆中县| 永和县| 七台河市| 安溪县| 体育| 华亭县| 日照市| 天台县| 定日县| 庆云县| 新疆| 阜新| 云浮市| 衢州市| 江津市| 和田市| 郯城县| 澄迈县| 甘泉县| 墨江| 灵璧县| 汕头市| 饶平县| 曲麻莱县| 门头沟区|