<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

    #

    struts2中對action name支持通配符配置,所以使其方便的實現零配置成為可能。

    實現零配置后的開發會是怎樣,開發員不用配置struts.xml,也不用在action代碼中寫annotation,是真正干凈的零配置。以下的代碼是我們希望達到的效果。
    action示例
    package net.jacker.ww.sys;

    public class UserAction extends BaseAction {


      
        
    public String execute() throws Exception {
             
             
    return "default"
             //
     default表示使用缺省頁面,路徑名和action所在包和類名相關,為 /sys/User.jsp
        }

        
    public String roles(){
            
            
    return view("/sys/UserRoles"); // 指定展示頁面為 /sys/UserRoles.jsp 
        }


        
    public String xxxx(){
           
           
    return redirect("/sys/User.do"); // 重定向,url為 /sys/User.do
        
        }




    }


    以上action的三個方法無需配置,將可以分別用以下鏈接進行訪問:
    http://localhost:8080/sys/User.do
    http://localhost:8080/sys/User!roles.do
    http://localhost:8080/sys/User!xxxx.do(將重定向到User.do)


    下面我們來看看以上零配置是如何做到的。
    首先,我們需要在struts.xml中做如下的配置。
    <struts>
        
    <constant name="struts.enable.SlashesInActionNames" value="true" /> <!-- action名可以有'/'字符 -->
        
    <constant name="struts.action.extension" value="do"/> <!-- .do為訪問擴展名 -->

      
    <package name="default" extends="struts-default">
      
      
    <!-- 通配符配置,匹配所有的URL對action的訪問 -->
        
    <action name="*/*!*" class="net.jacker.ww.{1}.{2}Action" method="{3}"> 
          
    <result name="default" type="dispatcher">/{1}/{2}.jsp</result>
          
    <result name="view" type="dispatcher">${viewpath}.jsp</result>
          
    <result name="redirect" type="redirect">${viewpath}</result>
        
    </action>
        
    <action name="*/*" class="net.jacker.ww.{1}.{2}Action">
          
    <result name="default" type="dispatcher">/{1}/{2}.jsp</result>
          
    <result name="view" type="dispatcher">${viewpath}.jsp</result>
          
    <result name="redirect" type="redirect">${viewpath}</result>
        
    </action>
      
    </package>

    </struts>


    然后是寫一個Action基類,BaseAction.java
    package net.jacker.ww;

    import com.opensymphony.xwork2.Action;


    public abstract class BaseAction implements Action{

        

        String viewpath; 
    //該屬性會在struts.xml中用到

        
    public String view(String vpath){
            viewpath 
    = vpath;
            
    return "view";
        }

        
    public String redirect(String vpath){
            viewpath 
    = vpath;
            
    return "redirect";
        }


        
    public String getViewpath() {
            
    return viewpath;
        }

        

    }


    做好以上的基礎工作,你的action類只要繼承BaseAction,符合XxxAction的命名規則,放到對應的包下,頁面也放到對應的路徑,就可以無需配置而訪問了。

    如果要替換view層也很簡單,只要對struts.xml做簡單修改,比如:

    <result name="default" type="dispatcher">/{1}/{2}.jsp</result>

    改為

     <result name="default" type="velocity">/{1}/{2}.vtl</result>

    修改后的struts將統一使用velocity模板取代jsp作為頁面展示層。

    注意:
    實測后發現,以上零配置的做法只在struts2.0.11版本中可以使用,在struts2.0.XX的更高版本中卻未能獲通過,這不能不說是個遺憾。
    posted @ 2009-08-20 17:21 brock 閱讀(1311) | 評論 (0)編輯 收藏

    1.interceptor的配置

    方法1. 普通配置法

    <struts>
        <package name="struts2" extends="struts-default">
            <interceptors>
                <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
            </interceptors>

            <action name="register" class="edu.hust.action.RegisterAction">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
                
                <!-- 在自定義interceptor并將其ref時, 系統會覆蓋掉默認的interceptor-stack(defaultStack), 為了保證系統默認的defaultStack不受印象, 我們需要顯式的將其引入 -->
                <!-- 注意兩個interceptor-ref的順序, 順序不同, 執行效果也不同: 先配置的先執行/后配置的先退出(先進后出) --> 
                <interceptor-ref name="defaultStack"></interceptor-ref> 
                <interceptor-ref name="myInterceptor"></interceptor-ref>
            </action>
        </package>
    </struts>
    方法2. 配置攔截器棧(即將多個interceptor串聯的一種元素)。然后在<action>中引入該攔截器棧就可以了。

    <struts>
        <package name="struts2" extends="struts-default">
            
            <interceptors>
                <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
            
                <interceptor-stack name="myInterceptorStack">
                    <interceptor-ref name="myInterceptor"></interceptor-ref> 
                    <interceptor-ref name="defaultStack"></interceptor-ref> 
                </interceptor-stack>
            </interceptors>
            
            <action name="register" class="edu.hust.action.RegisterAction">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result> 
                 
                <interceptor-ref name="myInterceptorStack"></interceptor-ref> 
            </action>
        </package>
    </struts>
    方法3. 修改默認攔截器,將自定義的攔截器棧定義為struts2的默認攔截器。

    <struts>
        <package name="struts2" extends="struts-default">
            
            <interceptors>
                <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
                <interceptor-stack name="myInterceptorStack">
                    <interceptor-ref name="myInterceptor"></interceptor-ref> 
                    <interceptor-ref name="defaultStack"></interceptor-ref> 
                </interceptor-stack>
            </interceptors>

            <!-- 此默認interceptor是針對所有action的 -->
            <!-- 如果某個action中引入了interceptor, 則在這個action中此默認interceptor就會失效 -->
            <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
            
            <action name="register" class="edu.hust.action.RegisterAction">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
            </action>
            
        </package>
    </struts>
    2. Interceptor的角色對象

    (1)攔截目標對象(被代理對象),這里目標對象就是action;

    (2)攔截器(一個類,動態的將某些方法插入到目標對象的某方法的before、after);

    (3)對目標對象生成的(動態)代理對象(代理對象內部方法綜合了目標對象方法+攔截器方法)。程序最終執行的是目標對象的代理,而這個代理已經插入了interceptor。

    攔截器作用:攔截action。interceptor相當于一個入口和出口,通過interceptor進入action,執行完action的代碼再通過interceptor出去。

    針對"struts2 -- interceptor(Interceptor怎么寫)"這篇文章的MyInterceptor.class和MyInterceptor2.class。根據下面的配置文件執行程序

    <struts>
        <package name="struts2" extends="struts-default">
            
            <interceptors>
                <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
                <interceptor name="myInterceptor2" class="edu.hust.interceptor.MyInterceptor2"></interceptor>
                <interceptor-stack name="myInterceptorStack">
                    <interceptor-ref name="myInterceptor"></interceptor-ref>
                    <interceptor-ref name="myInterceptor2"></interceptor-ref>
                    <interceptor-ref name="defaultStack"></interceptor-ref>
                </interceptor-stack>
            </interceptors>
            
            <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
            
            <action name="register" class="edu.hust.action.RegisterAction">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
            </action>
            
        </package>
    </struts>

    Console會得到以下打印輸出
    intercept start
    intercept2 start
    2008-9-19 19:42:06 com.opensymphony.xwork2.validator.ActionValidatorManagerFactory <clinit>
    信息: Detected AnnotationActionValidatorManager, initializing it...
    intercept2 finish
    intercept finish

    這個結果解釋了"interceptor相當于一個入口和出口,通過interceptor進入action,執行完action的代碼再通過interceptor出去"這句話。

    3. extends MethodFilterInterceptor的攔截器如何配置哪些方法該攔截、哪些方法不該攔截(針對方法攔截的配置)

    <struts>
        <package name="struts2" extends="struts-default">
            
            <interceptors>
                <interceptor name="myInterceptor3" class="edu.hust.interceptor.MyInterceptor3"></interceptor>
            </interceptors>
            
            <action name="register" class="edu.hust.action.RegisterAction" method="queryAll">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
                <!-- myInterceptor3攔截器只對RegisterAction中的queryAll()方法和insert()方法進行了攔截, 其他方法未進行攔截 -->
                <interceptor-ref name="myInterceptor3">
                    <param name="includeMethods">queryAll, execute</param>
                </interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </action>
            
            <action name="register" class="edu.hust.action.RegisterAction" method="insert">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
                <interceptor-ref name="myInterceptor3">
                    <param name="includeMethods">queryAll, insert</param>
                </interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </action>
            
            <action name="register" class="edu.hust.action.RegisterAction" method="update">
                <result name="input">/register.jsp</result>
                <result>/result.jsp</result>
                <interceptor-ref name="myInterceptor3">
                    <param name="includeMethods">queryAll, insert</param>
                </interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </action>
            
        </package>
    </struts>


    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ForWayfarer/archive/2008/09/20/2955586.aspx

    posted @ 2009-08-20 11:03 brock 閱讀(7517) | 評論 (0)編輯 收藏

    1.非Ioc方式

    HttpServletRequest request1 
    = ServletActionContext.getRequest();
    ActionContext context 
    = ActionContext.getContext();
    HttpServletRequest request2 
    = (HttpServletRequest).context.get(ServletActionContext.HTTP_REQUEST);

    取值:
    <s:property value="#request.key"/>

    HttpSession  session1 
    = ServletActionContext.getRequest().getSession();

    取值:
    <s:property value="#session.key"/>
    Map  session2 
    =(Map) ActionContext.getContext().get(ActionContext.SESSION);
    Map  session3 
    = ActionContext.getContext().getSession();

    取值:
    <s:property value="key"/>

    2.IoC方式 
         <interceptor-ref name="defaultStack"/>配置一定要真確 不然為null 
    這種方式相對來說變化就比較少了,具體流程如下所示。 
    獲得request對象: 
    第一步:讓action實現ServletRequestAware接口 
    第二步:在action中聲明一個HttpServletRequest類型的實例變量 
    第三步:在action中實現ServletRequestAware接口的setServletRequest方法,實現方式很簡單,如下所示。 


    private HttpServletRequest request; 
    publicvoid setServletRequest(HttpServletRequest request) 

                
    this.request = request; 
        }
     
    獲得Session對象(注意,此時的session是SessionMap類型): 
    第一步:讓action實現SessionAware接口 
    第二步:在action中聲明一個HttpServletRequest類型的實例變量 
    第三步:在action中實現SessionAware接口的setSession方法,實現方式很簡單,如下所示。 


    private Map session; 
    publicvoid setSession(Map session) 

                
    this. session = session; 
        }
     



    本文來自CSDN博客,轉載請標明出處:http:
    //blog.csdn.net/xxxx1243/archive/2009/02/16/3896133.aspx
    posted @ 2009-08-20 10:32 brock 閱讀(353) | 評論 (0)編輯 收藏

    大多數語言都有包含其它代碼文件的命令,如ASP和c/c++下的Include,java下的import,唯獨javascript好像沒這功能,為了應付工作,特寫了如下這個函數:

    //******************************************************
    // 包含文件 用法: $import('../include/mian.js', 'js');
    //                 $import('../style/style.css', 'css');
    //******************************************************
    function $import(path, type){
     var i,
          base,
          src = "common.js",
          scripts = document.getElementsByTagName("script");

     

     for (i = 0; i < scripts.length; i++) {
          if (scripts[i].src.match(src)) {
              base = scripts[i].src.replace(src, "");
              break;
          }
      }
     
      if (type == "css") {
          document.write("<" + "link href=\"" + base + path + "\" rel=\"stylesheet\" type=\"text/css\"></" + "link>");
      } else {
          document.write("<" + "script src=\"" + base + path + "\"></" + "script>");
      }
    }

    附帶幾個類型判斷的函數:

    //******************************************************
    // 判斷類型
    //******************************************************
    function isAlien(a) {
      return isObject(a) && typeof a.constructor != 'function';
    }

     

    function isArray(a) {
      return isObject(a) && a.constructor == Array;
    }

    function isBoolean(a) {
      return typeof a == 'boolean';
    }

    function isEmpty(o) {
      var i, v;
      if (isObject(o)) {
        for (i in o) {
          v = o[i];
          if (isUndefined(v) && isFunction(v)) {
            return false;
          }
        }
      }
      return true;
    }

    function isFunction(a) {
      return typeof a == 'function';
    }

    function isNull(a) {
      return typeof a == 'object' && !a;
    }

    function isNumber(a) {
      return typeof a == 'number' && isFinite(a);
    }

    function isObject(a) {
      return (a && typeof a == 'object') || isFunction(a);
    }

    function isString(a) {
      return typeof a == 'string';
    }

    function isUndefined(a) {
      return typeof a == 'undefined';
    }

    posted @ 2009-07-23 13:50 brock 閱讀(185) | 評論 (0)編輯 收藏

    StringUtil.replace(StringUtil.replace(str,"\n","<br/>"),"\r\n","<br/>");  
    posted @ 2009-07-17 12:16 brock 閱讀(203) | 評論 (0)編輯 收藏

    ifconfig -a
    /sbin/ifconfig
    看IP

    export LANG=zh_CN.UTF-8


    locale 看字體


    ps -ef|grep serverName


    kill -9 num


    dos2unix run-wetv.sh


    rz 上傳


    #date -s 11:12:00
    #date -s 07/26/2005

    1)uname -a
    2)cat /proc/version
    3)cat /etc/issue  重點

    查看gcc的版本
    gcc --version

    查看 libc的版本
    rpm -qa|grep glibc

    建目錄
    mkdir -p ivas


    useradd ivas
    passwd ivas


    修改用戶主目錄
    修改用戶的主目錄主要使用usermod命令的-d參數,例如:
    usermod -d /www floatboat
    這一行將floatboat的主目錄改到/www。如果想將現有主目錄的主要內容轉移到新的目錄,應該使用-m開關,如下所示:
    usermod -d -m /www floatboat

    遠程拷備
    scp 文件 ivas@10.0.86.230:/ivas  指定文件
    scp -r * ivas@10.0.86.230:/ivas  所有文件

    tar -zxvf xxx.tar.gz

    安裝apache
    所需要安裝文件:
    httpd-2.2.0.tar.gz
    apache-tomcat-5.5.12.tar.gz
    jakarta-tomcat-connectors-1.2.15-src.tar.gz
    Linux下安裝:
    # tar xzvf httpd-2.2.0.tar.gz
    # cd httpd-2.2.0
    # ./configure --prefix=/usr/local/apache2 --enable-so
    # make
    # make install

    起動
    apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf

    [root@localhost bin]# ./apachectl stop
    [root@localhost bin]# ./apachectl start

     


    我在Fedora Core 3上已經成功安裝了jdk(jdk-1_5_0_02-linux-i586.rpm),其它版本的Linux基本相同,過程如下:

    1. 先從網上下載jdk(jdk-1_5_0_02-linux-i586.rpm) ,推薦SUN的官方網站www.sun.com,下載后放在/home目錄中,當然其它地方也行。

    進入安裝目錄
    #cd /home
    #cp jdk-1_5_0_02-linux-i586.rpm /usr/local
    #cd /usr/local
    給所有用戶添加可執行的權限
    #chmod +x jdk-1_5_0_02-linux-i586.rpm.bin
    #./jdk-1_5_0_02-linux-i586.rpm.bin
    此時會生成文件jdk-1_5_0_02-linux-i586.rpm,同樣給所有用戶添加可執行的權限
    #chmod +x jdk-1_5_0_02-linux-i586.rpm
    安裝程序
    #rpm -ivh jdk-1_5_0_02-linux-i586.rpm
    出現安裝協議等,按接受即可。

    2.設置環境變量。
    #vi /etc/profile
    在最后面加入
    #set java environment
    JAVA_HOME=/usr/java/jdk-1_5_0_02
    CLASSPATH=.:$JAVA_HOME/lib.tools.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH
    保存退出。

    要使JDK在所有的用戶中使用,可以這樣:
    vi /etc/profile.d/java.sh
    在新的java.sh中輸入以下內容:
    #set java environment
    JAVA_HOME=/usr/java/jdk-1_5_0_02
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH
    保存退出,然后給java.sh分配權限:chmod 755 /etc/profile.d/java.sh

    3.在終端使用echo命令檢查環境變量設置情況。
    #echo $JAVA_HOME
    #echo $CLASSPATH
    #echo $PATH

    4.檢查JDK是否安裝成功。
    #java -version
    如果看到JVM版本及相關信息,即安裝成功!

    ------------------------------------------------------------
    netstat   -anp   |   grep 6500

     liunx 版本
    cat   /proc/version
    ----------------------------------------------------------------
    從官網下載mysql-5.0.67-linux-i686.tar.gz,下載的這個版本不需要編譯安裝,解壓就能用了。
    #tar -zvxf mysql-5.0.67-linux-i686.tar.gz
    #mv mysql-5.0.67   /usr/local/mysql
    #cd /usr/local/mysql
    #groupadd mysql
    #useradd -g mysql mysql
    #chown -R mysql .  // 注意后面有個點
    #chgrp -R mysql .
    #scripts/mysql_install_db --user=mysql
    #chown -R root .
    #chown -R mysql data
    #bin/mysqld_safe --user=mysql &  // 啟動
    #cp ./support-files/mysql.server /etc/init.d/mysql      // 讓mysql以后可以隨系統一起啟動
    #/sbin/chkconfig --add mysql
    #./bin/mysql_secure_installation            // 運行這個腳本,會有個mysql的配置向導
    # /etc/rc.d/init.d/mysqld start     //重啟一下機器,就可以啟動 MySQL
    # ./bin/mysqladmin -u root password 'password_for_root'
    # ./bin/mysqladmin -uroot -p password "新密碼"   //可以通過這方式修改密碼
    # service mysqld stop //關閉 MySQL

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

    posted @ 2009-07-10 17:15 brock 閱讀(222) | 評論 (0)編輯 收藏

    http://www.tkk7.com/justfly/archive/2007/02/05/98090.html
    Remote Debugging with Eclipse說明了遠程調試的原理,說明了讓java程序支持被遠程調用所需要的java參數如下
    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
    以及如何配置遠程調試weblogic、jboss和tomcat,但是里面對如何讓tomcat支持遠程調用并沒有仔細說。再搜索,在tomcat的FAQ就找到了:
    How do I configure Tomcat to support remote debugging?
    如上面所示,其中的關鍵在于如何正確的啟動tomcat。對于非windows平臺下的操作來說,需要把%TOMCAT_HOME%/bin/startup.sh中的最后一行exec "$PRGDIR"/"$EXECUTABLE" start "$@" 中的start改成jpda start。如果的8000端口有其他用處的話,那么還需要修改catalina.sh文件,看其中的說明,添加一行JPDA_ADDRESS=”1044”或者其他你指定的端口。這樣就可以通過startup.sh或者catalina.sh jpda start來其中支持遠程調試的tomcat了。
    在windows平臺上是一樣的步驟,只不過.sh文件改成了.bat文件了。然后需要注意以下這些地方,
    1、 catalina.bat文件默認的JPDA_TRANSPORT是dt_shmem,但是Eclipse只支持dt_socket,所以需要在catalina.bat中添加一行set JPDA_TRANSPORT=”dt_socket”
    2、 catalina.bat文件默認的端口是jdbconn,我也不知道這個端口是多少,因此添加一個set JPDA_ADDRESS="1044"
    posted @ 2009-06-10 16:36 brock 閱讀(478) | 評論 (0)編輯 收藏

          在使用MINA做客戶端程序時,發現雖然調用了session.close()方法,通過日志也確實看到當前session已經被關閉了,但未什么客戶端程序進程卻沒有停止呢?即MINA客戶端沒有根本的關閉。這個現象在版本1和2中都存在。這是MINA的bug嗎???其實不然...

          我們可以啟動2個服務器端,然后用同一個connector實例來連接這2臺服務器,通過結果可以發現2個連接是相互獨立工作的,及connector和session不是一對一的。

          通過查閱API和源代碼,我們可以發現這里的connector實際是一個連接管理器,其內部通過一個connectQueue隊列同步存儲一個連接列表。并在調用connect()方法時,將當前連接請求注冊到隊列中;同時connector中啟動著一個內部的Worker(工作線程)來管理這些連接。當我們關閉某個session之后,只是關閉了某個請求,工作線程其實并沒有被關閉,所以出現程序沒有停止的現象。

    MINA1.1.7

    可以通過設置工作超時來關閉連接,當所有的連接都被關閉后worker線程將停止,即connector停止。

    Java代碼 復制代碼
    1. connector.setWorkerTimeout(1);   //1秒鐘(默認超時60秒)  

    PS:Worker定義在SocketConnector類中,內部直接實現管理

    MINA2.0

    可以調用connector的dispose()方法。該方法通過調用ExecutorService的shutdown()方法停止業務處理線程,并設置內部disposed標志位標識需要停止連接管理器;Worker線程通過該標識停止。

    Java代碼 復制代碼
    1. connector.dispose();  

    PS: Worker定義在AbstractPollingIoConnector類中,disposed標志在AbstractIoService類中,通過dispose()方法停止ExecutorService并設置disposed標志

    posted @ 2009-06-04 13:18 brock 閱讀(2880) | 評論 (0)編輯 收藏


    導出數據
    mysqldump --opt -h10.10.10.33 -upoi_user -pa_user --skip-lock-tables a_mis_database>/tmp/database.sql 


    shell> mysqldump [OPTIONS] database [tables]  

    如果你不給定任何表,整個數據庫將被導出。  

    通過執行mysqldump --help,你能得到你mysqldump的版本支持的選項表。  

    注意,如果你運行mysqldump沒有--quick或--opt選項,mysqldump將在導出結果前裝載整個結果集到內存中,如果你正在導出一個大的數據庫,這將可能是一個問題。  

    mysqldump支持下列選項:  

    --add-locks  
    在每個表導出之前增加LOCK TABLES并且之后UNLOCK TABLE。(為了使得更快地插入到MySQL)。  
    --add-drop-table  
    在每個create語句之前增加一個drop table。  
    --allow-keywords  
    允許創建是關鍵詞的列名字。這由表名前綴于每個列名做到。  
    -c, --complete-insert  
    使用完整的insert語句(用列名字)。  
    -C, --compress  
    如果客戶和服務器均支持壓縮,壓縮兩者間所有的信息。  
    --delayed  
    用INSERT DELAYED命令插入行。  
    -e, --extended-insert  
    使用全新多行INSERT語法。(給出更緊縮并且更快的插入語句)  
    -#, --debug[=option_string]  
    跟蹤程序的使用(為了調試)。  
    --help  
    顯示一條幫助消息并且退出。  
    --fields-terminated-by=...  
       
    --fields-enclosed-by=...  
       
    --fields-optionally-enclosed-by=...  
       
    --fields-escaped-by=...  
       
    --fields-terminated-by=...  
    這些選擇與-T選擇一起使用,并且有相應的LOAD DATA INFILE子句相同的含義。  
    LOAD DATA INFILE語法。  
    -F, --flush-logs  
    在開始導出前,洗掉在MySQL服務器中的日志文件。  
    -f, --force,  
    即使我們在一個表導出期間得到一個SQL錯誤,繼續。  
    -h, --host=..  
    從命名的主機上的MySQL服務器導出數據。缺省主機是localhost。  
    -l, --lock-tables.  
    為開始導出鎖定所有表。  
    -t, --no-create-info  
    不寫入表創建信息(CREATE TABLE語句)  
    -d, --no-data  
    不寫入表的任何行信息。如果你只想得到一個表的結構的導出,這是很有用的!  
    --opt  
    同--quick --add-drop-table --add-locks --extended-insert --lock-tables。  
    應該給你為讀入一個MySQL服務器的盡可能最快的導出。  
    -pyour_pass, --password[=your_pass]  
    與服務器連接時使用的口令。如果你不指定“=your_pass”部分,mysqldump需要來自終端的口令。  
    -P port_num, --port=port_num  
    與一臺主機連接時使用的TCP/IP端口號。(這用于連接到localhost以外的主機,因為它使用 Unix套接字。)  
    -q, --quick  
    不緩沖查詢,直接導出至stdout;使用mysql_use_result()做它。  
    -S /path/to/socket, --socket=/path/to/socket  
    與localhost連接時(它是缺省主機)使用的套接字文件。  
    -T, --tab=path-to-some-directory  
    對于每個給定的表,創建一個table_name.sql文件,它包含SQL CREATE 命令,和一個table_name.txt文件,它包含數據。 注意:這只有在mysqldump運行在mysqld守護進程運行的同一臺機器上的時候才工作。.txt文件的格式根據--fields-xxx和--lines--xxx選項來定。  
    -u user_name, --user=user_name  
    與服務器連接時,MySQL使用的用戶名。缺省值是你的Unix登錄名。  
    -O var=option, --set-variable var=option設置一個變量的值。可能的變量被列在下面。  
    -v, --verbose  
    冗長模式。打印出程序所做的更多的信息。  
    -V, --version  
    打印版本信息并且退出。  
    -w, --where='where-condition'  
    只導出被選擇了的記錄;注意引號是強制的!  
    "--where=user='jimf'" "-wuserid>1" "-wuserid<1" 

    最常見的mysqldump使用可能制作整個數據庫的一個備份: 

    mysqldump --opt database > backup-file.sql  

    但是它對用來自于一個數據庫的信息充實另外一個MySQL數據庫也是有用的:  

    mysqldump --opt database | mysql --host=remote-host -C database  

    由于mysqldump導出的是完整的SQL語句,所以用mysql客戶程序很容易就能把數據導入了:  

    shell> mysqladmin create target_db_name  
    shell> mysql target_db_name < backup-file.sql 
    就是 
    shell> mysql 庫名 < 文件名 
    posted @ 2009-05-20 11:20 brock 閱讀(173) | 評論 (0)編輯 收藏

     

    定義Hibernate Dialect解決createSQLQuery時的decimal,long類型問題

    org.hibernate.MappingException: No Dialect mapping for JDBC type: 3

    首先建一個類,繼承org.hibernate.dialect.DB2Dialect,該類的內容如下:

    import java.sql.Types;

    import org.hibernate.Hibernate;
    import org.hibernate.dialect.DB2Dialect;

    public class PmDb2Dialect extends DB2Dialect
    {
    public PmDb2Dialect()
    {
         super();
         registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());
    }
    }

    第二步,就是修改hibernate的配置文件hibernate.cfg.xml:

    將:

         <property name="hibernate.dialect">
          org.hibernate.dialect.DB2Dialect
         </property>

    改為:

         <property name="hibernate.dialect">
          com.yonder.pm.common.PmDb2Dialect
         </property>

    posted @ 2009-05-12 11:11 brock 閱讀(1495) | 評論 (0)編輯 收藏

    僅列出標題
    共15頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 
    主站蜘蛛池模板: 两个人看的www高清免费视频| 曰批免费视频播放免费| 华人在线精品免费观看| 亚洲国产精品一区二区第四页| 亚洲熟妇无码八V在线播放| 国产免费久久精品99re丫y| 中文字幕亚洲综合精品一区| 69视频免费观看l| 亚洲成人午夜电影| 无码人妻一区二区三区免费 | 亚洲国产精品特色大片观看完整版| sss日本免费完整版在线观看| 亚洲精品无码99在线观看| 亚洲视频在线免费| 久久国产亚洲精品麻豆| 最刺激黄a大片免费网站| 中文字幕亚洲男人的天堂网络| 在线观看免费a∨网站| 精品在线观看免费| 2022年亚洲午夜一区二区福利 | 青娱乐免费在线视频| 亚洲精华国产精华精华液好用 | 久久久久成人精品免费播放动漫| 亚洲国产精品VA在线观看麻豆 | 久久中文字幕免费视频| 亚洲伊人久久大香线蕉影院| 日韩在线a视频免费播放| a毛片成人免费全部播放| 亚洲黄色免费网站| 日本免费v片一二三区| 91成人免费福利网站在线| 久久亚洲AV无码精品色午夜| 麻豆国产VA免费精品高清在线| 图图资源网亚洲综合网站| 无码国产精品一区二区免费虚拟VR| 美女裸免费观看网站| 内射干少妇亚洲69XXX| 国产自产拍精品视频免费看| 久久精品国产这里是免费| 国产精品久久久久久亚洲影视| 亚洲VA中文字幕无码毛片 |