亚洲色无码专区在线观看,国产亚洲精久久久久久无码AV,精品国产日韩亚洲一区http://m.tkk7.com/liuquanqi/javazh-cnMon, 12 May 2025 06:35:58 GMTMon, 12 May 2025 06:35:58 GMT60各種數(shù)據(jù)庫如何讀取前N條記錄 http://m.tkk7.com/liuquanqi/archive/2008/02/22/181348.html☆℡齊☆℡齊Fri, 22 Feb 2008 03:54:00 GMThttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181348.htmlhttp://m.tkk7.com/liuquanqi/comments/181348.htmlhttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181348.html#Feedback0http://m.tkk7.com/liuquanqi/comments/commentRss/181348.htmlhttp://m.tkk7.com/liuquanqi/services/trackbacks/181348.html各種數(shù)據(jù)庫如何讀取前N條記錄
1. ORACLE
Select * FROM TABLE1 Where ROWNUM<=N

2. INFORMIX
Select FIRST N * FROM TABLE1 where 1=1

3. MYSQL
Select * FROM TABLE1 where 1=1 LIMIT N
(以上三種是俺工作中用到的數(shù)據(jù)庫)

4. DB2
Select * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM Where ROWNUM<=N
或者
Select COLUMN FROM TABLE where 1=1 FETCH FIRST N ROWS ONLY

5. SQL SERVER
Select TOP N * FROM TABLE1 where 1=1
or
SET ROWCOUNT N Select * FROM TABLE1 where 1=1 SET ROWCOUNT N1

6. SYBASE
SET ROWCOUNT N Select * FROM TABLE1 where 1=1 SET ROWCOUNT N1


7. FOXPRO
Select * TOP N FROM TABLE orDER BY COLUMN

8. ACCESS
Select TOP N * FROM TABLE1 where 1=1



☆℡齊 2008-02-22 11:54 發(fā)表評論
]]>
DB2數(shù)據(jù)庫導(dǎo)出表結(jié)構(gòu)與導(dǎo)入、導(dǎo)出表數(shù)據(jù) http://m.tkk7.com/liuquanqi/archive/2008/02/22/181345.html☆℡齊☆℡齊Fri, 22 Feb 2008 03:53:00 GMThttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181345.htmlhttp://m.tkk7.com/liuquanqi/comments/181345.htmlhttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181345.html#Feedback1http://m.tkk7.com/liuquanqi/comments/commentRss/181345.htmlhttp://m.tkk7.com/liuquanqi/services/trackbacks/181345.html方法一

在控制中心的對象視圖窗口中,選擇所要導(dǎo)出表結(jié)構(gòu)的數(shù)據(jù)表,按住CtrlShift可多選,單擊鼠標右鍵,選擇->生成DDL即可。

方法二

第一步:打開DB2的命令行工具,在DB2安裝目錄的BIN文件夾下新建一個文件夾data,并且進入該目錄。

創(chuàng)建該目錄: mkdir data
進入該目錄: cd data
|

第二步:導(dǎo)出表結(jié)構(gòu),命令行如下:
db2look -d dbname -e -a -x -i username -w password -o ddlfile.sql


執(zhí)行成功之后,你會在剛才新建的文件夾下找到該sql文件。

第三步:導(dǎo)出數(shù)據(jù),命令行如下:
db2move databasename export -u username -p password

至此,導(dǎo)出數(shù)據(jù)結(jié)束。

2導(dǎo)出表中數(shù)據(jù)

export to [path(:D:"TABLE1.ixf)] of ixf select [字段(: * or col1,col2,col3)] from TABLE1;

export to [path(:D:"TABLE1.del)] of del select [字段(: * or col1,col2,col3)] from TABLE1;

導(dǎo)入表的數(shù)據(jù)

import from [path(:D:"TABLE1.ixf)] of ixf insert into TABLE1;

load from [path(:D:"TABLE1.ixf)] of ixf insert into TABLE1;

load from [path(:D:"TABLE1.ixf)] of ixf replace into TABLE1; // 裝入數(shù)據(jù)前,先刪除已存在記錄

load from [path(:D:"TABLE1.ixf)] of ixf restart into TABLE1; // 當(dāng)裝入失敗時,重新執(zhí)行,并記錄導(dǎo)出結(jié)果和錯誤信息

import from [path(:D:"TABLE1.ixf)] of ixf savecount 1000 messages [path(:D:"msg.txt)] insert into TABLE1;// 其中,savecount表示完成每1000條操作,記錄一次.

存在自增長字段的數(shù)據(jù)導(dǎo)入:

load from [path(:D:"TABLE1.ixf)] of ixf modified by identityignore insert into TABLE1;// 加入modified by identityignore.

解除裝入數(shù)據(jù)時,發(fā)生的檢查掛起.

SET INTEGRITY FOR TABLE1 CHECK IMMEDIATE UNCHECKED;

命令只對數(shù)據(jù)通過約束檢查的表有效,如果執(zhí)行還不能解除,有必要檢查數(shù)據(jù)的完整性,是否不符合約束條件,并試圖重新整理數(shù)據(jù),再執(zhí)行裝入操作.

另外,對loadimport,字面上的區(qū)別是:裝入和導(dǎo)入,但仍未理解兩者之間的區(qū)別.

只是性能上load顯然優(yōu)于import.load 需要更多的權(quán)限)



☆℡齊 2008-02-22 11:53 發(fā)表評論
]]>
在Linux下創(chuàng)建CVS用戶:http://m.tkk7.com/liuquanqi/archive/2008/02/22/181338.html☆℡齊☆℡齊Fri, 22 Feb 2008 03:42:00 GMThttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181338.htmlhttp://m.tkk7.com/liuquanqi/comments/181338.htmlhttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181338.html#Feedback0http://m.tkk7.com/liuquanqi/comments/commentRss/181338.htmlhttp://m.tkk7.com/liuquanqi/services/trackbacks/181338.html
在Linux下創(chuàng)建CVS用戶:
1、
cd /home/cvsroot  進入cvs根目錄
ls

2、
perl passwdgen.pl "密碼"  創(chuàng)建密碼并生成加密文件

3、
vi cvsRoot/passwd   打開文件

4、
name:第2步生成的密碼:cvsroot

5、
:s  保存



☆℡齊 2008-02-22 11:42 發(fā)表評論
]]>
將.class文件打成Jar包http://m.tkk7.com/liuquanqi/archive/2008/02/22/181337.html☆℡齊☆℡齊Fri, 22 Feb 2008 03:41:00 GMThttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181337.htmlhttp://m.tkk7.com/liuquanqi/comments/181337.htmlhttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181337.html#Feedback0http://m.tkk7.com/liuquanqi/comments/commentRss/181337.htmlhttp://m.tkk7.com/liuquanqi/services/trackbacks/181337.html 輸入  jar cvf 名稱.jar *.*  回車即可。

☆℡齊 2008-02-22 11:41 發(fā)表評論
]]>
環(huán)境變量的配置http://m.tkk7.com/liuquanqi/archive/2008/02/22/181336.html☆℡齊☆℡齊Fri, 22 Feb 2008 03:35:00 GMThttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181336.htmlhttp://m.tkk7.com/liuquanqi/comments/181336.htmlhttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181336.html#Feedback0http://m.tkk7.com/liuquanqi/comments/commentRss/181336.htmlhttp://m.tkk7.com/liuquanqi/services/trackbacks/181336.html1. (新建)JAVA_HOME:
變量名:JAVA_HOME
變量值:C:\Program Files\Java\jdk1.5.0_05


2. (新建)CLASSPATH:
變量名:CLASS_PATH
變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

            (注意:點號不能省略,表示當(dāng)前目錄)

3. 編輯PATH的變量值,在后面加上 ;%JAVA_HOME%\bin (注意:要有分號隔開)
變量名:Path
變量值:;%JAVA_HOME%\bin;%TOMCAT_HOME%\bin

變量名:TOMCAT_HOME
變量值:D:\Tomcat 5.5


完成后用命令簡單測試一下: java -version


☆℡齊 2008-02-22 11:35 發(fā)表評論
]]>
myeclipse性能提升http://m.tkk7.com/liuquanqi/archive/2008/02/22/181334.html☆℡齊☆℡齊Fri, 22 Feb 2008 03:33:00 GMThttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181334.htmlhttp://m.tkk7.com/liuquanqi/comments/181334.htmlhttp://m.tkk7.com/liuquanqi/archive/2008/02/22/181334.html#Feedback0http://m.tkk7.com/liuquanqi/comments/commentRss/181334.htmlhttp://m.tkk7.com/liuquanqi/services/trackbacks/181334.html1. 加大JVM的非堆內(nèi)存,
在eclipse的目錄下打開eclipse.ini,如果其中沒有以下代碼,將下列代碼加入即可。
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M

2. 去除不需要加載的模塊
一個系統(tǒng)20%的功能往往能夠滿足80%的需求,MyEclipse也不例外,我們在大多數(shù)時候只需要20%的系統(tǒng)功能,所以可以將一些不使用的模塊禁止加載啟動。通過Windows - Preferences打開配置窗口,依次選擇左側(cè)的General - Startup and Shutdown,這個時候在右側(cè)就顯示出了Eclipse啟動時加載的模塊,可以根據(jù)自己的實際情況去除一些模塊。

3. 取消MyEclipse在啟動時自動驗證項目配置文件
默認情況下MyEclipse在啟動的時候會自動驗證每個項目的配置文件,這是一個非常耗時的過程,可以在Preferences窗口依次選擇MyEclipse - Validation,然后在右側(cè)的Validator列表中只保留 Manual 項就可以了。如果需要驗證的時候只需要選中文件,然后右鍵選擇 MyEclipse - Run Validation就可以了。



☆℡齊 2008-02-22 11:33 發(fā)表評論
]]>
Hibernate的一級緩存和二級緩存http://m.tkk7.com/liuquanqi/archive/2008/01/24/177590.html☆℡齊☆℡齊Thu, 24 Jan 2008 14:19:00 GMThttp://m.tkk7.com/liuquanqi/archive/2008/01/24/177590.htmlhttp://m.tkk7.com/liuquanqi/comments/177590.htmlhttp://m.tkk7.com/liuquanqi/archive/2008/01/24/177590.html#Feedback0http://m.tkk7.com/liuquanqi/comments/commentRss/177590.htmlhttp://m.tkk7.com/liuquanqi/services/trackbacks/177590.html
  緩存的介質(zhì)一般是內(nèi)存,所以讀寫速度很快。但如果緩存中存放的數(shù)據(jù)量非常大時,也會用硬盤作為緩存介質(zhì)。緩存的實現(xiàn)不僅僅要考慮存儲的介質(zhì),還要考慮到管理緩存的并發(fā)訪問和緩存數(shù)據(jù)的生命周期。

  Hibernate的緩存包括Session的緩存和SessionFactory的緩存,其中SessionFactory的緩存又可以分為兩類:內(nèi)置緩存和外置緩存。Session的緩存是內(nèi)置的,不能被卸載,也被稱為Hibernate的第一級緩存。SessionFactory的內(nèi)置緩存和Session的緩存在實現(xiàn)方式上比較相似,前者是SessionFactory對象的一些集合屬性包含的數(shù)據(jù),后者是指Session的一些集合屬性包含的數(shù)據(jù)。SessionFactory的內(nèi)置緩存中存放了映射元數(shù)據(jù)和預(yù)定義SQL語句,映射元數(shù)據(jù)是映射文件中數(shù)據(jù)的拷貝,而預(yù)定義SQL語句是在Hibernate初始化階段根據(jù)映射元數(shù)據(jù)推導(dǎo)出來,SessionFactory的內(nèi)置緩存是只讀的,應(yīng)用程序不能修改緩存中的映射元數(shù)據(jù)和預(yù)定義SQL語句,因此SessionFactory不需要進行內(nèi)置緩存與映射文件的同步。SessionFactory的外置緩存是一個可配置的插件。在默認情況下,SessionFactory不會啟用這個插件。外置緩存的數(shù)據(jù)是數(shù)據(jù)庫數(shù)據(jù)的拷貝,外置緩存的介質(zhì)可以是內(nèi)存或者硬盤。SessionFactory的外置緩存也被稱為Hibernate的第二級緩存。

  Hibernate的這兩級緩存都位于持久化層,存放的都是數(shù)據(jù)庫數(shù)據(jù)的拷貝,那么它們之間的區(qū)別是什么呢?為了理解二者的區(qū)別,需要深入理解持久化層的緩存的兩個特性:緩存的范圍和緩存的并發(fā)訪問策略。

  持久化層的緩存的范圍

  緩存的范圍決定了緩存的生命周期以及可以被誰訪問。緩存的范圍分為三類。

  1 事務(wù)范圍:緩存只能被當(dāng)前事務(wù)訪問。緩存的生命周期依賴于事務(wù)的生命周期,當(dāng)事務(wù)結(jié)束時,緩存也就結(jié)束生命周期。在此范圍下,緩存的介質(zhì)是內(nèi)存。事務(wù)可以是數(shù)據(jù)庫事務(wù)或者應(yīng)用事務(wù),每個事務(wù)都有獨自的緩存,緩存內(nèi)的數(shù)據(jù)通常采用相互關(guān)聯(lián)的的對象形式。

  2 進程范圍:緩存被進程內(nèi)的所有事務(wù)共享。這些事務(wù)有可能是并發(fā)訪問緩存,因此必須對緩存采取必要的事務(wù)隔離機制。緩存的生命周期依賴于進程的生命周期,進程結(jié)束時,緩存也就結(jié)束了生命周期。進程范圍的緩存可能會存放大量的數(shù)據(jù),所以存放的介質(zhì)可以是內(nèi)存或硬盤。緩存內(nèi)的數(shù)據(jù)既可以是相互關(guān)聯(lián)的對象形式也可以是對象的松散數(shù)據(jù)形式。松散的對象數(shù)據(jù)形式有點類似于對象的序列化數(shù)據(jù),但是對象分解為松散的算法比對象序列化的算法要求更快。

  3 集群范圍:在集群環(huán)境中,緩存被一個機器或者多個機器的進程共享。緩存中的數(shù)據(jù)被復(fù)制到集群環(huán)境中的每個進程節(jié)點,進程間通過遠程通信來保證緩存中的數(shù)據(jù)的一致性,緩存中的數(shù)據(jù)通常采用對象的松散數(shù)據(jù)形式。

  對大多數(shù)應(yīng)用來說,應(yīng)該慎重地考慮是否需要使用集群范圍的緩存,因為訪問的速度不一定會比直接訪問數(shù)據(jù)庫數(shù)據(jù)的速度快多少。

  持久化層可以提供多種范圍的緩存。如果在事務(wù)范圍的緩存中沒有查到相應(yīng)的數(shù)據(jù),還可以到進程范圍或集群范圍的緩存內(nèi)查詢,如果還是沒有查到,那么只有到數(shù)據(jù)庫中查詢。事務(wù)范圍的緩存是持久化層的第一級緩存,通常它是必需的;進程范圍或集群范圍的緩存是持久化層的第二級緩存,通常是可選的。

  持久化層的緩存的并發(fā)訪問策略

  當(dāng)多個并發(fā)的事務(wù)同時訪問持久化層的緩存的相同數(shù)據(jù)時,會引起并發(fā)問題,必須采用必要的事務(wù)隔離措施。

  在進程范圍或集群范圍的緩存,即第二級緩存,會出現(xiàn)并發(fā)問題。因此可以設(shè)定以下四種類型的并發(fā)訪問策略,每一種策略對應(yīng)一種事務(wù)隔離級別。

  事務(wù)型:僅僅在受管理環(huán)境中適用。它提供了Repeatable Read事務(wù)隔離級別。對于經(jīng)常被讀但很少修改的數(shù)據(jù),可以采用這種隔離類型,因為它可以防止臟讀和不可重復(fù)讀這類的并發(fā)問題。

  讀寫型:提供了Read Committed事務(wù)隔離級別。僅僅在非集群的環(huán)境中適用。對于經(jīng)常被讀但很少修改的數(shù)據(jù),可以采用這種隔離類型,因為它可以防止臟讀這類的并發(fā)問題。

  非嚴格讀寫型:不保證緩存與數(shù)據(jù)庫中數(shù)據(jù)的一致性。如果存在兩個事務(wù)同時訪問緩存中相同數(shù)據(jù)的可能,必須為該數(shù)據(jù)配置一個很短的數(shù)據(jù)過期時間,從而盡量避免臟讀。對于極少被修改,并且允許偶爾臟讀的數(shù)據(jù),可以采用這種并發(fā)訪問策略。   只讀型:對于從來不會修改的數(shù)據(jù),如參考數(shù)據(jù),可以使用這種并發(fā)訪問策略。

  事務(wù)型并發(fā)訪問策略是事務(wù)隔離級別最高,只讀型的隔離級別最低。事務(wù)隔離級別越高,并發(fā)性能就越低。

  什么樣的數(shù)據(jù)適合存放到第二級緩存中?

  1、很少被修改的數(shù)據(jù)

  2、不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)的數(shù)據(jù)

  3、不會被并發(fā)訪問的數(shù)據(jù)

  4、參考數(shù)據(jù)

  不適合存放到第二級緩存的數(shù)據(jù)?

  1、經(jīng)常被修改的數(shù)據(jù)

  2、財務(wù)數(shù)據(jù),絕對不允許出現(xiàn)并發(fā)

  3、與其他應(yīng)用共享的數(shù)據(jù)。

  Hibernate的二級緩存

  如前所述,Hibernate提供了兩級緩存,第一級是Session的緩存。由于Session對象的生命周期通常對應(yīng)一個數(shù)據(jù)庫事務(wù)或者一個應(yīng)用事務(wù),因此它的緩存是事務(wù)范圍的緩存。第一級緩存是必需的,不允許而且事實上也無法比卸除。在第一級緩存中,持久化類的每個實例都具有唯一的OID。

  第二級緩存是一個可插拔的的緩存插件,它是由SessionFactory負責(zé)管理。由于SessionFactory對象的生命周期和應(yīng)用程序的整個過程對應(yīng),因此第二級緩存是進程范圍或者集群范圍的緩存。這個緩存中存放的對象的松散數(shù)據(jù)。第二級對象有可能出現(xiàn)并發(fā)問題,因此需要采用適當(dāng)?shù)牟l(fā)訪問策略,該策略為被緩存的數(shù)據(jù)提供了事務(wù)隔離級別。緩存適配器用于把具體的緩存實現(xiàn)軟件與Hibernate集成。第二級緩存是可選的,可以在每個類或每個集合的粒度上配置第二級緩存。

  Hibernate的二級緩存策略的一般過程如下:

  1) 條件查詢的時候,總是發(fā)出一條select * from table_name where …. (選擇所有字段)這樣的SQL語句查詢數(shù)據(jù)庫,一次獲得所有的數(shù)據(jù)對象。

  2) 把獲得的所有數(shù)據(jù)對象根據(jù)ID放入到第二級緩存中。

  3) 當(dāng)Hibernate根據(jù)ID訪問數(shù)據(jù)對象的時候,首先從Session一級緩存中查;查不到,如果配置了二級緩存,那么從二級緩存中查;查不到,再查詢數(shù)據(jù)庫,把結(jié)果按照ID放入到緩存。

  4) 刪除、更新、增加數(shù)據(jù)的時候,同時更新緩存。

  Hibernate的二級緩存策略,是針對于ID查詢的緩存策略,對于條件查詢則毫無作用。為此,Hibernate提供了針對條件查詢的Query緩存。

  Hibernate的Query緩存策略的過程如下:

  1) Hibernate首先根據(jù)這些信息組成一個Query Key,Query Key包括條件查詢的請求一般信息:SQL, SQL需要的參數(shù),記錄范圍(起始位置rowStart,最大記錄個數(shù)maxRows),等。

  2) Hibernate根據(jù)這個Query Key到Query緩存中查找對應(yīng)的結(jié)果列表。如果存在,那么返回這個結(jié)果列表;如果不存在,查詢數(shù)據(jù)庫,獲取結(jié)果列表,把整個結(jié)果列表根據(jù)Query Key放入到Query緩存中。

  3) Query Key中的SQL涉及到一些表名,如果這些表的任何數(shù)據(jù)發(fā)生修改、刪除、增加等操作,這些相關(guān)的Query Key都要從緩存中清空。


☆℡齊 2008-01-24 22:19 發(fā)表評論
]]>
struts-config.xml拆分問題http://m.tkk7.com/liuquanqi/archive/2007/06/01/121323.html☆℡齊☆℡齊Fri, 01 Jun 2007 03:11:00 GMThttp://m.tkk7.com/liuquanqi/archive/2007/06/01/121323.html一種方法: 
<param-name>config</param-name>  
  <param-value>/  
  WEB-INF/struts-config.xml,/WEB-INF/struts-one.xml,/WEB-INF/struts-two.xml  
  </param-value>   
另一種方法:   
          <init-param>  
              <param-name>config</param-name>  
              <param-value>/WEB-INF/conf/struts-default.xml</param-value>  
          </init-param>  
          <init-param>  
              <param-name>config/module1</param-name>  
              <param-value>/WEB-INF/conf/struts-module1.xml</param-value>  
          </init-param>  
  后一種方法我覺得多用于分模塊,前一種方法直接簡便!  


☆℡齊 2007-06-01 11:11 發(fā)表評論
]]>
webwork 中文亂碼問題 表單字段驗證 標簽的用法http://m.tkk7.com/liuquanqi/archive/2007/03/19/104692.html☆℡齊☆℡齊Mon, 19 Mar 2007 03:18:00 GMThttp://m.tkk7.com/liuquanqi/archive/2007/03/19/104692.htmlhttp://m.tkk7.com/liuquanqi/comments/104692.htmlhttp://m.tkk7.com/liuquanqi/archive/2007/03/19/104692.html#Feedback0http://m.tkk7.com/liuquanqi/comments/commentRss/104692.htmlhttp://m.tkk7.com/liuquanqi/services/trackbacks/104692.htmlWebWork中文問題解決:?
a)在webwork.properties文件中,添加:?
webwork.i18n.encoding?=?UTF-8?
它主要是用來設(shè)置WebWork?UI標簽庫的編碼,?
要保持你的頁面和編碼與你在encoding設(shè)置的一致,否則重復(fù)編碼出現(xiàn)亂碼.?
如果不設(shè)置它將通過System.getProperty("file.encoding"來獲取默認字符編碼。
?
PS:2.1.6版本中存在BUG,不能夠使用定義的encoding.?

b)寫一個Filter,將編碼設(shè)置為UTF-8。?
例如SetCharacterEncodingFilter。它解決Action數(shù)據(jù)傳遞時的編碼,但是不能解決屬性在Action或是Model賦值的編碼.?
c)velocity.properties文件中,添加:?
input.encoding=UTF-8?
output.encoding=UTF-8?
default.contentType=text/html;?charset=UTF-8?
它是用來設(shè)置.vm頁面的編碼方式.?

d)使用freemarker作為view層,可以再web.xml中指定字符屬性;

<servlet>
????????<servlet-name>freemarker</servlet-name>
????????<servlet-class>com.opensymphony.webwork.views.freemarker.FreemarkerServlet</servlet-class>
????????<!--?FreemarkerServlet?settings:?-->
????????<init-param>
????????????<param-name>TemplatePath</param-name>
????????????<param-value>/templates/</param-value>
????????</init-param>
????????<init-param>
????????????<param-name>NoCache</param-name>
????????????<param-value>true</param-value>
????????</init-param>
????????<init-param>
????????????<param-name>ContentType</param-name>
????????????<param-value>text/html</param-value>
????????</init-param>
???????<!--????????指定編碼?????????-->
????????<init-param>
????????????<param-name>default_encoding</param-name>
????????????<param-value>UTF-8</param-value>
????????</init-param>

????????<init-param>
????????????<param-name>number_format</param-name>
????????????<param-value>0.##########</param-value>
????????</init-param>
????????<load-on-startup>1</load-on-startup>
????</servlet>

2.WebWork表單字段驗證:?
a)Action必須繼承ActionSurport;?
b)在xwork.xml文件必須定義?
<action?name="hello"?class="test.HelloAction">?
???<result?name="success">/result.jsp</result>????
???<result?name="input">?
????????<param?value="/location">/index.jsp</param>?
???</result>???
???<interceptor-ref?name="validationWorkflowStack"/>?
</action>?
其中input?是必須定義的,另外要使用?
<param?value="location">/index.jsp</param>?
才可以在驗證錯誤后回到輸入頁面。
?
c)在Action類名-validation.xml文件必須與Action類在同一目錄下,?
d)定義的<message/>元素,當(dāng)提示消息為中文時候必須在文件頭定義:?
<?xml?version="1.0"?encoding="GBK"?>?

3.WebWork的標簽的用法:?
a)需要提交的表單項name屬性值均為常量,因此均以單引號包圍,以與Model中的變量相匹配,

<ww:form?namespace="'/test'"?action="'ftltest'"?method="'POST'">
???????????????<ww:textfield?name="'msg'"?label="消息"></ww:textfield>
???????????????<ww:submit?value="/提交"?/>
????</ww:form>
b)<ww:radio/>和<ww:select/>標簽中的list的屬性可以使用Map類型,以key和value對應(yīng)listKey,listValue屬性.

第一種寫法:

<ww:select?label="'Months'"?
????????name="'months'"?
????????????list="#{'01':'Jan',?'02':'Feb',?[]}"?
????????value="/01"
????????required="true"?
/>

第二種寫法:

<ww:select?label="'Pets'"?
????????name="'petIds'"?
????????list="petDao.pets"?
????????listKey="id"?
????????listValue="name"?
????????multiple="true"?
????????size="3"?
????????required="true"?
/>

<!--petDao.pets為普通對象,使用其id為KEY,name為value-->
<!--如果petDao.pets為Map類型,則可省略listKey和listValue屬性-->

c)WebWork2中的UI標簽的模板定制,可以在webwork.properties文件中指定相關(guān)屬性,并且定制模板文件;

webwork.ui.theme=xhtml?????//可用的theme還有simple;
webwork.ui.templateDir=template????//模板路徑;
#sets?the?default?template?type.?Either?vm?or?jsp
webwork.ui.templateSuffix=vm???//模板類型,還支持JSP模板,開發(fā)可以使用FreeMarker定制模板;


4.WebWork的國際化使用:?
a)<ww:i18?name="'message'">?
????????<ww:text?name="'key'"/>?
??</ww:i18>?
使用message_zh_CN.properties中包含key=****;?

b)在Action中的getText()方法資源來自Action的類名.properties

c)在Action中可以使用getTexts()獲得具體的ResourceBundle;

d)在view層一樣可以使用getText()方法;


????????<ww:i18n?name="'messages'">
????????????<!--在messages.properties文件中有key->index_msg-->????????
????????????????<ww property?value="getText('index_msg')"/>
????????</ww:i18n>

☆℡齊 2007-03-19 11:18 發(fā)表評論
]]>
身份證驗證http://m.tkk7.com/liuquanqi/archive/2007/03/19/104689.html☆℡齊☆℡齊Mon, 19 Mar 2007 03:10:00 GMThttp://m.tkk7.com/liuquanqi/archive/2007/03/19/104689.htmlhttp://m.tkk7.com/liuquanqi/comments/104689.htmlhttp://m.tkk7.com/liuquanqi/archive/2007/03/19/104689.html#Feedback2http://m.tkk7.com/liuquanqi/comments/commentRss/104689.htmlhttp://m.tkk7.com/liuquanqi/services/trackbacks/104689.html/**
?身份證
?**/

function checkIdcard(idcard){
var Errors=new Array(
"true",
"身份證號碼位數(shù)不對!",
"身份證號碼出生日期超出范圍或含有非法字符!",
"身份證號碼校驗錯誤!",
"身份證地區(qū)非法!"
);
var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"內(nèi)蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",51:"四川",52:"貴州",53:"云南",54:"西藏",61:"陜西",62:"甘肅",63:"青海",64:"寧夏",65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外"}

var idcard,Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
//地區(qū)檢驗
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
//身份號碼位數(shù)及格式檢驗
switch(idcard.length){
case 15:
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//測試出生日期的合法性
} else {
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//測試出生日期的合法性
}
if(ereg.test(idcard)) return Errors[0];
else return Errors[2];
break;
case 18:
//18位身份號碼檢測
//出生日期的合法性檢查
//閏年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//閏年出生日期的合法性正則表達式
} else {
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正則表達式
}
if(ereg.test(idcard)){//測試出生日期的合法性
//計算校驗位
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
+ parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);//判斷校驗位

ZJJYW = idcard_array[17].toUpperCase();
if(M == ZJJYW) return Errors[0]; //檢測ID的校驗位
else return Errors[3];
}
else return Errors[2];
break;
default:
return Errors[1];
break;
}

}



☆℡齊 2007-03-19 11:10 發(fā)表評論
]]>
主站蜘蛛池模板: 免费无码一区二区三区蜜桃大| 成a人片亚洲日本久久| 暖暖免费高清日本中文| 猫咪免费人成在线网站| 亚洲精品高清视频| 亚洲国产V高清在线观看| 美女羞羞免费视频网站| 精品国产日韩亚洲一区| 在线免费一区二区| 最近中文字幕mv免费高清视频8| 爱情岛亚洲论坛在线观看| 亚洲an日韩专区在线| 亚洲精品国产美女久久久| 国产精品公开免费视频| 最近的免费中文字幕视频 | 中文字幕不卡高清免费| 亚洲国产精品成人AV在线| 久久精品国产99国产精品亚洲| 亚洲国产综合专区在线电影| 精品久久久久久亚洲| 色噜噜亚洲精品中文字幕| 亚洲国产成人爱av在线播放| 韩国日本好看电影免费看| 国产99视频精品免费观看7| 99re热免费精品视频观看 | 亚洲国产精品综合一区在线| 亚洲综合亚洲国产尤物| 亚洲成aⅴ人片在线影院八| 亚洲无成人网77777| 亚洲中文字幕无码久久| 亚洲国产成人AV网站| 一级毛片**免费看试看20分钟| 一级做a爱过程免费视| 久久久久成人片免费观看蜜芽| 真实国产乱子伦精品免费| 国内精品免费视频自在线| 亚洲成a人一区二区三区| 久久久久亚洲精品日久生情| 午夜亚洲国产理论片二级港台二级 | 亚洲AV无码AV吞精久久| MM1313亚洲精品无码久久|