<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

         摘要: package ?ifpre.web; import ?gxdmif.GXStringUtil; import ?java.io.DataOutputStream; import ?java.io.File; import ?java.io.FileOutputStream; import ...  閱讀全文
    posted @ 2006-11-28 10:19 重歸本壘(Bing) 閱讀(30134) | 評論 (2)編輯 收藏
     
    <script language="javascript">
    function selHotel()
    {
    var HotelCode ="";
    ? ?var intValid = document.frm.selHotel.length;
    ??if(document.frm.selHotel.checked == true )
    ??{
    ???HotelCode = document.frm.selHotel.value;
    ??}
    ??
    ? ?if(intValid >1)
    ? ?{
    ?? ??for(var i =0;i<document.frm.selHotel.length;i++)
    ?? ??{
    ?? ???//alert(document.frm.selHotel[i].checked);
    ?? ???if (document.frm.selHotel[i].checked== true )
    ?? ???{
    ?? ????HotelCode = document.frm.selHotel[i].value;
    ?? ????//alert(HotelCode);
    ?? ???}
    ?? ??}
    ?? ?}
    }
    </script>
    ?
    <form name="frm" action="">
    <input type="radio" name ="selHotel' value="1">
    <input type="radio" name="selHotel" value="2">
    </form>

    當然還可以用DWRUtil.getValue("selHotel");取值。
    在只有一個radio時,那么document.frm.selHotel.checked 值為true或flase,DWRUtil.getValue("selHotel")的值為true或flase,radio的值為document.frm.selHotel.value即true或flase。
    如果有多個radio時,那么document.frm.selHotel[i].checked 值為true或flase,DWRUtil.getValue("selHotel")的值為document.frm.selHotel[i].value,radio的值為document.frm.selHotel[i].value。
    posted @ 2006-11-23 12:30 重歸本壘(Bing) 閱讀(13794) | 評論 (2)編輯 收藏
     

      1、sql.Date

      sql包中的日期類Date是util包中Date類的子類,實際上也是util.Date類的子集。它只處理年月日,而忽略小時和分秒,用以代表SQL的DATE信息。

      Date類的構造方法為:

      public Date(int year, int mouth, int day)

    其中參數格式同util.Date類的構造方法一樣,年參數為所需設定的年份減去1900所得的整數值,月參數為0至11,日參數為1至31。如1998年1月23日所對應創建日期類的方法調用為:

      Date d=new Date(98,0,23);

      Date類還提供兩個與String類互相轉換的方法,分別是:

      public static Date valueOf(String s)

    將字符串類參數轉換為日期類對象。其中String類參數S的格式為“年-月-日”,加“1997-04-12”。

      public String toString()

    將日期類對象轉換為String類對象表示,同樣采用“年-月-日”的格式。

      2、sql.Time

      該類是util.Date類的子類,也是它的一個子集。在Time類里,只處理小時和分秒,代表SQL的TIME類型。它與sql.Date合起來才表示完整的util.Date類信息。

      Time類的構造方法為:

      public Time(int hour,int minute,int second)

    其中小時參數值為0至23,分秒參數取值均為0至59。

      與sql.Date一樣,Time類也定義了兩個與String類互相轉換的函數ValueOf和String。不同的是String類對象的格式為“小時:分:秒”,如“12:26:06”。

      3、sql.Timestamp

      這個類也是util.Date類的子類,其中除了包含年月日、小時和分秒和信息之外,還加入了納秒信息(nanosecond),1納秒即1毫微秒。Timestamp類用來代表SQL時間戳(Timestamp)類型信息。

      Timestamp類的構造方法為:

      public Timestamp(int year, int mouth, int date, int hour, int minute, int second, int nano)其中納秒參數的取值從0至999,999,999,其余各參數同前。

      Timestamp類特別定義了設置和獲得納秒信息的方法,分別是

      public getnanos()

      獲取時間戳的納秒部分

      public void setNanos(int n)

      以給定數值設置時間戳的納秒部分

      4、sql.Types

      Types類是Object類的直接子類。在這個類中以靜態常量的形式定義了可使用的SQL的數值類型。所有這些類型常量都以前綴

      public final static int

    的形式標明是公有靜態整數,且不可改動。具體的類型名和含義如表11.1所示。其中OTHER用來代表數據庫定義的特殊數據,可以用getObject或setObject方法將其映射為一個Java的Object對象。

      表11.1 Types中定義的SQL類型

    類型名

    含義

    BIGINT

    長整型數

    BINARY

    二進制數

    BIT

    比特數

    CHAR

    字符型

    DATE

    日期型

    DECIMAL

    十進制數

    DOUBLE

    雙精度數

    FLOAT

    浮點數

    INTEGER

    整數

    LONGVARBINARY

    可變長型二進制數

    LONGVARCHAR

    可變長型字符

    NULL

    空類型

    NUMERIC

    數值型

    OTHER

    其他類型

    REAL

    實數

    SMALLINT

    短整型

    TIME

    時間類型

    TIMESTAMP

    時間戳類型

    TINYINT

    微整型

    VARBINARY

    可變二進制數

    VARCHAR

    可變字符型

    二、SQL與Java

        由于SQL數據類型與Java的數據類型不一致,因而在使用Java類型的應用程序與使用SQL類型的數據庫之間,需要某種讀寫類型轉換機制。實際上我們前面介紹的ResultSet類的“get”系列方法,Statement及其子類的“set“系列方法和registerOutParameter方法,都是這一轉換機制的組成部分。

      需要進行的讀寫轉換包括三種情況:

       第一種情況是從數據庫中讀取數值后,存放在ResultSet對象中的是SQL類型的數據。而調用“get”系列方法時,JDBC才將SQL類型轉換為指定的Java類型 。在一般情形下,SQL類型相對應的Java類型如表11-2所示。

      表11.2 SQL類型一般所對應的Java類型

    SQL type

    Java type

    CHAR

    java.lang.String

    VARCHAR

    java.lang.String

    LONGVARCHAR

    java.lang.String

    NUMERIC

    java.lang.Bignum

    DECIMAL

    java.lang.Bignum

    BIT

    boolean

    TINYINT

    byte

    SMALLINT

    short

    INTEGER

    int

    BIGINT

    long

    REAL

    float

    FLOAT

    double

    DOUBLE

    double

    BINARY

    byte[]

    VARBINARY

    byte[]

    LONGVARBINARY

    byte[]

    DATE

    java.sql.Date

    TIME

    java.sql.Time

    TIMESTAMP

    java.sql.Timestamp

      當然,在使用時用戶可以指定將SQL類型轉換為某個需要的特定類型而不遵循表11.2。例如在結果集中的某個FLOAT型數值,依標準轉換應用使用getDouble方法獲取,但實際上按用戶的不同需求也可以使用getFloat,getInt,甚至gefByte方法獲取,但只是有可能影響數值精確度。

    posted @ 2006-11-06 14:15 重歸本壘(Bing) 閱讀(2701) | 評論 (0)編輯 收藏
     

    下面是幾種不同數據庫的升級腳本比較,實際上是對不同數據庫版本的ALTER命令用法的比較

    約定:[]內的內容可有可無

    1,修改字段類型[關鍵字:modify&alter]

    mysql:

    ALTER TABLE 表名 MODIFY [COLUMN] 字段名 字段類型定義;

    sqlserver:

    ALTER TABLE 表名 ALTER COLUMN 字段名 字段類型定義;
    [這里在修改約束的時候需要用到專門的關鍵字CONSTRAINT]

    oracle:

    ALTER TABLE 表名 MODIFY ( 字段名 字段類型定義);
    [Oracle,修改類型時所改字段的數據必須為空:]

    2,增加和刪除字段

    增加字段

    ALTER TABLE 表名 ADD 字段名 字段類型定義;

    刪除字段

    mysql:
    ALTER TABLE 表名 DROP[COLUMN] 字段名

    sqlserver:
    ALTER TABLE 表名 DROP COLUMN 字段名

    3,修改列名

    mysql:
    可以用CHANGE同時修改列名和列類型,如:
    ALTER TABLE table CHANGE column newcolumn BIT NOT NULL
    這里column和newcolumn可以相同,
    也就是說,CHANGE可以取代MODIFY了,可以用來單純修改列類型或者列名

    sqlserver:
    暫時只能調用存儲過程
    EXEC SP_RENAME table.column','newcolumn','COLUMN'

    oracle:
    在817版本以上支持RENAME了,沒有具體測試過,9i以上版本比較保險
    ALTER TABLE table RENAME COLUMN column TO newcolumn;
    posted @ 2006-11-06 10:46 重歸本壘(Bing) 閱讀(649) | 評論 (0)編輯 收藏
     

    ASP頁面:
    <%response.redirect "頁面路徑"%>


    有好幾種方法:
    (1)在頁面中跳轉:加入以下句子,2秒后跳到test.html
    ?? <meta HTTP-EQUIV=REFRESH CONTENT='2; URL=test.html'>
    (2)2秒后轉到ly2.php
    ?? <script>setTimeout("location.href="/home/ly2.php'",2000)</script>
    (3)在php中用header()函數跳轉:
    ?? header("Location :http://www.xxx.com");
    (4)用一個按鈕,點擊后跳轉:(5種按鈕)
    ?


    <input type=button value=Return onClick

    ="javascript:location.href('URL');">
    ?? <input type=button value=Return onClick=

    "javascript:window.location.href('URL');">
    ?? <input type=button value=Return onClick

    ="javascript:window.location.replace('URL');">
    ?? <input type=button value=Return onClick

    ="javascript:window.location.assign('URL');">
    ?? <input type="button" value="Return" onClick

    ="window.location='URL'" /><!--這種最好-->

    posted @ 2006-11-03 17:45 重歸本壘(Bing) 閱讀(1944) | 評論 (1)編輯 收藏
     
    在寫class時,往往要import一些類或包(在不同的包中可能會有名字相同的類),一定要注意的是導入的一定要是自己需要的。
    如果導入錯誤,那么編輯時可能會成功的,運行也可能會沒有問題,但就是出不了正確的結果。
    例如在寫文件上傳時我碰到了這個問題,折磨了我兩天,多方查資料都沒用。
    class?someclass?extends?SimpleFormController{
    ?????
    protected?ModelAndView?onSubmit(HttpServletRequest?req,
    ????????????HttpServletResponse?response,
    ????????????Object?command,
    ????????????BindException?errors)
    ?????
    throws?Exception{??
    ?????????
    return?null;?
    ???}

    ??
    ?}

    在導入時我導入了 java.net.BindException;在編輯和運行都沒有錯,后來我才發現他運行的是super.onSubmit。跟本就沒有運行someclass.onSubmit。
    而實際上應該是org.springframework.validation.BindException;

    同時還要小心的是,如果父類中的方法是什么權限,那么子類的方法不能去擴大這個權限。
    posted @ 2006-10-25 12:55 重歸本壘(Bing) 閱讀(308) | 評論 (0)編輯 收藏
     
    在beans文件中要加入
    ????<bean?id="multipartResolver"
    ??????????
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    ??????????
    <description>
    ??????????????????ifpre::要使用文件上傳功能,必須在定義文件中加入MeltipartResolver,
    ??????????????????可以選用CommonsMutipartResolver或CosMultipartResolver
    ??????????
    </description>
    ????????
    <property?name="maxUploadSize">
    ????????????
    <value>1000000</value>
    ????????
    </property>
    ????
    </bean>

    同時上傳文件使用到相依賴的Commands FileUpload,所以要在lib目錄中包括commons-fileupload.jar文件。

    寫完后調試的過程中,老報錯:java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream,少了commons-io.jar,加上后,就ok了

    在Controller端,可以用以下方式取得上傳的文件,可以上傳多個文件:
    ?public Set getMultipartFileForForm(HttpServletRequest req) {
    ??MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
    ??// CommonsMultipartFile file = (CommonsMultipartFile)
    ??// multipartRequest.getFile("attach");//attach為form為file的id值
    ??// MultipartHttpServletRequest multipartRequest =
    ??// (MultipartHttpServletRequest)request;
    ??Set fileset = new LinkedHashSet();
    ??for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {
    ???String key = (String) it.next();
    ???MultipartFile file = multipartRequest.getFile(key);
    ???if (file.getOriginalFilename().length() > 0) {
    ????fileset.add(file);
    ???}
    ??}
    ??return fileset;
    ?}

    posted @ 2006-10-23 17:24 重歸本壘(Bing) 閱讀(2957) | 評論 (1)編輯 收藏
     


    在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
    1、Create Sequence
    你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE權限,
    CREATE SEQUENCE emp_sequence
    INCREMENT BY 1 -- 每次加幾個
    START WITH 1 -- 從1開始計數
    NOMAXVALUE -- 不設置最大值
    NOCYCLE -- 一直累加,不循環
    CACHE 10;

    一旦定義了emp_sequence,你就可以用CURRVAL,NEXTVAL
    CURRVAL=返回 sequence的當前值
    NEXTVAL=增加sequence的值,然后返回 sequence 值
    比如:
    emp_sequence.CURRVAL
    emp_sequence.NEXTVAL

    可以使用sequence的地方:
    - 不包含子查詢、snapshot、VIEW的 SELECT 語句
    - INSERT語句的子查詢中
    - NSERT語句的VALUES中
    - UPDATE 的 SET中

    可以看如下例子:
    INSERT INTO emp VALUES
    (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

    SELECT empseq.currval FROM DUAL;

    但是要注意的是:
    - 第一次NEXTVAL返回的是初始值;隨后的NEXTVAL會自動增加你定義的INCREMENT BY值,然后返回增加后的值。CURRVAL 總是返回當前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否則會出錯。一次NEXTVAL會增加一次SEQUENCE的值,所以如果你在同一個語句里面使用多個NEXTVAL,其值就是不一樣的。明白?

    - 如果指定CACHE值,ORACLE就可以預先在內存里面放置一些sequence,這樣存取的快些。cache里面的取完后,oracle自動再取一組到cache。 使用cache或許會跳號, 比如數據庫突然不正常down掉(shutdown abort),cache中的sequence就會丟失. 所以可以在create sequence的時候用nocache防止這種情況。

    2、Alter Sequence
    你或者是該sequence的owner,或者有ALTER ANY SEQUENCE 權限才能改動sequence. 可以alter除start至以外的所有sequence參數.如果想要改變start值,必須 drop sequence 再 re-create .
    Alter sequence 的例子
    ALTER SEQUENCE emp_sequence
    INCREMENT BY 10
    MAXVALUE 10000
    CYCLE -- 到10000后從頭開始
    NOCACHE ;


    影響Sequence的初始化參數:
    SEQUENCE_CACHE_ENTRIES =設置能同時被cache的sequence數目。

    可以很簡單的Drop Sequence
    DROP SEQUENCE order_seq;

    示例Sequence:
    CREATE?SEQUENCE?SCOTT.DMIFPOSTID?
    ????START?WITH?
    261
    ????INCREMENT?BY?
    1
    ????NOMINVALUE
    ????NOMAXVALUE
    ????NOCYCLE
    ????CACHE?
    20
    ????NOORDER


    3、如何使用
    ?????????第一種方法:一般來說需要新建一個觸發器(TRIGGER),使得在插入數據之前先運行Sequence生成自增號。
    示例Trigger
    CREATE?OR?REPLACE?TRIGGER?SCOTT.DMIFATTACH_TRG
    BEFORE?INSERT?
    ON?SCOTT.DMIFATTACH
    REFERENCING?OLD?AS?OLD?NEW?AS?NEW
    FOR?EACH?ROW?
    begin
    ????select?SCOTT.DMIFATTACHID.nextval?into?:
    new.ATTACHID?from?dual;
    ??end;

    ?????????第二種方法:可以在插入數據時直接調用。
    ????????? insert into table(id,name) values(seq_name.nextval,'名字');

    ?????????其它:對于hibernate來說,在插入數據之前會先運行一次Sequence生成id的,所以這時如果還有觸發器(TRIGGER),又要再運行一次Sequence,于是就會發現id是以2為步進增加的。這時把Trigger刪除,步進就為1了。
    ?????????如果使用hibernate則需要在hbm.xml文件中把ID的生成方式設為sequence.
    ????<id
    ????????name
    ="postid"
    ????????type
    ="java.lang.Integer"
    ????????column
    ="POSTID"
    ????
    >
    ????????
    <meta?attribute="field-description">
    ???????????@hibernate.id
    ????????????generator
    -class="sequence"
    ????????????type
    ="java.lang.Integer"
    ????????????column
    ="POSTID"


    ????????
    </meta>
    ????????
    <!--設置id生成方式-->
    ??????????
    <generator?class="sequence">
    ????????????
    <param?name="sequence">SCOTT.DMIFPOSTID</param>
    ?????????
    </generator>
    ????
    </id>

    同時在調用this.getHibernateTemplate().save()方法時會自動生成根據sequence把查詢到的id號set給這個對象的id.
    posted @ 2006-10-20 15:04 重歸本壘(Bing) 閱讀(779) | 評論 (0)編輯 收藏
     

    數據庫時代的終結

    板橋里人 http://www.jdon.com 2005/04/28

      以數據庫為核心的軟件時代已經過去,數據庫時代早已結束,當我看到J2EE征途中那么多人在對象和數據庫之間彷徨痛苦ing的時候,我想我該出來喊一聲了。

      其實這句話在幾年前肯定有人喊過,因為中間件時代的來臨,實際意味著數據庫時代終結,正所謂一山無二虎:如果你重視數據庫,你的J2EE系統就無法完全OO,只有你忽視數據庫,你的系統才有可能完全邁向OO,至于數據庫性能調優等特定功能都可交由EJB容器或O/R Mapping工具實現。

      很多年前,包括我自己在內的大部分企業程序員都是從數據庫開始我們的職業生涯,最早的是dBase/FoxPro,后來有了 SQL系列數據庫, Oracle將數據庫時代推向了頂峰。

      每當有一個新項目時,第一步就是首先設計出數據表結構(Table Schema),然后開始使用SQL語句實現業務邏輯,這種開發模式一直重復,就是后來加入了DelPhI/VB,他們也只是承擔圖形顯示實現,這種C/S結構帶來最大問題是:非常難于維護,修改起來,遷一動百。

      軟件的生命在于運動,當它需要發展時,最棒的軟件人員如果對他也束手無策,這是誰的悲哀?

      現在更多人開始接受B/S結構,但是他們中很多人還沒有真正明白為什么需要B/S結構,B/S代表的多層架構才是真正目的(因此,偽多層的B/S系統遍地皆是)。

      多層架構實際是將以前系統中的顯示功能、業務運算功能和數據庫功能完全分開,杜絕彼此的耦合與影響,從而實現松耦合和良好的可維護性。

      一. 從設計上說:由于實現層次完全分離,業務運算功能成為一種中間功能(中間層),它不依賴具體的表現層技術(Jsp/Html applet等),也不依賴具體數據庫技術(Oracle/SQL Server),業務運算功能運行在J2EE應用服務器中,當我們的業務運算功能不再依賴數據庫時,是否意味著數據庫已經不是重點?

      二. 當然,多層結構帶來了性能問題:客戶端訪問數據庫中的數據時,通常需要經過多個層次,非常耗費性能, 如何盡量減少數據庫訪問是J2EE應用系統首要解決的問題,使用存儲過程并沒有解決這個問題,存儲過程的執行還是屬于后端,并沒有縮短客戶端請求所要經歷的坎坷路途。

      解決性能問題的根本解決之道是使用對象緩存,現在, 64位CPU提供的巨大內存空間為單臺緩存計算提供了硬件基礎,更重要的是,這種緩存計算是可伸縮的,通過集群的緩存機制(如JBossCache), 通過增加應用服務器的數量,可以提高整個業務邏輯層的緩存計算能力,拋棄過去那種為內存斤斤計較的老思維吧。

      三. 在系統分析之初是否首先需要數據表設計呢?回答是否定的, 以UML為代表面向對象的分析設計方法已經成為強大工具,隨著面向模型驅動分析設計(MDA)的普及, 面向數據庫分析方法正在逐步被拋棄,擁有深厚傳統數據庫分析習慣的程序員必須面對和接受這種挑戰。

      縱觀整個J2EE系統開發過程,數據庫已經從過去的中心位置降為一種純技術實現,數據庫只是狀態持久化的一種手段(文件是另外一種實現手段);什么是持久化?這是相對于內存緩存狀態而言,持久化就是當內存斷電情況下能永久保存狀態數據,但是如果J2EE應用服務器是7X24小時集群運行;幾乎永不當機,是否有持久化的必要呢?

      很顯然,數據庫已經淪為與操作系統中文件系統同樣的層面,以它為中心的時代真的結束了,IBM早期將DB2數據庫開源已經強烈向我們昭示這點。

      對于J2EE初學者來說,盡早拋棄過去的兩種影響:過程語言編程習慣和以數據庫為中心的設計習慣,從全新的面向對象角度(OOA、OOD和OOP、AOP)來設計開發你的J2EE系統,J2EE設計開發三件寶:Model、Patterns和Framework

      以上不只是理論,而是我每天正在做的,如果你也是或贊同請廣為傳播,喚醒更多彷徨痛苦的初學者。

    TSS最近相關文章:

    使用AOP組合JBossCache實現對象緩存

    OSCache降低數據庫負載

    使用緩存提高Web應用系統性能

    Java企業系統架構選擇考量

    狀態對象:數據庫的替代者

    DDD(Domain-Driven Design領域驅動設計)實戰

    討論

    posted @ 2006-09-27 14:38 重歸本壘(Bing) 閱讀(282) | 評論 (0)編輯 收藏
     
         摘要: package ?state; import ?context.Context; public ? class ?DesignTemplateState? implements ?State? {???? public ...  閱讀全文
    posted @ 2006-09-21 17:02 重歸本壘(Bing) 閱讀(305) | 評論 (0)編輯 收藏
    僅列出標題
    共12頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 
     
    Web Page Rank Icon
    主站蜘蛛池模板: 四虎在线最新永久免费| 久久精品国产亚洲7777| 亚洲成熟xxxxx电影| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 又粗又大又长又爽免费视频 | 极品色天使在线婷婷天堂亚洲 | 免费人成视频在线播放| www.亚洲一区| 成在线人直播免费视频| 亚洲五月六月丁香激情| 亚洲精品不卡视频| 一级毛片免费观看不卡的| 亚洲自偷自偷图片| 精品国产免费一区二区三区香蕉| 亚洲中文字幕无码日韩| 日本免费在线中文字幕| 亚洲美免无码中文字幕在线| 亚洲精品视频免费在线观看| 亚洲国产熟亚洲女视频| 四虎影在线永久免费观看| 一级毛片无遮挡免费全部| 亚洲国产精品一区二区成人片国内| 日本视频在线观看永久免费| 亚洲电影在线免费观看| 在线免费观看一级片| 一级**爱片免费视频| 亚洲日韩图片专区第1页| 成年美女黄网站色大免费视频| 久久精品国产亚洲AV电影网| 亚洲性日韩精品国产一区二区| 免费人成激情视频在线观看冫| 亚洲国产精品乱码在线观看97| 国产极品粉嫩泬免费观看 | 亚洲一区无码精品色| 精品一区二区三区免费| 亚洲国产成人精品激情| 免费人成网站在线播放| 久久久高清日本道免费观看| 亚洲欧洲无卡二区视頻| 亚洲无人区午夜福利码高清完整版 | 95免费观看体验区视频|