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

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

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

    Rising Sun

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks

    #

    使用<%! %>方式所聲明的變量為全局變量,即表示:若同時n 個用戶在執行此JSP網頁時,
    將會共享此變量。因此筆者強烈建議讀者,千萬別使用<%! %>來聲明您的變量。
    若要聲明變量時,請直接在<% %>之中聲明使用即可。
    ----------------------------------------------------------------------------------
    有時候,我們想要讓網頁自己能自動更新,因此,須使用到Refresh 這個標頭。舉個例子,我
    們告訴瀏覽器,每隔三分鐘,就重新加載此網頁:
    response.setIntHeader("Refresh" , 180)
    如果想要過十秒后,調用瀏覽器轉到http://Server/Path 的網頁時,可用如下代碼:
    response.setHeader("Refresh","10; URL=http://Server/Path" )
    如果大家對HTML 語法還熟悉,則HTML 語法中也有類似的功能:
    <META HTTP-EQUIV="Refresh" CONTENT=" 10; URL=http://Server/Path" >
    上述兩種方法皆可以做到自動重新加載。
    ----------------------------------------------------------------------------------

    jsp隱式對象

    輸入輸出對象 out request response
    作用域通訊對象 session application pagecontext
    servlet對象  page config
    錯誤對象  exception
    ----------------------------------------------------------------------------------

    servlet:
    request.setAttribute("articleComment",articleCommentArrayList);
            RequestDispatcher dispatcher = request.getRequestDispatcher("pages/delcomment.jsp");

    jsp:
    ArrayList articletypeArrayList = (ArrayList)request.getAttribute("articleType");
    ----------------------------------------------------------------------------------
    jsp標準動作

    jsp:useBean
    jsp:setProperty
    jsp:getProperty
    jsp:include
    jsp:forword
    jsp:parm
    ----------------------------------------------------------------------------------
    <button name="but" onclick="document.form1.submit()">提交</button>
    location.href="abc.htm";   跳到另一頁 也可刷新本頁
    ----------------------------------------------------------------------------------
    Core 主要

    表達式操作:out ,set ,remove,catch等;
    流程控制:if choose when otherwise
    迭代操作:forEach forTokens

    前提條件是用taglib 引入核心標簽庫
    --------------------------------------------------------------------------------------
    表達式操作
    -------------------------------------------
    <c:out>不可以不帶主體
    <c:out value=需要顯示的內容 default=如果value的值為空,則顯示default的值 escapeXml是否轉換特殊字符,如設定為真,默認會將<,>,、等字符轉換成&lt等;
    <c:out value ="<p>有特殊字符</p>">
    <c:out value ="<p>有特殊字符</p> escapeXml="false" ">
    <c:set>將變量存貯在JSP范圍內或javabean中
    -------------------------------------------

    <c:set>
    可以帶主體也可以不帶
    <c:set value="要存在變量中的值" var scope=默認page/>
    <c:set  var scope>主體中的內容存在變量中 </c:set>
    <c:set  value ="要存在對象中的值" target="javabean的對象" property="屬性名"/>
    <c:set  target="javabean的對象" property="屬性名">
    主體中的內容存在對象中 </c:set>
    <c:set var="num"> 1+1 </c:set>
    -------------------------------------------
    <c:remove var="要移出的變量名" scope可有可無>  如果不寫scope就會按照page->request->session->application的范圍順序依次刪除
    -------------------------------------------
    <c:catch>主要將可能發生的錯誤放在<c:catch>和</c:catch>之間
    如果真的發生錯誤將把錯誤信息存貯在var中
    <c:catch var="errorMessage">
    <% String str="no number" ; int i=Integer.parseInt(str);%>
    </catch>
    ${errorMessage}
    -------------------------------------------


    流程控制<c:if> <c:choose> <c:when> <c:otherwise>

    --------------------------------------------------------------------------------------
    <c:if test(必須有test屬性)="測試條件" var="用來存儲test后的結果">
    當條件為真時,執行主體內容
    </c:if>
    <c:if test="{param.username}=='admin'" var="con" >
    您好,admin
    </c:if>
    ${con}
    執行的時候在jsp的后面直接加上?username=admin
    -------------------------------------------
    <c:choose>本身只當作<c:when>和<c:otherwise>的父標簽
    <c:choose></c:choose>主體內容為
    1.空白
    2.1或多個<c:when>
    3.0個或1個<c:otherwise>,<c:when>必須在<c:otherwise>之前
    <c:when test="必須的測試條件">
    -------------------------------------------
    <c:forEach>為循環控制,它可以將集合(Collection)中的成員按循序瀏覽一遍,當條件符合時,就會繼續;
    var用于存放現在指到的成員;String
    varstatus用來存放現在知道的相關成員的信息  String
    例如:varstatus="a"
    則a還有四個屬性,index,count,first和last
    index:number 現在指到的成員的索引
    count:number 總共指到的成員的總數
    first:boolean 現在指到的成員是否是第一個成員
    last:boolean 現在指到的成員是否為最后一個成員
    items 被迭代的集合對象,包括:Arrays Collection Iterator Enumeration Map String

    begin開始的位置int
    end結束的位置int
    step每次迭代的間隔數int
    限定begin如果有必須大于0,end必須大于begin
    step必須大于等于1

    <%
       String a[]= new String[3];
      a[0]="hello ";
      a[1]="this";
      a[2]=" is a test";
      request.setAttribute("att",a);
    %>
    <c:forEach items="${"att"}" var="items" varStatus="s">
      ${item}
      item有效范圍在foreach中
      index:${s.index}
      count:${s.count}
      first:${s.first}
      last:${s.last}
    </c:forEach>
    不同的begin和end的設置輸出不一樣
    -------------------------------------------
    <c:forTokens>
    </c:forTokens>用來瀏覽一字符串中所有的成員,其成員定義由定義符號來分隔
    delims定義用來分隔字符串的字符
    <c:forEach>也可以分隔字符串,但不能設定分隔符
    <c:forEach items="a,b,c,d" var="item">
      ${item}
    </c:forEach>
    <c:forToken items="a,b,c,d" var="item" delims=",">
      ${item}
    </c:forEach>
    <c:forToken items="123-456-789" var="item" delims="-">
      ${item}
    </c:forEach>
    -------------------------------------------
    此外,筆者還使用<c:set>來傳遞值給Core_import.jsp,這就是<c:param>無法做到的動作,
    <c:param>只能從包含端拋給被包含端,但是在屬性范圍中,可以讓包含端也能得到被包含端傳來的
    數據
    -------------------------------------------
    國際化與格式化標簽庫 I18N

    重寫客戶端的區域設置
    <fmt:setLocale value="語言與國家代碼" variant="瀏覽器變量" scope="page|request|session|application"/>


    區域代碼  區域,語言
    en        英文
    en_US     英文(美國)
    zh_TW     中文(臺灣)
    zh_CN     中文(中國)
    de_CH      瑞士,德國樣式

    創建一個I18N本地化上下文,并將資源包加載到其中
    <fmt:bundle basename="無擴展名的資源文件名">Body</fmt:bundle>

    創建一個I18N本地化上下文,并存在范圍變量里
    <fmt:setBundle basename="無擴展名的資源文件名" var="指定導出的范圍變量的名稱" scope="page|request|session|application"/>

    給出資源包的輸出值
    <fmt:message key="消息關鍵字"/>

    格式化數字
    <fmt:formatNumber value="要格式化的數字" type="格式類型" minFractionDigits="小數點后保留幾位"/>

    格式化時間
    <fmt:formatDate value=""/>

    -------------------------------------------

    JSTL中最重要的就是國際化格式(I18N)的支持,此功能可以對一個特定的語言請求作出合適的響應。
    不同的國家有不同的數據顯示格式。如數字356987.589,在法國為356 987,589
    在德國356.987,589 在美國356,987.589

    I18N格式符主要包含:國際化,消息,數字日期格式化。

    詳細分類:
    國際化setLocale
          requestEncoding:用來設定字符串編碼,功能和ServletRequest.setCharacterEncoding()相同

    <fmt:setLocale value="一定要有value屬性,設定地區代碼。其中最少有兩個字符的語言代碼如zh ,en 然后再加上兩個字母的國家和地區代碼,用-或_連接"  varitant="瀏覽器或供應商,如WIN,Mac" >

    <%Date n= new Date();
      request.setAttribute("d",n);
    %>
    <fmt:setLocale value="zh_CN"/><fmt:formatDate value=$6611661/>

    --消息     bundle     message      param     setBundle
          抓取系統設定的語系資源,作為國際化信息.通過建立存放國際化信息的數據來源.建立propertie文件,并存儲在we-inf/classes目錄下
          寫的時候必須依照key=value
          MyResource.properties
          str1=hello
          str2=My name is Bunny
    <fmt:bundle basename="basename" prefix="屬性的前綴">
    basename是設定要使用的數據源,千萬不可有任何的文件類型即擴展名,如.class,或.properties
    prefix是前置關鍵字,如當如下的propertites:
      requestinfo.label.method=Method;
      requestinfo.label.requesturi=URI;
      requestinfo.label.protocol=Protocol;
     我們就可以用以下方法打開
    <fmt:bundle basename="MyResource" prefix="requestinfo.label.">
    <fmt:message key="protocol"/>
    <fmt:message key="method"/>
    </fmt:bundle>

     

     <fmt:message>會從指定的資源中把特定的關鍵字的值抓取出來。
    <fmt:setbundle>設定默認的數據源
    <fmt:setbundle basename=""  var="存儲資源的名稱">

    <fmt:setbundle>和<fmt:bundle>都可以和<fme:setLocale>搭配使用.多種語言源時,可以將文件名取成如書上例子所示的,當語言取成zh_TW時,它默認去找MyResource_zh_TW.properties作為數據源,如果設定的區域沒有符合的文件名,將會使用MyResource.properties 來作為數據源。

    如是中文的資源文件,它的內容大部分是Unicode的符號,他們都代表一些中文字,在執行jsp時,會出現亂碼,無法正常顯示中文;
    --------------------------------------------------------------------------------------
    SQL標簽庫
    1.設置數據源
      <sql:setDataSource driver="驅動的名字'sun.jdbc.odbc.JdbcOdbcDriver'" url="jdbc:odbc:blog" var="conn"/>
    2.用事務建表
      <sql:transaction dataSource="${conn}">
        <sql:update var="newTable">
          sql語句來見表
        </sql:update>
      </sql:transaction>
    3.插入記錄
      <sql:update var="newRow" dataSource="${conn}">
          insert into tablename values(?,?,?)
          <sql:param value=""/>
          <sql:param value=""/>
      </sql:update>
    4.查詢記錄
      <sql:query var="rs" dataSource="${conn}">
          select * from tablename
      </sql:query>
    5.用表格顯示記錄
      <table border="1">
       <tr>
        <c:forEach var="columnName" items="${rs.columnNames}">
         <th>
          <c:out value="${columnName}"/>
         </th>
        </c:forEach>
       </tr>
       <c:forEach var="row" items="${rs.rowsByIndex}">
        <tr>
          <c:forEach var="column" items="${row}">
        <td>
          <c:out value="${column}"/>
        </td>
       </c:forEach>
        </tr>
       </c:forEach>
      </table>
    --------------------------------------------------------------------------------------

    import java.util.Calendar;
    import java.util.GregorianCalendar;

    public class Test {
        public static void main(String[] argv) {
            //返回一個當前日期和時間的Calendar
            Calendar curDate = Calendar.getInstance();
            //返回今天夜里零時的Calendar(這里不明白看API)
            Calendar tommorowDate = new GregorianCalendar(curDate
                    .get(Calendar.YEAR), curDate.get(Calendar.MONTH), curDate
                    .get(Calendar.DATE) + 1, 0, 0, 0);
            //一天24小時當中,當前過了多少毫秒(用一天24小時的毫秒數減去一天剩余時間的毫秒數)
            System.out.println((60*60*24*1000-(tommorowDate.getTimeInMillis() - curDate
                    .getTimeInMillis())));
        }
    }

    --------------------------------------------------------------------------------------

    轉換成時間
    DateFormat format = new SimpleDateFormat("H:dd");
    Date date = format.parse("8:00");

    加上20分鐘,如果是減去20分鐘的話用-20
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.MINUTE, 20);

    --------------------------------------------------------------------------------------
    11.JSP中動態INCLUDE與靜態INCLUDE的區別?
    動態INCLUDE用jsp:include動作實現
    它總是會檢查所含文件中的變化,適合用于包含動態頁面,并且可以帶參數
    靜態INCLUDE用include偽碼實現,定不會檢查所含文件的變化,適用于包含靜態頁面
    --------------------------------------------------------------------------------------
    int i=100;
    String binStr=Integer.toBinaryString(i);
    String otcStr=Integer.toOctalString(i);
    String hexStr=Integer.toHexString(i);
    System.out.println(binStr);
    System.out.println(otcStr);
    System.out.println(hexStr);
    --------------------------------------------------------------------------------------
    Calendar date=Calendar.getInstance();
    SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");

    String name=format.format(date.getTime());
    --------------------------------------------------------------------------------------

    使用WEB容器捕獲異常進行處理,在web.xml文件頭部加上:
    <error-page>
       <exception-type>java.lang.Exception</exception-type>
       <location>/system_error.jsp</location>-----出錯后轉向system_error.jsp頁面
    </error-page>
    <error-page>
       <error-code>404</error-code>
       <location>/system_error.jsp</location>-----出錯后轉向system_error.jsp頁面
    </error-page>
    <error-page>
       <error-code>400</error-code>
       <location>/system_error.jsp</location>-----出錯后轉向system_error.jsp頁面
    </error-page>
    <error-page>
       <error-code>500</error-code>
       <location>/system_error.jsp</location>-----出錯后轉向system_error.jsp頁面
    </error-page>
    --------------------------------------------------------------------------------------
    Java 運行 記事本
    Runtime rt = Runtime.getRuntime();
    Process p = rt.exec("notepad"); 



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1535545

    posted @ 2007-08-25 14:32 brock 閱讀(1574) | 評論 (0)編輯 收藏

    request.getParameterValues與request.getParameter的區別:
    request.getParameterValues(String   name)是獲得如checkbox類(名字相同,但值有多個)的數據。   接收數組變量,如才、checkobx類型    
    request.getParameter(String   name)是獲得相應名的數據,如果有重復的名,則返回第一個的值. 接收一般變量,如text類型
     

    JSP中request.getParameterNames和getParameterValues應用
     

    try...{
    String name; 
    Enumeration  pNames=request.getParameterNames(); 
     while(pNames.hasMoreElements())...{ 
      name=(String)pNames.nextElement();
      out.print(name+"="+request.getParameter(name));
      }
    }catch(Exception e)...{
    out.print(e.toString());
    }
     
     

    for (Enumeration iter = request.getParameterNames(); iter.hasMoreElements();) ...{
                String element = (String) iter.nextElement();
                logger.debug("parameter:"+element);
                logger.debug("value:"+request.getParameter(element));
            }
     

    String[]   userId   =   request.getParameterValues("userId");  

    posted @ 2007-08-25 10:42 brock 閱讀(1674) | 評論 (1)編輯 收藏

    [http://blog.javascud.org/rss.php?blogId=25&categoryId=32]
    測試類 ClobTest.java

    /**
     *
     */
    package com.chinantn.test;

    import java.io.Writer;
    import java.sql.Clob;

    import oracle.sql.CLOB;

    import org.hibernate.Hibernate;
    import org.hibernate.LockMode;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.hibernate.lob.SerializableClob;

    import com.chinantn.sdfda.common.hibernate.HibernateSessionFactory;
    import com.chinantn.sdfda.content.domain.Test;

    /**
     * @author Administrator
     *
     */
    public class ClobTest {

     /**
      * @param args
      */
     public static void main(String[] args) throws Exception{
      Session s = HibernateSessionFactory.currentSession();
      /*//寫CLOB
      Transaction tx = s.beginTransaction();
      Test t = new Test();
      t.setContent(Hibernate.createClob(" "));
      s.save(t);
      s.flush();
      s.refresh(t,LockMode.UPGRADE);
      //CLOB clob = (CLOB)t.getContent();
      
      SerializableClob sc= (SerializableClob)t.getContent();
      Clob wrapclob = sc.getWrappedClob();
      CLOB clob = (CLOB)wrapclob;
      
      
    // Writer cout = clob.getCharacterOutputStream();
    //用文件上傳到 clob 字段是亂碼 (中文)//
    // File file = new File("C:\\1.txt");//修改你要存如的文本
    // FileInputStream fin = new FileInputStream(file);
    //int read;
    //while((read = fin.read())!= -1){
     //        cout.write(read);
     / }
     //fin.close();
    //
    //下面是正常
      StringBuffer sb = new StringBuffer();
      for(int i = 0; i < 10000; i ++){
       sb.append("我要忍!!!");
      }
      w.write(sb.toString());
      w.flush();
      w.close();
      tx.commit();*/
      /*
      //讀CLOB
      Test t = (Test)s.get(Test.class,"109a1b7438[142bece]-8000");
      Clob clob = t.getContent();
      if(clob != null){
       String clobStr = clob.getSubString(1,(int)clob.length());
       System.out.println(clobStr.length());
       System.out.println(clobStr);
      }*/
      
      //更新CLOB
      Transaction tx = s.beginTransaction();
      Test t = (Test)s.get(Test.class,"109a1b7438[142bece]-8000");
      t.setContent(Hibernate.createClob(" "));
      s.update(t);
      s.flush();
      s.refresh(t,LockMode.UPGRADE);
      
      SerializableClob sc= (SerializableClob)t.getContent();
      Clob wrapclob = sc.getWrappedClob();
      CLOB clob = (CLOB)wrapclob;
      
      Writer w = clob.getCharacterOutputStream();
      StringBuffer sb = new StringBuffer();
      for(int i = 0; i < 1000; i ++){
       sb.append("我很努力!!!");
      }
      w.write(sb.toString());
      w.flush();
      w.close();
      tx.commit();
      
      if(clob != null){
       String clobStr = clob.getSubString(1,(int)clob.length());
       System.out.println(clobStr.length());
       System.out.println(clobStr);
      }
      HibernateSessionFactory.closeSession();

     }

    }

    posted @ 2007-08-13 09:58 brock 閱讀(1959) | 評論 (1)編輯 收藏

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    //出處:網上搜集
    //made by yaosansi 2005-12-02
    //For more visit http://www.yaosansi.com
    // Trim() , Ltrim() , RTrim()

    String.prototype.Trim = function()
    {
    return this.replace(/(^\s*)|(\s*$)/g, "");
    }

    String.prototype.LTrim = function()
    {
    return this.replace(/(^\s*)/g, "");
    }

    String.prototype.RTrim = function()
    {
    return this.replace(/(\s*$)/g, "");
    }

    //-->
    </SCRIPT>

    posted @ 2007-07-19 13:59 brock 閱讀(299) | 評論 (0)編輯 收藏

    function AjaxScript(url, varName, params, onsuccess)
    {    
        
    var arr = document.getElementsByTagName("script");
        
    var url =url.toLowerCase();
        
    var isLoad = true;
        
    if (arr)
        
    {
            
    for(i=0; i<arr.length; i++)
            
    {
                
    var src = arr[i].src;
                
    if (src) 
                
    {
                    
    if (src.toLowerCase() == url) { isLoad = false; }
                }

            }

        }

        
        
    if (isLoad)
        
    {
            
    var s = document.createElement("script");
            
            
    var params = (params ? params : ""+ (params && varName ? "&" : ""+ (varName ? "varName=" + varName : "")
            
            
    if (url.indexOf("?">= 0)
            
    {
                url 
    += (params && params != "" ? "&" + params  : "");
            }

            
    else
            
    {
                url 
    += (params && params != "" ? "?" + params : "");
            }

            
            s.src 
    = url;
            s.type 
    = "text/javascript";
            s.onreadystatechange 
    = function()
            
    {    
                
    switch(this.readyState)
                
    {
                    
    case "complete":
                    
    case "loaded":
                        eval(
    "try {    if (onsuccess) { onsuccess({0}); delete {0}; }    }catch(e){}".format((varName ?  varName : "")));
                        
    break;
                        
                    
    case "loading":
                        
    break;
                }

            }

            s.onload 
    = function() { eval("try {    if (onsuccess) { onsuccess({0}); delete {0}; }    }catch(e){}".format((varName ?  varName : ""))); }
            
    var arr = document.getElementsByTagName("head");
            
    var h= arr[0];
            document.body.appendChild(s);
        }

    }
    posted @ 2007-07-16 14:17 brock 閱讀(340) | 評論 (0)編輯 收藏

    exp/imp命令詳解

    exp/imp兩個命令可以說是oracle中最常用的命令了.
    ORACLE數據庫有兩類備份方法。第一類為物理備份,該方法實現數據庫的完整恢復,但
    數據庫必須運行在歸擋模式下(業務數據庫在非歸擋模式下運行),且需要極大的外部
    存儲設備,例如磁帶庫;第二類備份方式為邏輯備份,業務數據庫采用此種方式,此方
    法不需要數據庫運行在歸擋模式下,不但備份簡單,而且可以不需要外部存儲設備。
    數據庫邏輯備份方法
    ORACLE數據庫的邏輯備份分為三種模式:表備份、用戶備份和完全備份。
    表模式
    備份某個用戶模式下指定的對象(表)。業務數據庫通常采用這種備份方式。
    若備份到本地文件,使用如下命令:
    exp icdmain/icd rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0
    file=exp_icdmain_csd_yyyymmdd.dmp
    log=exp_icdmain_csd_yyyymmdd.log
    tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
    若直接備份到磁帶設備,使用如下命令:
    exp icdmain/icd rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0
    file=/dev/rmt0
    log=exp_icdmain_csd_yyyymmdd.log
    tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
    注:在磁盤空間允許的情況下,應先備份到本地服務器,然后再拷貝到磁帶。出于速度
    方面的考慮,盡量不要直接備份到磁帶設備。
    用戶模式
    備份某個用戶模式下的所有對象。業務數據庫通常采用這種備份方式。
    若備份到本地文件,使用如下命令:
    exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0
    file=exp_icdmain_yyyymmdd.dmp
    log=exp_icdmain_yyyymmdd.log
    若直接備份到磁帶設備,使用如下命令:
    exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0
    file=/dev/rmt0
    log=exp_icdmain_yyyymmdd.log
    注:如果磁盤有空間,建議備份到磁盤,然后再拷貝到磁帶。如果數據庫數據量較小,
    可采用這種辦法備份。
    完全模式
    備份完整的數據庫。業務數據庫不采用這種備份方式。備份命令為:
    exp icdmain/icd rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0 full=y
    file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
    log=exp_fulldb_yyyymmdd.log
    對于數據庫備份,建議采用增量備份,即只備份上一次備份以來更改的數據。增量備份
    命令:
    exp icdmain/icd rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0 full=y inctype=incremental
    file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
    log=exp_fulldb_yyyymmdd.log
    注:關于增量備份必須滿足下列條件:
    1.
    只對完整數據庫備份有效,且第一次需要full=y參數,以后需要inctype=increment
    al參數。
    2. 用戶必須有EXP_FULL_DATABASE的系統角色。
    3. 話務量較小時方可采用數據庫備份。
    4. 如果磁盤有空間,建議備份到磁盤,然后再備份到磁帶。
    業務數據庫備份方法及周期
    用EXP進行備份前,先在SYS用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則不
    要執行這個腳本)。
    沒有特殊說明,不允許在客戶端執行備份命令。
    備份命令參照表模式下的備份命令。
    從磁盤文件備份到磁帶
    如果首先備份到本地磁盤文件,則需要轉儲到磁帶設備上。
    1. 若需查看主機上配置的磁帶設備,使用如下命令:
    lsdev -Cc tape
    顯示的結果如下例所示:
    rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive
    rmt1 Defined  30-58-00-0,0 SCSI 4mm Tape Drive
    標明Available的設備是可用的磁帶設備。
    2. 若需查看磁帶存儲的內容,使用如下命令:
    tar -tvf /dev/rmt0
    顯示的結果如下例所示:
    -rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp
    如果顯示類似如下內容,則表示該磁帶存儲的備份數據是從數據庫直接備份到磁帶上,
    而非從本地磁盤轉儲到磁帶的備份文件,因此操作系統無法識別。
    tar: 0511-193 An error occurred while reading from the media.
    There is an input or output error.

    tar: 0511-169 A directory checksum error on media; -267331077 not equal to
    2
    5626.
    3. 對于新磁帶或無需保留現存數據的磁帶,使用如下命令:
    tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
    注:A. 該命令將無條件覆蓋磁帶上的現存數據。
      B. 文件名不允許包含路徑信息,如:/backup/exp_icdmain_yyyymmdd.dmp。
    4. 對于需要保留現存數據的磁帶,使用如下命令:
    tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
    注:該命令將文件exp_icdmain_yyyymmdd.dmp追加到磁帶的末端,不會覆蓋現存的數據

    特別強調:如果備份時是從數據庫直接備份到磁帶上,則不可再向該磁帶上追加復制任
    何其他文件,否則該備份數據失效。
    5. 若需將轉儲到磁帶上的備份文件復制到本地硬盤,使用如下命令:
    A. 將磁帶上的全部文件復制到本地硬盤的當前目錄
    tar -xvf /dev/rmt0
    B. 將磁帶上的指定文件復制到本地硬盤的當前目錄
    tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
    備份時間安排
    由于備份時對系統I/O有較大影響,所以,建議在晚上11點以后進行備份工作。
    業務數據庫Oracle版本的恢復
    恢復方案需根據備份方案確定。由于業務數據庫采用表備份和用戶備份相結合的方案,
    所以業務數據庫的恢復需根據實際情況采用表恢復和用戶恢復相結合的方案。
    恢復方案
    數據庫的邏輯恢復分為表恢復、用戶恢復、完全恢復三種模式。
    表模式
    此方式將根據按照表模式備份的數據進行恢復。
    A. 恢復備份數據的全部內容
    若從本地文件恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=exp_icdmain_cs
    d_yyyymmdd.dmp
    log=imp_icdmain_csd_yyyymmdd.log
    若從磁帶設備恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
    log=imp_icdmain_csd_yyyymmdd.log
    B. 恢復備份數據中的指定表
    若從本地文件恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=exp_icdmain_cs
    d_yyyymmdd.dmp
    log=imp_icdmain_csd_yyyymmdd.log
    tables=commoninformation,serviceinfo
    若從磁帶設備恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=/dev/rmt0
    log=imp_icdmain_csd_yyyymmdd.log
    tables=commoninformation,serviceinfo
    用戶模式
    此方式將根據按照用戶模式備份的數據進行恢復。
    A. 恢復備份數據的全部內容
    若從本地文件恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=exp_icdmain_yy
    yymmdd.dmp
    log=imp_icdmain_yyyymmdd.log
    若從磁帶設備恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
    log=imp_icdmain_yyyymmdd.log
    B. 恢復備份數據中的指定表
    若從本地文件恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=exp_icdmain_yy
    yymmdd.dmp
    log=imp_icdmain_yyyymmdd.log
    tables=commoninformation,serviceinfo
    若從磁帶設備恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
    log=imp_icdmain_yyyymmdd.log
    tables=commoninformation,serviceinfo
    完全模式
    如果備份方式為完全模式,采用下列恢復方法:
    若從本地文件恢復,使用如下命令:
    imp system/manager rows=y indexes=n commit=y buffer=65536
    feedback=100000 ignore=y volsize=0 full=y
    file=exp_icdmain_yyyymmdd.dmp
    log=imp_icdmain_yyyymmdd.log
    若從磁帶設備恢復,使用如下命令:
    imp system/manager rows=y indexes=n commit=y buffer=65536
    feedback=100000 ignore=y volsize=0 full=y
    file=/dev/rmt0
    log=imp_icdmain_yyyymmdd.log
    參數說明
    1. ignore參數
    Oracle在恢復數據的過程中,當恢復某個表時,該表已經存在,
    就要根據ignore參數的設置來決定如何操作。
    若ignore=y,Oracle不執行CREATE TABLE語句,直接將數據
    插入到表中,如果插入的記錄違背了約束條件,比如主鍵約束,
    則出錯的記錄不會插入,但合法的記錄會添加到表中。
    若ignore=n,Oracle不執行CREATE TABLE語句,同時也不會
    將數據插入到表中,而是忽略該表的錯誤,繼續恢復下一個表。
    2. indexes參數
    在恢復數據的過程中,若indexes=n,則表上的索引不會被恢復
    ,但是主鍵對應的唯一索引將無條件恢復,這是為了保證數據
    的完整性。
    字符集轉換
    對于單字節字符集(例如US7ASCII),恢復時,數據庫自動轉
    換為該會話的字符集(NLS_LANG參數);對于多字節字符集
    (例如ZHS16CGB231280),恢復時,應盡量使字符集相同
    (避免轉換),如果要轉換,目標數據庫的字符集應是輸出數
    據庫字符集的超集。
    恢復方法
    業務數據庫采用表恢復方案。在用IMP進行恢復前,先在SYS
    用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則
    不要執行這個腳本),然后執行下列命令:
    IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=Y
    COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名
    注:要恢復的表名參照備份的表名
      。恢復是在原表基礎上累加數據
      。沒有特殊說明,不允許在客戶端執行恢復命令

    將一個數據庫的某用戶的所有表導到另外數據庫的一個用戶下面的例子  
    exp userid=system/manager owner=username1 file=expfile.dmp
    imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp



    將一個數據庫的某用戶的所有表導到另外數據庫的一個用戶下面的例子  

    exp userid=system/manager owner=username1 file=expfile.dmp
    imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp

    ORACLE數據庫有兩類備份方法。第一類為物理備份,該方法實現數據庫的完整恢復,但
    數據庫必須運行在歸擋模式下(業務數據庫在非歸擋模式下運行),且需要極大的外部
    存儲設備,例如磁帶庫;第二類備份方式為邏輯備份,業務數據庫采用此種方式,此方
    法不需要數據庫運行在歸擋模式下,不但備份簡單,而且可以不需要外部存儲設備。
    數據庫邏輯備份方法
    ORACLE數據庫的邏輯備份分為三種模式:表備份、用戶備份和完全備份。
    表模式
    備份某個用戶模式下指定的對象(表)。業務數據庫通常采用這種備份方式。
    若備份到本地文件,使用如下命令:
    exp icdmain/icd rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0
    file=exp_icdmain_csd_yyyymmdd.dmp
    log=exp_icdmain_csd_yyyymmdd.log
    tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
    若直接備份到磁帶設備,使用如下命令:
    exp icdmain/icd rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0
    file=/dev/rmt0
    log=exp_icdmain_csd_yyyymmdd.log
    tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
    注:在磁盤空間允許的情況下,應先備份到本地服務器,然后再拷貝到磁帶。出于速度
    方面的考慮,盡量不要直接備份到磁帶設備。
    用戶模式
    備份某個用戶模式下的所有對象。業務數據庫通常采用這種備份方式。
    若備份到本地文件,使用如下命令:
    exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0
    file=exp_icdmain_yyyymmdd.dmp
    log=exp_icdmain_yyyymmdd.log
    若直接備份到磁帶設備,使用如下命令:
    exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0
    file=/dev/rmt0
    log=exp_icdmain_yyyymmdd.log
    注:如果磁盤有空間,建議備份到磁盤,然后再拷貝到磁帶。如果數據庫數據量較小,
    可采用這種辦法備份。
    完全模式
    備份完整的數據庫。業務數據庫不采用這種備份方式。備份命令為:
    exp icdmain/icd rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0 full=y
    file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
    log=exp_fulldb_yyyymmdd.log
    對于數據庫備份,建議采用增量備份,即只備份上一次備份以來更改的數據。增量備份
    命令:
    exp icdmain/icd rows=y indexes=n compress=n buffer=65536
    feedback=100000 volsize=0 full=y inctype=incremental
    file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
    log=exp_fulldb_yyyymmdd.log
    注:關于增量備份必須滿足下列條件:
    1.
    只對完整數據庫備份有效,且第一次需要full=y參數,以后需要inctype=increment
    al參數。
    2. 用戶必須有EXP_FULL_DATABASE的系統角色。
    3. 話務量較小時方可采用數據庫備份。
    4. 如果磁盤有空間,建議備份到磁盤,然后再備份到磁帶。
    業務數據庫備份方法及周期
    用EXP進行備份前,先在SYS用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則不
    要執行這個腳本)。
    沒有特殊說明,不允許在客戶端執行備份命令。

    備份命令參照表模式下的備份命令。
    從磁盤文件備份到磁帶
    如果首先備份到本地磁盤文件,則需要轉儲到磁帶設備上。
    1. 若需查看主機上配置的磁帶設備,使用如下命令:
    lsdev -Cc tape
    顯示的結果如下例所示:
    rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive
    rmt1 Defined  30-58-00-0,0 SCSI 4mm Tape Drive
    標明Available的設備是可用的磁帶設備。
    2. 若需查看磁帶存儲的內容,使用如下命令:
    tar -tvf /dev/rmt0
    顯示的結果如下例所示:
    -rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp
    如果顯示類似如下內容,則表示該磁帶存儲的備份數據是從數據庫直接備份到磁帶上,
    而非從本地磁盤轉儲到磁帶的備份文件,因此操作系統無法識別。
    tar: 0511-193 An error occurred while reading from the media.
    There is an input or output error.

    tar: 0511-169 A directory checksum error on media; -267331077 not equal to
    2
    5626.
    3. 對于新磁帶或無需保留現存數據的磁帶,使用如下命令:
    tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
    注:A. 該命令將無條件覆蓋磁帶上的現存數據。
      B. 文件名不允許包含路徑信息,如:/backup/exp_icdmain_yyyymmdd.dmp。
    4. 對于需要保留現存數據的磁帶,使用如下命令:
    tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
    注:該命令將文件exp_icdmain_yyyymmdd.dmp追加到磁帶的末端,不會覆蓋現存的數據

    特別強調:如果備份時是從數據庫直接備份到磁帶上,則不可再向該磁帶上追加復制任
    何其他文件,否則該備份數據失效。
    5. 若需將轉儲到磁帶上的備份文件復制到本地硬盤,使用如下命令:
    A. 將磁帶上的全部文件復制到本地硬盤的當前目錄
    tar -xvf /dev/rmt0
    B. 將磁帶上的指定文件復制到本地硬盤的當前目錄
    tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
    備份時間安排
    由于備份時對系統I/O有較大影響,所以,建議在晚上11點以后進行備份工作。
    業務數據庫Oracle版本的恢復
    恢復方案需根據備份方案確定。由于業務數據庫采用表備份和用戶備份相結合的方案,
    所以業務數據庫的恢復需根據實際情況采用表恢復和用戶恢復相結合的方案。
    恢復方案
    數據庫的邏輯恢復分為表恢復、用戶恢復、完全恢復三種模式。
    表模式
    此方式將根據按照表模式備份的數據進行恢復。
    A. 恢復備份數據的全部內容
    若從本地文件恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=exp_icdmain_cs
    d_yyyymmdd.dmp
    log=imp_icdmain_csd_yyyymmdd.log
    若從磁帶設備恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
    log=imp_icdmain_csd_yyyymmdd.log
    B. 恢復備份數據中的指定表
    若從本地文件恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=exp_icdmain_cs
    d_yyyymmdd.dmp
    log=imp_icdmain_csd_yyyymmdd.log
    tables=commoninformation,serviceinfo
    若從磁帶設備恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=/dev/rmt0
    log=imp_icdmain_csd_yyyymmdd.log
    tables=commoninformation,serviceinfo
    用戶模式
    此方式將根據按照用戶模式備份的數據進行恢復。
    A. 恢復備份數據的全部內容
    若從本地文件恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=exp_icdmain_yy
    yymmdd.dmp
    log=imp_icdmain_yyyymmdd.log
    若從磁帶設備恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
    log=imp_icdmain_yyyymmdd.log
    B. 恢復備份數據中的指定表
    若從本地文件恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0
    file=exp_icdmain_yy
    yymmdd.dmp
    log=imp_icdmain_yyyymmdd.log
    tables=commoninformation,serviceinfo
    若從磁帶設備恢復,使用如下命令:
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
    log=imp_icdmain_yyyymmdd.log
    tables=commoninformation,serviceinfo
    完全模式
    如果備份方式為完全模式,采用下列恢復方法:
    若從本地文件恢復,使用如下命令:
    imp system/manager rows=y indexes=n commit=y buffer=65536
    feedback=100000 ignore=y volsize=0 full=y
    file=exp_icdmain_yyyymmdd.dmp
    log=imp_icdmain_yyyymmdd.log
    若從磁帶設備恢復,使用如下命令:
    imp system/manager rows=y indexes=n commit=y buffer=65536
    feedback=100000 ignore=y volsize=0 full=y
    file=/dev/rmt0
    log=imp_icdmain_yyyymmdd.log
    參數說明
    1. ignore參數
    Oracle在恢復數據的過程中,當恢復某個表時,該表已經存在,
    就要根據ignore參數的設置來決定如何操作。
    若ignore=y,Oracle不執行CREATE TABLE語句,直接將數據
    插入到表中,如果插入的記錄違背了約束條件,比如主鍵約束,
    則出錯的記錄不會插入,但合法的記錄會添加到表中。
    若ignore=n,Oracle不執行CREATE TABLE語句,同時也不會
    將數據插入到表中,而是忽略該表的錯誤,繼續恢復下一個表。
    2. indexes參數
    在恢復數據的過程中,若indexes=n,則表上的索引不會被恢復
    ,但是主鍵對應的唯一索引將無條件恢復,這是為了保證數據
    的完整性。
    字符集轉換
    對于單字節字符集(例如US7ASCII),恢復時,數據庫自動轉
    換為該會話的字符集(NLS_LANG參數);對于多字節字符集
    (例如ZHS16CGB231280),恢復時,應盡量使字符集相同
    (避免轉換),如果要轉換,目標數據庫的字符集應是輸出數
    據庫字符集的超集。
    恢復方法
    業務數據庫采用表恢復方案。在用IMP進行恢復前,先在SYS
    用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則
    不要執行這個腳本),然后執行下列命令:
    IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=Y
    COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名
    注:要恢復的表名參照備份的表名
      。恢復是在原表基礎上累加數據
      。沒有特殊說明,不允許在客戶端執行恢復命令

    posted @ 2007-07-03 18:09 brock 閱讀(511) | 評論 (0)編輯 收藏

    Building Applications Using Ant 1.6
    posted @ 2007-07-03 14:47 brock 閱讀(114) | 評論 (0)編輯 收藏

    螞蟻啃骨頭
    posted @ 2007-07-03 14:43 brock 閱讀(103) | 評論 (0)編輯 收藏

     1 /**
     2  * Project:        
     3  * Author:        zhy
     4  * Company:     
     5  * Created Date:    2007-6-29
     6  * 
     7  * Copyright @ 2007
     8  * 
     9  * History:
    10  * ------------------------------------------------------------------------------
    11  * Date            |time        |Author    |Change Description        */
    12 
    13 var Obj = function (key ,value){
    14    this.key = key; 
    15    this.value = value;
    16 };
    17 var ha = new Array();
    18 var Hash = function (){
    19    //this.a =ha;
    20 }
    21 Hash.prototype.haa = function (){
    22     return ha;
    23 }
    24 Hash.prototype.clear = function (){
    25     ha = new Array();
    26 }
    27 Hash.prototype.clone = function (){
    28     return this;
    29 }
    30 Hash.prototype.get = function (key){
    31    
    32     for(var i=0;i<ha.length ;i++){
    33         if(ha[i].key==key){
    34             return ha[i].value;
    35         }
    36     }
    37    
    38 }
    39 Hash.prototype.put = function (key ,value){
    40 
    41     if(ha.length !=0){
    42        
    43          for(var i=0;i<ha.length;i++){
    44             if(ha[i].key != key){
    45                  ha[ha.length]=new Obj(key ,value);
    46             }
    47          }    
    48     }else{
    49          ha[ha.length]=new Obj(key ,value);
    50    }
    51    
    52  
    53 }
    54 
    55 Hash.prototype.size = function (){
    56     return ha.length ;
    57 }
    58 
    59 Hash.prototype.remove = function (key){
    60       for(var i=0;i<ha.length;i++){
    61         if(ha[i].key == key){
    62            ha.without(ha[i]);
    63         }
    64     }
    65 

    posted @ 2007-07-03 14:38 brock 閱讀(1297) | 評論 (0)編輯 收藏

    url?
    String skey = request.getParameter("key");
    當url沒有 key=""時  skey 為Null
    url? key=
    當url 有時skey 為 "" 也就是一個為空的對象
    posted @ 2007-06-20 11:14 brock 閱讀(234) | 評論 (0)編輯 收藏

    僅列出標題
    共15頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 Last 
    主站蜘蛛池模板: 国产成人亚洲精品无码AV大片| 两个人日本WWW免费版| 国产午夜免费福利红片| 岛国精品一区免费视频在线观看| 久久精品国产亚洲网站| 免费99精品国产自在现线| 精品国产亚洲AV麻豆| 亚洲AV无码成人精品区在线观看| 亚洲精品动漫免费二区| 五月婷婷免费视频| 亚洲国产精品综合久久网各| 亚洲成年人啊啊aa在线观看| 8x8×在线永久免费视频| 久久亚洲精品高潮综合色a片| 久久精品亚洲综合专区| 日韩高清在线免费观看| 久久国产乱子伦精品免费看| 亚洲国产视频久久| 亚洲成人中文字幕| yy6080久久亚洲精品| 曰批全过程免费视频网址 | 国产精品午夜免费观看网站| 亚洲无线一二三四区| 国产黄色一级毛片亚洲黄片大全| 美女被免费喷白浆视频| 美女无遮挡拍拍拍免费视频| 亚洲综合国产成人丁香五月激情| 亚洲AV无码一区二区三区系列| 国产一区二区三区在线免费| av无码久久久久不卡免费网站| 2022免费国产精品福利在线| 亚洲精品乱码久久久久蜜桃 | 国产一区在线观看免费| 久久久久国产免费| 国产成人精品免费大全| 亚洲国产精品自在自线观看| 亚洲最新中文字幕| 亚洲国产精品久久久久网站| 国产偷窥女洗浴在线观看亚洲| 日本免费人成黄页在线观看视频| 57pao一国产成永久免费|