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 閱讀(1312) | 評論 (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 閱讀(354) | 評論 (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 閱讀(186) | 評論 (0)編輯 收藏

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

          http://www.aygfsteel.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 閱讀(480) | 評論 (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 閱讀(2881) | 評論 (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 閱讀(174) | 評論 (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 閱讀(1498) | 評論 (0)編輯 收藏

          僅列出標題
          共15頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 
          主站蜘蛛池模板: 陕西省| 班戈县| 剑河县| 阳信县| 烟台市| 新蔡县| 商丘市| 多伦县| 延长县| 沁源县| 象州县| 波密县| 房山区| 顺昌县| 大邑县| 嘉黎县| 内江市| 耒阳市| 米林县| 彭山县| 湖南省| 贵阳市| 衡阳县| 霍林郭勒市| 洪江市| 桂平市| 泗水县| 丰城市| 汽车| 勐海县| 闽清县| 清徐县| 德格县| 英山县| 玉环县| 永川市| 酒泉市| 麻城市| 壤塘县| 白河县| 行唐县|