海水正藍(lán)

          面朝大海,春暖花開(kāi)
          posts - 145, comments - 29, trackbacks - 0, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          2013年5月4日

          在用 extjs editorgridpanel 進(jìn)行輸入編輯的時(shí)候, 默認(rèn)情況下只支持使用 tab 鍵可以實(shí)現(xiàn)焦點(diǎn)切換, 如果想讓editorgridpanel 在編輯時(shí)通過(guò)方向鍵來(lái)實(shí)現(xiàn)焦點(diǎn)跳轉(zhuǎn)切換,只需加上以下代碼:

          //讓grid支持方向鍵盤(pán) by liongis@163.com
          Ext.override(Ext.grid.CellSelectionModel, {
              onEditorKey : function(field, e) {
                  var smodel 
          = this;
                  var k 
          = e.getKey(), newCell, g = smodel.grid, ed = g.activeEditor;
                  
          switch(k){
                      
          case e.TAB:
                           e.stopEvent();
                           ed.completeEdit();
                           
          if (e.shiftKey) {
                               newCell 
          = g.walkCells(ed.row, ed.col-1-1, smodel.acceptsNav, smodel);
                           } 
          else {
                               newCell 
          = g.walkCells(ed.row, ed.col+11, smodel.acceptsNav, smodel);
                           }
                           
          if (ed.col == 1) {
                               
          if (e.shiftKey) {
                                   newCell 
          = g.walkCells(ed.row, ed.col+1-1, smodel.acceptsNav, smodel);
                               } 
          else {
                                   newCell 
          = g.walkCells(ed.row, ed.col+11, smodel.acceptsNav, smodel);
                               }
                           }
                          
          break;
                      
          case e.UP:
                           e.stopEvent();
                           ed.completeEdit();
                           newCell 
          = g.walkCells(ed.row-1, ed.col, -1, smodel.acceptsNav, smodel);
                          
          break;
                      
          case e.DOWN:
                           e.stopEvent();
                           ed.completeEdit();
                           newCell 
          = g.walkCells(ed.row+1, ed.col, 1, smodel.acceptsNav, smodel);
                          
          break;
                      
          case e.LEFT:
                           e.stopEvent();
                           ed.completeEdit();
                           newCell 
          = g.walkCells(ed.row, ed.col-1-1, smodel.acceptsNav, smodel);
                           
          break;
                       
          case e.RIGHT:
                           e.stopEvent();
                           ed.completeEdit();
                           newCell 
          = g.walkCells(ed.row, ed.col+11, smodel.acceptsNav, smodel);
                             
          break;
                  }
                 
          if (newCell) {
                      g.startEditing(newCell[
          0], newCell[1]);
                 }
               }
          });
          注意:這里重寫(xiě)的是:CellSelectionModel ,而不是RowSelectionMode
          原文出自:
          http://www.cnblogs.com/liongis/p/3284620.html

          posted @ 2013-08-27 13:10 小胡子 閱讀(325) | 評(píng)論 (0)編輯 收藏

          序言:

             1.本文摘自網(wǎng)絡(luò),看控件命名像是4.0以前的版本,但控件屬性配置仍然可以借鑒(不足之處,以后項(xiàng)目用到時(shí)再續(xù)完善)。

          Ext.form.TimeField:

            配置項(xiàng): 
                     maxValue:列表中允許的最大時(shí)間 
                     maxText:當(dāng)時(shí)間大于最大值時(shí)的錯(cuò)誤提示信息 
                     minValue:列表中允許的最小時(shí)間 
                     minText:當(dāng)時(shí)間小于最小值時(shí)的錯(cuò)誤提示信息 
                     increment:兩個(gè)相鄰選項(xiàng)間的時(shí)間間隔,默認(rèn)為15分鐘 
                     format:顯示格式,默認(rèn)為“g:i A”。一般使用“H:i:s” 
                          H:帶前綴0的24小時(shí) 
                           i:帶前綴0的分鐘 
                          s:帶前綴0的秒 
                     invalidText:當(dāng)時(shí)間值非法時(shí)顯示的提示信息 
                     altFormats:多個(gè)時(shí)間輸入格式組成的字符串,不同的格式之間使用“|”進(jìn)行分割

          Ext.form.FieldSet

              animCollapse:動(dòng)畫(huà)折疊,默認(rèn)為false 
                     checkboxToggle:設(shè)置是否顯示字段集的checkbox選擇框,默認(rèn)為false 
                     checkboxName:指定字段集中用于展開(kāi)或隱藏字段集面板的checkbox的名字,該屬性只有在checkboxToggle為true時(shí)生效 
                     labelWidth:字段標(biāo)簽的寬度,可以級(jí)聯(lián)到子容器 
                     layout:布局,默認(rèn)為form

          Ext.form.DateFied

              maxValue:允許選擇的最大日期 
                     maxText:當(dāng)日期大于最大值時(shí)的錯(cuò)誤提示信息 
                     minValue:允許選擇的最小時(shí)間 
                     minText:當(dāng)日期小于最小值時(shí)的錯(cuò)誤提示信息 
                     format:日期顯示格式,默認(rèn)為“m/d/y”,一般使用“Y-m-d” 
                         Y:四位年份 
                         m:帶前綴0的月份 
                         d:帶前綴0的日期 
                         y:兩位年份 
                         n:不帶前綴0的月份 
                         j:不帶前綴0的日期 
                         w:星期的數(shù)字,0表示星期日,1代表星期一 
                     showToday:是否顯示今天按鈕,默認(rèn)為true 
                     altFormats:多個(gè)日期輸入格式組成的字符串,不同的格式之間使用“|”進(jìn)行分割,默認(rèn)值為'm/d/Y|n/j/Y|n/j/y|m/j /y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d' 
                     disabledDates:禁止選擇的日期組成的數(shù)組 
                     disabledDatesText:選擇禁選日期時(shí)顯示的提示信息 
                     disabledDays:禁止選擇的星期組成的數(shù)組,0代表星期日,1代表星期一 
                     disabledDaysText:選擇禁選星期時(shí)顯示的提示信息 
                     invalidText:當(dāng)日期值非法時(shí)顯示的提示信息 
               方法: 
                     getValue():取得日期值

          Ext.form.ComboBox

              displayField:被顯示在下拉框中的字段名 
                     editable:是否可編輯,默認(rèn)為true 
                     forceSelection:輸入值是否嚴(yán)格為待選列表中存在的值。如果輸入不存在的值,會(huì)自動(dòng)選擇第一個(gè)最接近的值。 
                     hiddenName:隱藏字段的名字,如果提供該參數(shù)則一個(gè)隱藏字段將被創(chuàng)建,用來(lái)存儲(chǔ)所選值,當(dāng)表單提交時(shí)在服務(wù)器端可以通過(guò)該名字取得列表中的所選值 
                     listWidth:下拉列表的寬度 
                     minListWidth:下拉列表的最小寬度,默認(rèn)為70像素 
                     loadingText:當(dāng)下拉框加載數(shù)據(jù)時(shí)顯示的提示信息,只有當(dāng)mode='remote'時(shí)才會(huì)生效 
                     maxHeight:下拉列表框的最大高度,默認(rèn)為300像素 
                     minChars:下拉列表框自動(dòng)選擇前用戶需要輸入的最小字符數(shù)量。mode='remote'默認(rèn)為4,mode='local'默認(rèn)為0 
                     mode:下拉列表框的數(shù)據(jù)讀取模式。remote讀取遠(yuǎn)程數(shù)據(jù),local讀取本地?cái)?shù)據(jù) 
                     pageSize:下拉列表框的分頁(yè)大小。該項(xiàng)設(shè)置只在mode='remote'時(shí)生效 
                     queryParam:查詢的名字,默認(rèn)為'query',將被傳遞到查詢字符串中 
                     allQuery:一個(gè)發(fā)往服務(wù)器用來(lái)查詢?nèi)啃畔⒌牟樵冏址J(rèn)為空字符串'' 
                     selectOnFocus:當(dāng)獲得焦點(diǎn)時(shí)立刻選擇一個(gè)已存在的列表項(xiàng)。默認(rèn)為false,此項(xiàng)只有在editable=true時(shí)才會(huì)生效 
                     store:列表框綁定的數(shù)據(jù)源 
                     transform:將頁(yè)面中已存在的元素轉(zhuǎn)換為組合框 
                     lazyInit:延時(shí)初始化下拉列表,默認(rèn)為true 
                     lazyRender:延時(shí)渲染,默認(rèn)為false 
                     triggerAction:設(shè)置單擊觸發(fā)按鈕時(shí)執(zhí)行的默認(rèn)操作,有效值包括all和query,默認(rèn)為query,如果設(shè)置為all則會(huì)執(zhí)行allQuery中設(shè)置的查詢 
                     typeAhead:設(shè)置在輸入過(guò)程中是否自動(dòng)選擇匹配的剩余部分文本(選擇第一個(gè)滿足條件的),默認(rèn)為false 
                     value:初始化組合框中的值 
                     valueField:組合框的值字段 
                     valueNotFoundText:值不存在時(shí)的提示信息 
                     tpl:Ext模板字符串或模板對(duì)象,可以通過(guò)該配置項(xiàng)自定義下拉列表的顯示方式 
               方法: 
                     clearValue():清空字段當(dāng)前值 
                     doQuery( String query, Boolean forceAll ): 
                     getValue(): 
                     getStore(): 
                     setValue( String value ):

          Ext.from.RadioGroup

              allowBlank: 
                     blankText:

          Ext.form.Radio;

              getGroupValue(): 
                     setValue( value {String/Boolean} ):

          Ext.form.CheckboxGroup

               allowBlank:是否允許不選擇,默認(rèn)為true 
                     blankText: 
                     columns:顯示的列數(shù),可選值包括:固定值auto、數(shù)值、數(shù)組(整數(shù)、小數(shù)) 
                     items:對(duì)象數(shù)組 
                     vertical:是否垂直方向顯示對(duì)象,默認(rèn)為false

          Ext.form.Checkbox

            boxLabel:復(fù)選框的文字描述 
                     checked:復(fù)選框是否被選擇,默認(rèn)為false 
                     handler:當(dāng)checked值改變時(shí)觸發(fā)的函數(shù),函數(shù)包含兩個(gè)參數(shù):checkbox、checked 
                     inputValue: 
               方法: 
                     getValue():返回復(fù)選框的checked狀態(tài) 
                     setValue( Boolean/String checked ):

          Ext.form.NumberField

                allowDecimals:是否允許輸入小數(shù),默認(rèn)為true 
                     allowNegative:是否允許輸入負(fù)數(shù),默認(rèn)為true 
                     baseChars:輸入的有效數(shù)字集合,默認(rèn)為'0123456789' 
                     decimalPrecision:數(shù)字的精度,默認(rèn)保留小數(shù)點(diǎn)后2位 
                     decimalSeparator:十進(jìn)制分隔符,默認(rèn)為'.' 
                     maxValue:允許輸入的最大數(shù)值 
                     maxText:超過(guò)最大值之后的提示信息 
                     minValue:允許輸入的最小數(shù)值 
                     minText:超過(guò)最小值之后的提示信息 
                     nanText:輸入非有效數(shù)值之后的提示信息

          Ext.form.TextArea

              preventScrollbars:是否禁止出現(xiàn)滾動(dòng)條,默認(rèn)為false

          Ext.form.TextField

              allowBlank:是否允許為空,默認(rèn)為true 
                    blankText:空驗(yàn)證失敗后顯示的提示信息 
                    emptyText:在一個(gè)空字段中默認(rèn)顯示的信息 
                    grow:字段是否自動(dòng)伸展和收縮,默認(rèn)為false 
                    growMin:收縮的最小寬度 
                    growMax:伸展的最大寬度 
                    inputType:字段類型:默認(rèn)為text 
                    maskRe:用于過(guò)濾不匹配字符輸入的正則表達(dá)式 
                    maxLength:字段允許輸入的最大長(zhǎng)度 
                    maxLengthText:最大長(zhǎng)度驗(yàn)證失敗后顯示的提示信息 
                    minLength:字段允許輸入的最小長(zhǎng)度 
                    minLengthText:最小長(zhǎng)度驗(yàn)證失敗后顯示的提示信息 
                    regex:正則表達(dá)式 
                    regexText:正則表達(dá)式驗(yàn)證失敗后顯示的提示信息 
                    vtype:驗(yàn)證類型的名字 
                         alpha:限制只能輸入字母 
                         alphanum:限制只能輸入字母和數(shù)字 
                         email 
                         url 
                    vtypeText:驗(yàn)證失敗時(shí)的提示信息 
                    validator:自定義驗(yàn)證函數(shù) 
                    selectOnFocus:當(dāng)字段得到焦點(diǎn)時(shí)自動(dòng)選擇已存在的文本,默認(rèn)為false

          Ext.form.Field

              name:字段名 
                    value:字段的初始化值 
                    disabled:字段是否不可用,默認(rèn)為false 
                    fieldLabel:字段標(biāo)簽說(shuō)明 
                    hideLabel:隱藏字段標(biāo)簽,默認(rèn)為false 
                    labelSeparator:字段標(biāo)簽與字段之間的分隔符,默認(rèn)為':' 
                    labelStyle:字段標(biāo)簽樣式 
                    inputType:默認(rèn)為text 
                    invalidClass:默認(rèn)為x-form-invalid 
                    invalidText:字段非法文本提示 
                    msgTarget:錯(cuò)誤信息顯示的位置,默認(rèn)為qtip 
                        qtip:顯示一個(gè)浮動(dòng)的提示信息 
                        title:顯示一個(gè)瀏覽器的浮動(dòng)提示信息 
                        under:在字段下方顯示一個(gè)提示信息 
                        side:在字段右邊顯示一個(gè)提示信息 
                    readOnly:字段是否只讀,默認(rèn)為false 
                    validateOnBlur:字段在失去焦點(diǎn)時(shí)被驗(yàn)證,默認(rèn)為true 
               方法: 
                    clearInvalid(): 
                    getRawValue() 
                    setRawValue( Mixed value ) 
                    getValue() 
                    setValue( Mixed value ) 
                    isDirty():字段值在裝載后是否被修改過(guò) 
                    isValid( Boolean preventMark ):當(dāng)前字段值是否合法 
                    markInvalid( [String msg] ) 
                    validate() 
                    reset()

          Ext.form.FormPanel

          items:一個(gè)元素或元素?cái)?shù)組 
                    buttons:一個(gè)按鈕配置對(duì)象的數(shù)組,按鈕將被添加到表單頁(yè)腳中 
                    buttonAlign:按鈕的對(duì)齊方式,可選值有l(wèi)eft、center、right,默認(rèn)為center 
                    labelWidth:表單標(biāo)簽的寬度 
                    labelAlign:表單標(biāo)簽的對(duì)齊方式,可選值有l(wèi)eft、top、right,默認(rèn)為left 
                    labelSeparator:字段標(biāo)簽與字段之間的分隔符,默認(rèn)為':' 
                    minButtonWidth:按鈕的最小寬度,默認(rèn)為75 
               方法: 
                    getForm() : Ext.form.BasicForm 
                    load( Object options ) 
                    startMonitoring() 
                    stopMonitoring()

          Ext.form.BaseicForm

              baseParams:傳遞到請(qǐng)求中的參數(shù) 
                    method:表單的提交方式,有效值包括GET、POST 
                    url:表單默認(rèn)的提交路徑 
                    fileUpload:表單是否進(jìn)行文件上傳 
                    timeout:表單動(dòng)作的超時(shí)時(shí)間,默認(rèn)為30秒 
                    trackResetOnLoad:是否在表單初次創(chuàng)建時(shí)清楚數(shù)據(jù) 
              方法: 
                    doAction( String/Object actionName, [Object options] ):執(zhí)行一個(gè)預(yù)訂的動(dòng)作,可用選項(xiàng)包括: 
                        url:動(dòng)作提交的路徑 
                        method:表單的提交方式,有效值包括GET、POST 
                        params:傳遞到請(qǐng)求中的參數(shù) 
                        headers: 
                        success:執(zhí)行成功后回調(diào)的函數(shù),包括兩個(gè)參數(shù):form和action 
                        failure:執(zhí)行失敗后回調(diào)的函數(shù),包括兩個(gè)參數(shù):form和action 
                        clientValidation:是否客戶端驗(yàn)證 
                    clearInvalid():清除表單中所有的無(wú)效驗(yàn)證信息 
                    findField( String id ):查找表單字段 
                    getValues( [Boolean asString] ): 
                    isDirty():表單數(shù)據(jù)是否被更改過(guò) 
                    isValid():客戶端驗(yàn)證是否成功 
                    load( Object options ):執(zhí)行表單讀取動(dòng)作 
                    loadRecord( Record record ):從一個(gè)數(shù)據(jù)記錄中讀取數(shù)據(jù)到表單中 
                    markInvalid( Array/Object errors ):成批設(shè)置表單字段為驗(yàn)證無(wú)效 
                    reset():重置表單 
                    setValues( Array/Object values ):成批設(shè)置表單字段值 
                    submit( Object options ):執(zhí)行表單提交動(dòng)作 
                    updateRecord( Record record ):持久化表單數(shù)據(jù)到記錄集中

          Ext.form.Action

              success:執(zhí)行成功后回調(diào)的函數(shù),包括兩個(gè)參數(shù):form和action 
                    failure:執(zhí)行失敗后回調(diào)的函數(shù),包括兩個(gè)參數(shù):form和action 
                    method:表單的提交方式,有效值包括GET、POST 
                    params:傳遞到請(qǐng)求中的參數(shù) 
                    url:動(dòng)作提交的路徑 
                    waitMsg:動(dòng)作執(zhí)行時(shí)顯示的等待信息 
               屬性: 
                    Action.CLIENT_INVALID:客戶端驗(yàn)證錯(cuò)誤 
                    Action.CONNECT_FAILURE:通信錯(cuò)誤 
                    Action.LOAD_FAILURE:加載數(shù)據(jù)時(shí),沒(méi)有包含data屬性的字段被返回 
                    Action.SERVER_INVALID:服務(wù)端驗(yàn)證錯(cuò)誤 
                    failureType:錯(cuò)誤類型 
                    result:包含布爾類型的success屬性和其他屬性,如{success: true, msg: 'ok'} 
                    type:動(dòng)作類型,可選值有submit和load 
                         Ext.form.Action.Submit:返回的信息中要包含一個(gè)布爾類型的success屬性和一個(gè)可選的errors屬性 
                         Ext.form.Action.Load:返回的信息中要包含一個(gè)布爾類型的success屬性和一個(gè)data屬性

          Ext.grid.EditorGridPanel

              clicksToEdit:設(shè)置點(diǎn)擊單元格進(jìn)入編輯模式的點(diǎn)擊次數(shù),默認(rèn)為2 
                      autoEncode:是否自動(dòng)編碼/解碼HTML內(nèi)容,默認(rèn)為false 
                      selModel:默認(rèn)為Ext.grid.CellSelectionModel 
            
                主要方法: 
                      startEditing( Number rowIndex, Number colIndex ):開(kāi)始編輯指定單元格 
                      stopEditing( [Boolean cancel] ):結(jié)束編輯操作

          Ext.grid.GroupinView

              enableGroupingMenu:是否在表頭菜單中進(jìn)行分組控制,默認(rèn)為true 
                      groupByText:表頭菜單中分組控制的菜單文字,默認(rèn)為'Group By This Field' 
            
                      enableNoGroups:是否允許用戶關(guān)閉分組功能,默認(rèn)為true 
                      showGroupsText:在表頭菜單中啟用分組和禁用分組的菜單文字,默認(rèn)為'Show in Groups' 
            
                      groupTextTpl:用于渲染分組信息的模板,默認(rèn)為'{text}',常用的可選值有: 
                            text:列標(biāo)題:組字段值 
                            gvalue:組字段的值 
                            startRow:組行索引 
            
                      enableGrouping:是否對(duì)數(shù)據(jù)分組,默認(rèn)為true 
                      hideGroupedColumn:是否隱藏分組列,默認(rèn)為false 
                      ignoreAdd:在向表格中添加數(shù)據(jù)時(shí)是否刷新表格,默認(rèn)為false 
                      showGroupName:是否在分組行上顯示分組字段的名字,默認(rèn)為true 
                      startCollapsed:初次顯示時(shí)分組是否處于收縮狀態(tài),默認(rèn)為false 
            
                主要方法: 
                      collapseAllGroups():收縮所有分組行 
                      expandAllGroups():展開(kāi)所有分組行 
                      getGroupId( String value ):根據(jù)分組字段值取得組id 
                      toggleAllGroups( [Boolean expanded] ):切換所有分組行的展開(kāi)或收縮狀態(tài) 
                      toggleGroup( String groupId, [Boolean expanded] ):切換指定分組行的展開(kāi)或收縮狀態(tài) 


          2、Ext.data.GroupingStore 
                groupField:分組字段 

                groupOnSort:是否在分組字段上排序,默認(rèn)為false 
                remoteGroup:是否遠(yuǎn)程分組數(shù)據(jù),默認(rèn)為false。如果是遠(yuǎn)程分組數(shù)據(jù),則通過(guò)groupBy參數(shù)發(fā)送分組字段名

          Ext.grid.GridPanel:

              store:表格的數(shù)據(jù)集 
                    columns:表格列模式的配置數(shù)組,可自動(dòng)創(chuàng)建ColumnModel列模式 
                    autoExpandColumn:自動(dòng)充滿表格未用空間的列,參數(shù)為列id,該id不能為0 
                    stripeRows:表格是否隔行換色,默認(rèn)為false 
            
                    cm、colModel:表格的列模式,渲染表格時(shí)必須設(shè)置該配置項(xiàng) 
                    sm、selModel:表格的選擇模式,默認(rèn)為Ext.grid.RowSelectionModel 
                    enableHdMenu:是否顯示表頭的上下文菜單,默認(rèn)為true 
                    enableColumnHide:是否允許通過(guò)標(biāo)題中的上下文菜單隱藏列,默認(rèn)為true 
                    loadMask:是否在加載數(shù)據(jù)時(shí)顯示遮罩效果,默認(rèn)為false 
                    view:表格視圖,默認(rèn)為Ext.grid.GridView 
                    viewConfig:表格視圖的配置對(duì)象 
            
                    autoExpandMax:自動(dòng)擴(kuò)充列的最大寬度,默認(rèn)為1000 
                    autoExpandMin:自動(dòng)擴(kuò)充列的最小寬度,默認(rèn)為50 
                    columnLines:是否顯示列分割線,默認(rèn)為false 
                    disableSelection:是否禁止行選擇,默認(rèn)為false 
                    enableColumnMove:是否允許拖放列,默認(rèn)為true 
                    enableColumnResize:是否允許改變列寬,默認(rèn)為true 
                    hideHeaders:是否隱藏表頭,默認(rèn)為false 
                    maxHeight:最大高度 
                    minColumnWidth:最小列寬,默認(rèn)為25 
                    trackMouseOver:是否高亮顯示鼠標(biāo)所在的行,默認(rèn)為true 
            
                主要方法: 
                    getColumnModel():取得列模式 
                    getSelectionModel():取得選擇模式 
                    getStore():取得數(shù)據(jù)集 
                    getView():取得視圖對(duì)象 
                    reconfigure( Ext.data.Store store, Ext.grid.ColumnModel colModel ):使用一個(gè)新的數(shù)據(jù)集和列模式重新配置表格組件 

          2、Ext.grid.Column 
                主要配置項(xiàng): 
                    id:列id 
                    header:表頭文字 
                    dataIndex:設(shè)置列與數(shù)據(jù)集中數(shù)據(jù)記錄的對(duì)應(yīng)關(guān)系,值為數(shù)據(jù)記錄中的字段名稱。如果沒(méi)有設(shè)置該項(xiàng)則使用列索引與數(shù)據(jù)記錄中字段的索引進(jìn)行對(duì)應(yīng) 
                    width:列寬 
                    align:列數(shù)據(jù)的對(duì)齊方式 
            
                    hidden:是否隱藏列,默認(rèn)為false 
                    fixed:是否固定列寬,默認(rèn)為false 
                    menuDisabled:是否禁用列的上下文菜單,默認(rèn)為false 
                    resizable:是否允許改變列寬,默認(rèn)為true 
                    sortable:是否允許排序,默認(rèn)為true 
                    renderer:設(shè)置列的自定義單元格渲染函數(shù) 
                          傳入函數(shù)的參數(shù)有: 
                              value:數(shù)據(jù)的原始值 
                              metadata:元數(shù)據(jù)對(duì)象,用于設(shè)置單元格的樣式和屬性,該對(duì)象包含的屬性有: 
                                    css:應(yīng)用到單元格TD元素上的樣式名稱 
                                    attr:一個(gè)HTML屬性定義字符串,例如'style="color:blue"' 
                              record:當(dāng)前數(shù)據(jù)記錄對(duì)象 
                              rowIndex:?jiǎn)卧竦男兴饕?nbsp;
                              colIndex:?jiǎn)卧竦牧兴饕?nbsp;
                              store:數(shù)據(jù)集對(duì)象 
              
                    xtype:列渲染器類型,默認(rèn)為gridcolumn,其它可選值有booleancolumn、numbercolumn、datecolumn、templatecolumn等 
            
                    editable:是否可編輯,默認(rèn)為true 
                    editor:編輯器 
            
                    groupName: 
                    emptyGroupText: 
                    groupable: 

          3、Ext.grid.ColumnModel 
                主要配置項(xiàng): 
                    columns:字段數(shù)組 
                    defaultSortable:是否進(jìn)行默認(rèn)排序,默認(rèn)為false 
                    defaultWidth:默認(rèn)寬度 
            
                主要方法: 
                    findColumnIndex( String col ):根據(jù)給定的dataIndex查找列索引 
                    getColumnById( String id ):取得指定id對(duì)應(yīng)的列 
                    getColumnCount( Boolean visibleOnly ):取得列總數(shù) 
                    getColumnHeader( Number col ):取得列的表頭 
                    getColumnId( Number index ):取得列id 
                    getDataIndex( Number col ):取得列對(duì)應(yīng)的數(shù)據(jù)字段名 
                    getIndexById( String id ):取得列索引 
                    getTotalWidth( Boolean includeHidden ) 
                    isCellEditable( Number colIndex, Number rowIndex ) 
                    isFixed() 
                    isHidden( Number colIndex ) 
                    setColumnHeader( Number col, String header ) 
                    setColumnWidth( Number col, Number width, Boolean suppressEvent ) 
                    setDataIndex( Number col, String dataIndex ) 
                    setEditable( Number col, Boolean editable ) 
                    setEditor( Number col, Object editor ) 
                    setHidden( Number colIndex, Boolean hidden ) 
                    setRenderer( Number col, Function fn ) 
          4、Ext.grid.AbstractSelectionModel 
                主要方法: 
                      lock():鎖定選擇區(qū)域 
                      unlock():解鎖選擇區(qū)域 
                      isLocked():當(dāng)前選擇區(qū)域是否被鎖定 
          5、Ext.grid.CellSelectionModel 
                主要方法: 
                      clearSelections( Boolean preventNotify ):清除選擇區(qū)域 
                      getSelectedCell():取得當(dāng)前選擇的單元格,返回一數(shù)組,其格式:[rowIndex, colIndex] 
                      hasSelection():當(dāng)前是否有選擇區(qū)域 
                      select( Number rowIndex, Number colIndex, [Boolean preventViewNotify], [Boolean preventFocus], [Ext.data.Record r] ):選擇指定單元格 
          6、Ext.grid.RowSelectionModel 
                主要配置項(xiàng): 
                      singleSelect:是否單選模式,默認(rèn)為false,即可以選擇多條數(shù)據(jù) 

                主要方法: 
                      clearSelections( [Boolean fast] ):清除所有選擇區(qū)域 
                      deselectRange( Number startRow, Number endRow ):取消范圍內(nèi)的行選擇 
                      deselectRow( Number row, [Boolean preventViewNotify] ):取消指定行的選擇狀態(tài) 
                      each( Function fn, [Object scope] ):遍歷所有選擇行,并調(diào)用指定函數(shù)。當(dāng)前被選行將傳入該函數(shù)中 
                      getCount():得到選擇的總行數(shù) 
                      getSelected():得到第一個(gè)被選記錄 
                      getSelections():得到所有被選記錄的數(shù)組 
                      hasNext():判斷當(dāng)前被選行之后是否還有記錄可以選擇 
                      hasPrevious():判斷當(dāng)前被選行之前是否還有記錄可以選擇 
                      hasSelection():是否已選擇了數(shù)據(jù) 
                      isIdSelected( String id ):判斷指定id的記錄是否被選擇 
                      isSelected( Number/Record index ):判斷指定記錄或記錄索引的數(shù)據(jù)是否被選擇 
                      selectAll():選擇所有行 
                      selectFirstRow():選擇第一行 
                      selectLastRow( [Boolean keepExisting] ):選擇最后行 
                            keepExisting:是否保持已有的選擇 
                      selectNext( [Boolean keepExisting] ):選擇當(dāng)前選擇行的下一行 
                      selectPrevious( [Boolean keepExisting] ):選擇當(dāng)前選擇行的上一行 
                      selectRange( Number startRow, Number endRow, [Boolean keepExisting] ):選擇范圍內(nèi)的所有行 
                      selectRecords( Array records, [Boolean keepExisting] ):選擇一組指定記錄 
                      selectRow( Number row, [Boolean keepExisting], [Boolean preventViewNotify] ):選擇一行 
                            row:行索引 
                      selectRows( Array rows, [Boolean keepExisting] ):選擇多行 
                            rows:行索引數(shù)組 
          7、Ext.grid.CheckboxSelectionModel 
                主要配置項(xiàng): 
                      singleSelect:是否單選模式,默認(rèn)為false,即可以選擇多條數(shù)據(jù) 
                      checkOnly:是否只能通過(guò)點(diǎn)擊checkbox列進(jìn)行選擇,默認(rèn)為false 
                      sortable:是否允許checkbox列排序,默認(rèn)為false 
                      width:checkbox列的寬度,默認(rèn)為20 
          8、Ext.grid.RowNumberer 
                主要配置項(xiàng): 
                      header:行號(hào)列表頭顯示的內(nèi)容 
                      width:列寬,默認(rèn)為23
          9、Ext.grid.GridView 
                主要配置項(xiàng): 
                      enableRowBody:是否包含行體 
                      sortAscText:表格標(biāo)題菜單中升序的文字描述 
                      sortDescText:表格標(biāo)題菜單中降序的文字描述 
                      columnsText:表格標(biāo)題菜單中列對(duì)應(yīng)的文字描述 
                      autoFill:是否自動(dòng)擴(kuò)展列以充滿整個(gè)表格,默認(rèn)為false 
                      forceFit:是否強(qiáng)制調(diào)整表格列寬以適用表格的整體寬度,防止出現(xiàn)水平滾動(dòng)條,默認(rèn)為false 

                主要方法: 
                      focusCell( Number row, Number col ):將焦點(diǎn)移到指定單元格 
                      focusRow( Number row ):將焦點(diǎn)移動(dòng)指定行 
                      getCell( Number row, Number col ):取得指定單元格對(duì)應(yīng)的td元素 
                      getHeaderCell( Number index ):取得指定表頭對(duì)應(yīng)的td元素 
                      getRow( Number index ):取得指定行對(duì)應(yīng)的tr元素 
                      getRowClass( Record record, Number index, Object rowParams, Store store ):得到附加到表格行上的樣式名 
                            record:當(dāng)前行的數(shù)據(jù)記錄對(duì)象 
                            index:當(dāng)前行的索引 
                            rowParams:渲染時(shí)傳入到行模板中的配置對(duì)象,通過(guò)它可以為行體定制樣式,該對(duì)象只在enableRowBody為true時(shí)才生效,可能的屬性如下: 
                                  body:渲染到行體中的HTML代碼片段 
                                  bodyStyle:應(yīng)用到行體tr元素style屬性的字符串 
                                  cols:應(yīng)用到行體td元素colspan屬性的值,默認(rèn)為總列數(shù) 
                            store:表格數(shù)據(jù)集 
                      refresh( [Boolean headersToo] ):刷新表格組件 
                      scrollToTop():滾動(dòng)表格到頂端

          Ext.TabPanel:

            activeTab:初始激活的tab,索引或者id值,默認(rèn)為none 
                autoTabs:是否自動(dòng)將帶有'x-tab'樣式類的div轉(zhuǎn)成tabs添加到TabPanel中,默認(rèn)為false。 
                      當(dāng)該配置項(xiàng)設(shè)為true時(shí),需要設(shè)置deferredRender為false,還必須使用applyTo。 
                deferredRender:是否延遲渲染,默認(rèn)為true。 
                autoTabSelector:默認(rèn)為'div.x-tab'。 

                resizeTabs:是否可以改變tab的尺寸,默認(rèn)為false。 
                minTabWidth:tab的最小寬度,默認(rèn)為30。 
                tabWidth:每個(gè)新增加的tab寬度,默認(rèn)為120。 
                tabTip:tab的提示信息 

                tabPosition:tab位置,可選值有top、bottom,默認(rèn)為top。 
                enableTabScroll:是否允許Tab溢出時(shí)可以滾動(dòng),默認(rèn)為false。 
                closable:tab是否可關(guān)閉,默認(rèn)為false 

                scrollDuration:每次的滾動(dòng)時(shí)長(zhǎng),默認(rèn)為0.35毫秒。 
                scrollIncrement:每次的滾動(dòng)步長(zhǎng),默認(rèn)為100像素。 
                wheelIncrement:每次鼠標(biāo)滑輪的滾動(dòng)步長(zhǎng),默認(rèn)為20像素。 
          2、主要方法: 
                activate( String/Panel tab ) 
                getActiveTab():獲取當(dāng)前活動(dòng)的tab 
                get( String/Number key ):根據(jù)組件id或者索引獲取組件 
                getItem(String id):根據(jù)tab id獲取tab 
                setActiveTab( String/Number item ) 
                remove( Component/String component, [Boolean autoDestroy] ) 
                removeAll( [Boolean autoDestroy] )
          在使用TabPanel時(shí)需要注意: 

           

                 1、在創(chuàng)建Ext.TabPanel時(shí)deferredRender配置項(xiàng)經(jīng)常會(huì)被忽略。該配置項(xiàng)的默認(rèn)值是true。true表示只有在用戶第一次訪問(wèn) 選項(xiàng)卡時(shí),該選項(xiàng)卡的panel才會(huì)被渲染。 所以當(dāng)我們有可能使用腳本操作選項(xiàng)卡時(shí),謹(jǐn)記將該配置項(xiàng)設(shè)置為false。 

                 2、在FormPanel中使用TabPanel,如果在TabPanel中不定義deferredRender的值為false,那么,當(dāng)你使用 Load方法為Form加載數(shù)據(jù),或使用setValue為沒(méi)有激活過(guò)的Panel的控件賦值時(shí),將會(huì)發(fā)生錯(cuò)誤。原因是,在默認(rèn)設(shè)置下 deferredRender為true,TabPanel并不會(huì)渲染所有Panel上的控件,只有在該P(yáng)anel被激活時(shí)才渲染控件,所以當(dāng)你為這些控 件設(shè)置數(shù)據(jù)時(shí),將會(huì)找不到這些控件,會(huì)出現(xiàn)錯(cuò)誤。因而,在FormPanel中使用TabPanel,一定要在TabPanel中設(shè)置 deferredRender的值為false,強(qiáng)制TabPanel在Layout渲染時(shí)同時(shí)渲染所有Panel上的控件。




          本文轉(zhuǎn)自:
          http://www.cnblogs.com/knowledgesea/p/3284404.html

          posted @ 2013-08-27 12:42 小胡子 閱讀(2146) | 評(píng)論 (2)編輯 收藏

               摘要: 前言:最近公司有個(gè)Web要發(fā)布,但是以前都是由實(shí)施到甲方去發(fā)布,配置,這幾天有點(diǎn)閑,同事讓我搞一個(gè)一鍵發(fā)布,就和安裝軟件那樣的程序,好讓實(shí)施直接 配置一下數(shù)據(jù)庫(kù)就可以了,然后到網(wǎng)上搜了下,找到一些相關(guān)的教程,現(xiàn)在整理了一下,花了一個(gè)下午的時(shí)間來(lái)寫(xiě)筆記,寫(xiě)好了,首先奉獻(xiàn)給博客園的小伙伴們,和 大伙兒分享一下,好了,下面進(jìn)入主題~~~ 1,首先打開(kāi)VS2010,新建一個(gè)項(xiàng)目,如圖1-1所示: &nbs...  閱讀全文

          posted @ 2013-08-27 12:37 小胡子 閱讀(1320) | 評(píng)論 (0)編輯 收藏

          大家可以參考下這個(gè)網(wǎng)站http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?p=28685


          1.先啟動(dòng)項(xiàng)目上的h2/bin下的h2.bat或h2w.bat文件,把h2數(shù)據(jù)庫(kù)啟動(dòng)起來(lái)

          2.SSH2框架和h2數(shù)據(jù)庫(kù)整合方法
          2.1先在數(shù)據(jù)庫(kù)下創(chuàng)建 schema目錄(相當(dāng)于一個(gè)數(shù)據(jù)庫(kù)實(shí)例)

            create schema fdrkftcode

          目的是解決這種異常org.h2.jdbc.JdbcSQLException: Schema "fdrkftcode" not found; ...

          2.2在schema目錄下創(chuàng)建表,如創(chuàng)建系統(tǒng)用戶表admin
            create table fdrkftcode.admin(
                id int primary key,
                adminname varchar(50),
                username varchar(50),
                userpwd varchar(50),
                adminrights varchar(50),
                createdate datetime,
                usedtimes int,
                lastlogin datetime,
                curstatus int,
                remark varchar(200)
            )
           
          3.為了使用hibernate操作h2,需要作如下設(shè)置,在sql編輯窗口輸入下面這些腳本
          對(duì)于實(shí)體pojo對(duì)象的映射,我是用的annotation,關(guān)鍵是id主鍵的映射,如下:
          @Column(name = "ID", nullable = false)

          @Id

          @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ABC_ID_SEQ")

          @SequenceGenerator(name = "ABC_ID_SEQ", sequenceName = "ABC_ID_SEQ")

          protected Long id;

           注意這里的GeneratedValue和SequenceGenerator的使用,這屬于JPA規(guī)范,全部來(lái)自javax.persisten

          4.配置applicationContext.xml文件,主要有三個(gè)地方要注意:
          4.1修改連接數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng) driverClass的值為org.h2.Driver
          4.2修改連接數(shù)據(jù)庫(kù)所用的URL字符串 jdbcUrl的值為jdbc:h2:tcp://localhost/~/FDRKFTCODE;MODE=MySQL;AUTO_SERVER=TRUE
          4.3修改Hibernate的數(shù)據(jù)庫(kù)方言hibernate.dialect為org.hibernate.dialect.H2Dialect

          5.h2數(shù)據(jù)庫(kù)一些常用操作
          5.1幫助命令help
          5.2表中某字段重命名  ALTER TABLE  fdrkftcode.admin ALTER COLUMN usepwd rename to userpwd
          5.3表中新增字段  ALTER TABLE fdrkftcode.admin ADD IF NOT EXISTS abc varchar(50)
          5.4表中刪除字段  ALTER TABLE fdrkftcode.admin DROP COLUMN IF EXISTS abc
          5.5查找表中記錄 SELECT * from fdrkftcode.admin
          5.6往表中插入記錄 INSERT INTO fdrkftcode.admin VALUES (1,'管理員','admin','admin','10000000000000000000','2013-05-1 00:12:34',3,'2013-05-1 15:32:57',1,'超過(guò)級(jí)管理員')
          5.7修改表中某記錄 UPDATE fdrkftcode.admin SET fdrkftcode.admin.adminname='超級(jí)管理員' where fdrkftcode.admin.id=1

          5.8刪除表中某記錄 DELETE FROM fdrkftcode.admin WHERE fdrkftcode.admin.id=1


          6.下面是我項(xiàng)目的applicationContext.xml配置方法,大家可以參考下

          <?xml version="1.0" encoding="UTF-8"?>
          <beans
              xmlns="http://www.springframework.org/schema/beans"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:p="http://www.springframework.org/schema/p"
              xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
              
              <!-- 定義使用C3P0連接池的數(shù)據(jù)源 -->
              <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                  <!-- 指定連接數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng) -->
                  <property name="driverClass">
                       <value>org.h2.Driver</value>
                   </property>
                  <!-- 連接數(shù)據(jù)庫(kù)所用的URL -->
                  <property name="jdbcUrl">
                      <value>jdbc:h2:tcp://localhost/~/FDRKFTCODE;MODE=MySQL;AUTO_SERVER=TRUE</value>
                  </property>
                  <!-- 連接數(shù)據(jù)庫(kù)的用戶名 -->
                  <property name="user">
                      <value>sa</value>
                  </property>
                  <!-- 連接數(shù)據(jù)庫(kù)的密碼 -->
                  <property name="password">
                      <value></value>
                  </property>
                  <!-- 設(shè)置數(shù)據(jù)庫(kù)連接池的最大連接數(shù) -->
                  <property name="maxPoolSize">
                      <value>50</value>
                  </property>
                  <!-- 設(shè)置數(shù)據(jù)庫(kù)連接池的最小連接數(shù) -->
                  <property name="minPoolSize">
                      <value>5</value>
                  </property>
                  <!-- 設(shè)置數(shù)據(jù)庫(kù)連接池的初始化連接數(shù) -->
                  <property name="initialPoolSize">
                      <value>5</value>
                  </property>
                  <!-- 設(shè)置數(shù)據(jù)庫(kù)連接池的連接的最大空閑時(shí)間,單位為秒 -->
                  <property name="maxIdleTime">
                      <value>20</value>
                  </property>
              </bean>
              
              <!-- 定義Hibernate的SessionFactory -->
              <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                  <!-- 依賴注入上面定義的數(shù)據(jù)源dataSource -->
                  <property name="dataSource" ref="dataSource"/>
                  <!-- 注冊(cè)Hibernate的ORM映射文件 -->
                  <property name="mappingResources">
                      <list>
                         <value>com/sungoal/ORM/Admin.hbm.xml</value>
                      </list>
                  </property>
                  <!-- 設(shè)置Hibernate的相關(guān)屬性 -->
                  <property name="hibernateProperties">
                      <props>
                          <!-- 設(shè)置Hibernate的數(shù)據(jù)庫(kù)方言 -->
                          <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
                          <!-- 設(shè)置Hibernate是否在控制臺(tái)輸出SQL語(yǔ)句,開(kāi)發(fā)調(diào)試階段通常設(shè)為true -->
                          <prop key="show_sql">true</prop>
                          <!-- 設(shè)置Hibernate一個(gè)提交批次中的最大SQL語(yǔ)句數(shù) -->
                          <prop key="hibernate.jdbc.batch_size">50</prop>
                      </props>
                  </property>
              </bean>
              
               <!--定義Hibernate的事務(wù)管理器HibernateTransactionManager -->
              <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                  <!-- 依賴注入上面定義的sessionFactory -->
                  <property name="sessionFactory" ref="sessionFactory"/>
              </bean>
              <!-- 裝配通用數(shù)據(jù)庫(kù)訪問(wèn)類BaseDAOImpl -->    
              <bean id="dao" class="com.sungoal.DAO.BaseDAOImpl">
                  <!-- 依賴注入上面定義的sessionFactory -->
                  <property name="sessionFactory" ref="sessionFactory"/>
              </bean>
              <!-- 部署系統(tǒng)用戶管理業(yè)務(wù)控制器AdminAction -->
              <bean id="adminAction" class="com.sungoal.struts.action.AdminAction" scope="prototype">
                  <property name="dao" ref="dao"/>
              </bean>
          </beans>

          posted @ 2013-08-14 09:33 小胡子 閱讀(373) | 評(píng)論 (0)編輯 收藏

          hibernate.properties

          ######################
          ### Query Language ###
          ######################

          ## define query language constants / function names

          hibernate.query.substitutions yes 'Y', no 'N'


          ## select the classic query parser

          #hibernate.query.factory_class org.hibernate.hql.classic.ClassicQueryTranslatorFactory


          #################
          ### Platforms ###
          #################

          ## JNDI Datasource

          #hibernate.connection.datasource jdbc/test
          #hibernate.connection.username db2
          #hibernate.connection.password db2


          ## HypersonicSQL

          hibernate.dialect org.hibernate.dialect.HSQLDialect
          hibernate.connection.driver_class org.hsqldb.jdbcDriver
          hibernate.connection.username sa
          hibernate.connection.password
          hibernate.connection.url jdbc:hsqldb:./build/db/hsqldb/hibernate
          #hibernate.connection.url jdbc:hsqldb:hsql://localhost
          #hibernate.connection.url jdbc:hsqldb:test

          ## H2 (www.h2database.com)
          #hibernate.dialect org.hibernate.dialect.H2Dialect
          #hibernate.connection.driver_class org.h2.Driver
          #hibernate.connection.username sa
          #hibernate.connection.password
          #hibernate.connection.url jdbc:h2:mem:./build/db/h2/hibernate
          #hibernate.connection.url jdbc:h2:testdb/h2test
          #hibernate.connection.url jdbc:h2:mem:imdb1
          #hibernate.connection.url jdbc:h2:tcp://dbserv:8084/sample;
          #hibernate.connection.url jdbc:h2:ssl://secureserv:8085/sample;
          #hibernate.connection.url jdbc:h2:ssl://secureserv/testdb;cipher=AES

          ## MySQL

          #hibernate.dialect org.hibernate.dialect.MySQLDialect
          #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
          #hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
          #hibernate.connection.driver_class com.mysql.jdbc.Driver
          #hibernate.connection.url jdbc:mysql:///test
          #hibernate.connection.username gavin
          #hibernate.connection.password


          ## Oracle

          #hibernate.dialect org.hibernate.dialect.OracleDialect
          #hibernate.dialect org.hibernate.dialect.Oracle9Dialect
          #hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
          #hibernate.connection.username ora
          #hibernate.connection.password ora
          #hibernate.connection.url jdbc:oracle:thin:@localhost:1521:orcl
          #hibernate.connection.url jdbc:oracle:thin:@localhost:1522:XE


          ## PostgreSQL

          #hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
          #hibernate.connection.driver_class org.postgresql.Driver
          #hibernate.connection.url jdbc:postgresql:template1
          #hibernate.connection.username pg
          #hibernate.connection.password


          ## DB2

          #hibernate.dialect org.hibernate.dialect.DB2Dialect
          #hibernate.connection.driver_class com.ibm.db2.jcc.DB2Driver
          #hibernate.connection.driver_class COM.ibm.db2.jdbc.app.DB2Driver
          #hibernate.connection.url jdbc:db2://localhost:50000/somename
          #hibernate.connection.url jdbc:db2:somename
          #hibernate.connection.username db2
          #hibernate.connection.password db2

          ## TimesTen

          #hibernate.dialect org.hibernate.dialect.TimesTenDialect
          #hibernate.connection.driver_class com.timesten.jdbc.TimesTenDriver
          #hibernate.connection.url jdbc:timesten:direct:test
          #hibernate.connection.username
          #hibernate.connection.password

          ## DB2/400

          #hibernate.dialect org.hibernate.dialect.DB2400Dialect
          #hibernate.connection.username user
          #hibernate.connection.password password

          ## Native driver
          #hibernate.connection.driver_class COM.ibm.db2.jdbc.app.DB2Driver
          #hibernate.connection.url jdbc:db2://systemname

          ## Toolbox driver
          #hibernate.connection.driver_class com.ibm.as400.access.AS400JDBCDriver
          #hibernate.connection.url jdbc:as400://systemname


          ## Derby (not supported!)

          #hibernate.dialect org.hibernate.dialect.DerbyDialect
          #hibernate.connection.driver_class org.apache.derby.jdbc.EmbeddedDriver
          #hibernate.connection.username
          #hibernate.connection.password
          #hibernate.connection.url jdbc:derby:build/db/derby/hibernate;create=true


          ## Sybase

          #hibernate.dialect org.hibernate.dialect.SybaseDialect
          #hibernate.connection.driver_class com.sybase.jdbc2.jdbc.SybDriver
          #hibernate.connection.username sa
          #hibernate.connection.password sasasa
          #hibernate.connection.url jdbc:sybase:Tds:co3061835-a:5000/tempdb


          ## Mckoi SQL

          #hibernate.dialect org.hibernate.dialect.MckoiDialect
          #hibernate.connection.driver_class com.mckoi.JDBCDriver
          #hibernate.connection.url jdbc:mckoi:///
          #hibernate.connection.url jdbc:mckoi:local://C:/mckoi1.0.3/db.conf
          #hibernate.connection.username admin
          #hibernate.connection.password nimda


          ## SAP DB

          #hibernate.dialect org.hibernate.dialect.SAPDBDialect
          #hibernate.connection.driver_class com.sap.dbtech.jdbc.DriverSapDB
          #hibernate.connection.url jdbc:sapdb://localhost/TST
          #hibernate.connection.username TEST
          #hibernate.connection.password TEST
          #hibernate.query.substitutions yes 'Y', no 'N'


          ## MS SQL Server

          #hibernate.dialect org.hibernate.dialect.SQLServerDialect
          #hibernate.connection.username sa
          #hibernate.connection.password sa

          ## JSQL Driver
          #hibernate.connection.driver_class com.jnetdirect.jsql.JSQLDriver
          #hibernate.connection.url jdbc:JSQLConnect://1E1/test

          ## JTURBO Driver
          #hibernate.connection.driver_class com.newatlanta.jturbo.driver.Driver
          #hibernate.connection.url jdbc:JTurbo://1E1:1433/test

          ## WebLogic Driver
          #hibernate.connection.driver_class weblogic.jdbc.mssqlserver4.Driver
          #hibernate.connection.url jdbc:weblogic:mssqlserver4:1E1:1433

          ## Microsoft Driver (not recommended!)
          #hibernate.connection.driver_class com.microsoft.jdbc.sqlserver.SQLServerDriver
          #hibernate.connection.url jdbc:microsoft:sqlserver://1E1;DatabaseName=test;SelectMethod=cursor

          ## The New Microsoft Driver
          #hibernate.connection.driver_class com.microsoft.sqlserver.jdbc.SQLServerDriver
          #hibernate.connection.url jdbc:sqlserver://localhost

          ## jTDS (since version 0.9)
          #hibernate.connection.driver_class net.sourceforge.jtds.jdbc.Driver
          #hibernate.connection.url jdbc:jtds:sqlserver://1E1/test

          ## Interbase

          #hibernate.dialect org.hibernate.dialect.InterbaseDialect
          #hibernate.connection.username sysdba
          #hibernate.connection.password masterkey

          ## DO NOT specify hibernate.connection.sqlDialect

          ## InterClient

          #hibernate.connection.driver_class interbase.interclient.Driver
          #hibernate.connection.url jdbc:interbase://localhost:3060/C:/firebird/test.gdb

          ## Pure Java

          #hibernate.connection.driver_class org.firebirdsql.jdbc.FBDriver
          #hibernate.connection.url jdbc:firebirdsql:localhost/3050:/firebird/test.gdb


          ## Pointbase

          #hibernate.dialect org.hibernate.dialect.PointbaseDialect
          #hibernate.connection.driver_class com.pointbase.jdbc.jdbcUniversalDriver
          #hibernate.connection.url jdbc:pointbase:embedded:sample
          #hibernate.connection.username PBPUBLIC
          #hibernate.connection.password PBPUBLIC


          ## Ingres

          ## older versions (before Ingress 2006)

          #hibernate.dialect org.hibernate.dialect.IngresDialect
          #hibernate.connection.driver_class ca.edbc.jdbc.EdbcDriver
          #hibernate.connection.url jdbc:edbc://localhost:II7/database
          #hibernate.connection.username user
          #hibernate.connection.password password

          ## Ingres 2006 or later

          #hibernate.dialect org.hibernate.dialect.IngresDialect
          #hibernate.connection.driver_class com.ingres.jdbc.IngresDriver
          #hibernate.connection.url jdbc:ingres://localhost:II7/database;CURSOR=READONLY;auto=multi
          #hibernate.connection.username user
          #hibernate.connection.password password

          ## Mimer SQL

          #hibernate.dialect org.hibernate.dialect.MimerSQLDialect
          #hibernate.connection.driver_class com.mimer.jdbc.Driver
          #hibernate.connection.url jdbc:mimer:multi1
          #hibernate.connection.username hibernate
          #hibernate.connection.password hibernate


          ## InterSystems Cache

          #hibernate.dialect org.hibernate.dialect.Cache71Dialect
          #hibernate.connection.driver_class com.intersys.jdbc.CacheDriver
          #hibernate.connection.username _SYSTEM
          #hibernate.connection.password SYS
          #hibernate.connection.url jdbc:Cache://127.0.0.1:1972/HIBERNATE


          #################################
          ### Hibernate Connection Pool ###
          #################################

          hibernate.connection.pool_size 1


          ###########################
          ### C3P0 Connection Pool###
          ###########################

          #hibernate.c3p0.max_size 2
          #hibernate.c3p0.min_size 2
          #hibernate.c3p0.timeout 5000
          #hibernate.c3p0.max_statements 100
          #hibernate.c3p0.idle_test_period 3000
          #hibernate.c3p0.acquire_increment 2
          #hibernate.c3p0.validate false


          ##############################
          ### Proxool Connection Pool###
          ##############################

          ## Properties for external configuration of Proxool

          hibernate.proxool.pool_alias pool1

          ## Only need one of the following

          #hibernate.proxool.existing_pool true
          #hibernate.proxool.xml proxool.xml
          #hibernate.proxool.properties proxool.properties


          #################################
          ### Plugin ConnectionProvider ###
          #################################

          ## use a custom ConnectionProvider (if not set, Hibernate will choose a built-in ConnectionProvider using hueristics)

          #hibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProvider
          #hibernate.connection.provider_class org.hibernate.connection.DatasourceConnectionProvider
          #hibernate.connection.provider_class org.hibernate.connection.C3P0ConnectionProvider
          #hibernate.connection.provider_class org.hibernate.connection.ProxoolConnectionProvider


          #######################
          ### Transaction API ###
          #######################

          ## Enable automatic flush during the JTA beforeCompletion() callback
          ## (This setting is relevant with or without the Transaction API)

          #hibernate.transaction.flush_before_completion


          ## Enable automatic session close at the end of transaction
          ## (This setting is relevant with or without the Transaction API)

          #hibernate.transaction.auto_close_session


          ## the Transaction API abstracts application code from the underlying JTA or JDBC transactions

          #hibernate.transaction.factory_class org.hibernate.transaction.JTATransactionFactory
          #hibernate.transaction.factory_class org.hibernate.transaction.JDBCTransactionFactory


          ## to use JTATransactionFactory, Hibernate must be able to locate the UserTransaction in JNDI
          ## default is java:comp/UserTransaction
          ## you do NOT need this setting if you specify hibernate.transaction.manager_lookup_class

          #jta.UserTransaction jta/usertransaction
          #jta.UserTransaction javax.transaction.UserTransaction
          #jta.UserTransaction UserTransaction


          ## to use the second-level cache with JTA, Hibernate must be able to obtain the JTA TransactionManager

          #hibernate.transaction.manager_lookup_class org.hibernate.transaction.JBossTransactionManagerLookup
          #hibernate.transaction.manager_lookup_class org.hibernate.transaction.WeblogicTransactionManagerLookup
          #hibernate.transaction.manager_lookup_class org.hibernate.transaction.WebSphereTransactionManagerLookup
          #hibernate.transaction.manager_lookup_class org.hibernate.transaction.OrionTransactionManagerLookup
          #hibernate.transaction.manager_lookup_class org.hibernate.transaction.ResinTransactionManagerLookup


          ##############################
          ### Miscellaneous Settings ###
          ##############################

          ## print all generated SQL to the console

          #hibernate.show_sql true


          ## format SQL in log and console

          hibernate.format_sql true


          ## add comments to the generated SQL

          #hibernate.use_sql_comments true


          ## generate statistics

          #hibernate.generate_statistics true


          ## auto schema export

          #hibernate.hbm2ddl.auto create-drop
          #hibernate.hbm2ddl.auto create
          #hibernate.hbm2ddl.auto update
          #hibernate.hbm2ddl.auto validate


          ## specify a default schema and catalog for unqualified tablenames

          #hibernate.default_schema test
          #hibernate.default_catalog test


          ## enable ordering of SQL UPDATEs by primary key

          #hibernate.order_updates true


          ## set the maximum depth of the outer join fetch tree

          hibernate.max_fetch_depth 1


          ## set the default batch size for batch fetching

          #hibernate.default_batch_fetch_size 8


          ## rollback generated identifier values of deleted entities to default values

          #hibernate.use_identifer_rollback true


          ## enable bytecode reflection optimizer (disabled by default)

          #hibernate.bytecode.use_reflection_optimizer true


          #####################
          ### JDBC Settings ###
          #####################

          ## specify a JDBC isolation level

          #hibernate.connection.isolation 4


          ## enable JDBC autocommit (not recommended!)

          #hibernate.connection.autocommit true


          ## set the JDBC fetch size

          #hibernate.jdbc.fetch_size 25


          ## set the maximum JDBC 2 batch size (a nonzero value enables batching)

          #hibernate.jdbc.batch_size 5
          #hibernate.jdbc.batch_size 0


          ## enable batch updates even for versioned data

          hibernate.jdbc.batch_versioned_data true


          ## enable use of JDBC 2 scrollable ResultSets (specifying a Dialect will cause Hibernate to use a sensible default)

          #hibernate.jdbc.use_scrollable_resultset true


          ## use streams when writing binary types to / from JDBC

          hibernate.jdbc.use_streams_for_binary true


          ## use JDBC 3 PreparedStatement.getGeneratedKeys() to get the identifier of an inserted row

          #hibernate.jdbc.use_get_generated_keys false


          ## choose a custom JDBC batcher

          # hibernate.jdbc.factory_class


          ## enable JDBC result set column alias caching
          ## (minor performance enhancement for broken JDBC drivers)

          # hibernate.jdbc.wrap_result_sets


          ## choose a custom SQL exception converter

          #hibernate.jdbc.sql_exception_converter


          ##########################
          ### Second-level Cache ###
          ##########################

          ## optimize chache for minimal "puts" instead of minimal "gets" (good for clustered cache)

          #hibernate.cache.use_minimal_puts true


          ## set a prefix for cache region names

          hibernate.cache.region_prefix hibernate.test


          ## disable the second-level cache

          #hibernate.cache.use_second_level_cache false


          ## enable the query cache

          #hibernate.cache.use_query_cache true


          ## store the second-level cache entries in a more human-friendly format

          #hibernate.cache.use_structured_entries true


          ## choose a cache implementation

          #hibernate.cache.provider_class org.hibernate.cache.EhCacheProvider
          #hibernate.cache.provider_class org.hibernate.cache.EmptyCacheProvider
          hibernate.cache.provider_class org.hibernate.cache.HashtableCacheProvider
          #hibernate.cache.provider_class org.hibernate.cache.TreeCacheProvider
          #hibernate.cache.provider_class org.hibernate.cache.OSCacheProvider
          #hibernate.cache.provider_class org.hibernate.cache.SwarmCacheProvider


          ## choose a custom query cache implementation

          #hibernate.cache.query_cache_factory


          ############
          ### JNDI ###
          ############

          ## specify a JNDI name for the SessionFactory

          #hibernate.session_factory_name hibernate/session_factory


          ## Hibernate uses JNDI to bind a name to a SessionFactory and to look up the JTA UserTransaction;
          ## if hibernate.jndi.* are not specified, Hibernate will use the default InitialContext() which
          ## is the best approach in an application server

          #file system
          #hibernate.jndi.class com.sun.jndi.fscontext.RefFSContextFactory
          #hibernate.jndi.url file:/

          #WebSphere
          #hibernate.jndi.class com.ibm.websphere.naming.WsnInitialContextFactory
          #hibernate.jndi.url iiop://localhost:900/

          posted @ 2013-08-14 09:29 小胡子 閱讀(392) | 評(píng)論 (0)編輯 收藏

               摘要: 這幾天學(xué)習(xí)了一下Spring Security3.1,從官網(wǎng)下載了Spring Security3.1版本進(jìn)行練習(xí),經(jīng)過(guò)多次嘗試才摸清了其中的一些原理。本人不才,希望能幫助大家。還有,這次我第二次寫(xiě)博客啊,文體不是很行。希望 能讓觀看者不產(chǎn)生疲憊的感覺(jué),我已經(jīng)心滿意足了。 一、數(shù)據(jù)庫(kù)結(jié)構(gòu)      先來(lái)看一下數(shù)據(jù)庫(kù)結(jié)構(gòu),采用的是基于角色-資源-用戶的權(quán)限...  閱讀全文

          posted @ 2013-08-13 17:49 小胡子 閱讀(328) | 評(píng)論 (0)編輯 收藏

          我們知道,EXT的全部js是比較大的,一個(gè)ext-all-debug.js就達(dá)2m多,它的壓縮版(去掉js中的換行及空格),也達(dá)600多k,這對(duì)于在網(wǎng)速不太快的時(shí),下載js就得漫長(zhǎng)的等待。
          JOffice中的日歷任務(wù)控件,js多達(dá)四五個(gè),每個(gè)js大小都達(dá)70多k,盡管我們采用了后加載的方式,則當(dāng)用戶點(diǎn)擊我的任務(wù)功能時(shí),才下載該js,但這樣仍然很慢,因?yàn)橄螺d的js很慢
          ,鑒于此,在互聯(lián)網(wǎng)上使用類似Joffice類似的程序,速度會(huì)使很多開(kāi)發(fā)商不敢選用ext作為開(kāi)發(fā)技術(shù)。據(jù)本人當(dāng)時(shí)參與移動(dòng)一個(gè)內(nèi)部采購(gòu)平臺(tái)的開(kāi)發(fā),就是因?yàn)槠溥\(yùn)行程序慢,遭到移動(dòng)的終端用戶的棄罵,
          所以,要想用EXT來(lái)開(kāi)發(fā)應(yīng)用,需要解決其運(yùn)行慢的特點(diǎn)。


          我們可以從以下幾種方法來(lái)提高應(yīng)用程序的運(yùn)行速度:

          一.前期盡量少加載js.

             這點(diǎn)在Joffice中有比較好的運(yùn)用,采用的是由ScriptMgr.load方法來(lái)完成,加載完成后,其會(huì)在body中插入一個(gè)div,只要當(dāng)前頁(yè)面不被刷新,下次再訪問(wèn)該功能時(shí),不需要再加載js

             function $ImportJs(viewName,callback) {
              var b 
          = document.getElementById(viewName+'-hiden');
              
          if (b != null) {
                  var view 
          = eval('new ' + viewName + '()');
                  callback.call(
          this, view);
              } 
          else {
                  var jsArr 
          = eval('App.importJs.' + viewName);
                  
          if(jsArr==undefined){
                      var view 
          = eval('new ' + viewName + '()');
                      callback.call(
          this, view);
                      
          return ;
                  }
                  ScriptMgr.load({
                              scripts : jsArr,
                              callback : function() {
                                  
                                  Ext.DomHelper.append(document.body,
          "<div id='"
                                                          
          + viewName
                                                          
          + "-hiden' style='display:none'></div>");
                                  var view 
          = eval('new ' + viewName + '()');
                                  callback.call(
          this, view);
                              }
                  });
              }
          }


              package com.htsoft.core.web.filter;  
                  
          import java.io.IOException;  
                  
          import java.util.HashMap;  
                  
          import java.util.Iterator;  
                  
          import java.util.Map;  
                  
          import javax.servlet.Filter;  
                  
          import javax.servlet.FilterChain;  
                  
          import javax.servlet.FilterConfig;  
                  
          import javax.servlet.ServletException;  
                  
          import javax.servlet.ServletRequest;  
                  
          import javax.servlet.ServletResponse;  
                  
          import javax.servlet.http.HttpServletRequest;  
                  
          import javax.servlet.http.HttpServletResponse;  
                    
                  
          public class GzipJsFilter implements Filter {  
                      Map headers 
          = new HashMap();  
                      
          public void destroy() {  
                      }  
                      
          public void doFilter(ServletRequest req, ServletResponse res,  
                              FilterChain chain) 
          throws IOException, ServletException {  
                          
          if(req instanceof HttpServletRequest) {  
                              doFilter((HttpServletRequest)req, (HttpServletResponse)res, chain);  
                          }
          else {  
                              chain.doFilter(req, res);  
                          }  
                      }  
                      
          public void doFilter(HttpServletRequest request,  
                              HttpServletResponse response, FilterChain chain)  
                              
          throws IOException, ServletException {  
                              request.setCharacterEncoding(
          "UTF-8");  
                              
          for(Iterator it = headers.entrySet().iterator();it.hasNext();) {  
                                  Map.Entry entry 
          = (Map.Entry)it.next();  
                                  response.addHeader((String)entry.getKey(),(String)entry.getValue());  
                              }  
                              chain.doFilter(request, response);  
                      }  
                    
                      
          public void init(FilterConfig config) throws ServletException {  
                          String headersStr 
          = config.getInitParameter("headers");  
                          String[] headers 
          = headersStr.split(",");  
                          
          for(int i = 0; i < headers.length; i++) {  
                              String[] temp 
          = headers[i].split("=");  
                              
          this.headers.put(temp[0].trim(), temp[1].trim());  
                          }  
                      }  
                  } 

          3.在WEB.xml 文件中,添加以下配置:

          <filter>    
              
          <filter-name>GzipJsFilter</filter-name>    
              
          <filter-class>com.htsoft.core.web.filter.GzipJsFilter</filter-class>    
              
          <init-param>    
                  
          <param-name>headers</param-name>    
                  
          <param-value>Content-Encoding=gzip</param-value>    
              
          </init-param>  
          </filter>  
          <filter-mapping>  
          <filter-name>GzipJsFilter</filter-name>  
          <url-pattern>*.gzjs</url-pattern>  
          lt;
          /filter-mapping>  
          <servlet-mapping> 
          4.在index.jsp中引入該壓縮文件:
            <script type="text/javascript" src="<%=request.getContextPath()%>/ext3/ext-all.gzjs"></script>
           

          可以看到瀏覽器解壓后,其代碼是一樣的:

           

           

          大家可以看到以上,這塊是在外網(wǎng)使用的,其速度是比較快的。當(dāng)然,瀏覽器解壓這個(gè)文件需要一點(diǎn)時(shí)間,不過(guò)在本地解壓是非常快的,可以不用管。

           

           

          三、通過(guò)Js緩存,更加可以提高EXT的加載速度,關(guān)于緩存,本文不作討論。

          原文出自:
          http://man1900.iteye.com/blog/515058

          posted @ 2013-08-13 16:48 小胡子 閱讀(352) | 評(píng)論 (0)編輯 收藏

          我們常常在代碼中讀取一些資源文件(比如圖片,音樂(lè),文本等等)。在單獨(dú)運(yùn)行的時(shí)候這些簡(jiǎn)單的處理當(dāng)然不會(huì)有問(wèn)題。但是,如果我們把代碼打成一個(gè)jar包以后,即使將資源文件一并打包,這些東西也找不出來(lái)了。看看下面的代碼:

          //源代碼1:
          package edu.hxraid;
          import java.io.*;
          public class Resource {
              
          public  void getResource() throws IOException{
                  File file
          =new File("bin/resource/res.txt");
                  BufferedReader br
          =new BufferedReader(new FileReader(file));
                  String s
          ="";
                  
          while((s=br.readLine())!=null)
                      System.out.println(s);
              }
          }   
          這段代碼寫(xiě)在Eclipse建立的java Project中,其目錄為:(其中將資源文件res.txt放在了bin目錄下,以便打成jar包)
                1、src/
                        src/edu/hxraid/Resource.java
                2、bin/
                        bin/resource/res.txt
                        bin/edu/hxraid/Resource.class

                很顯然運(yùn)行源代碼1是能夠找到資源文件res.txt。但當(dāng)我們把整個(gè)工程打成jar包以后(ResourceJar.jar),這個(gè)jar包內(nèi)的目錄為:
                        edu/hxraid/Resource.class
                        resource/res.txt

           

                   而這時(shí)jar包中Resource.class字節(jié) 碼:ldc <String "bin/resource/res.txt"> [20] 將無(wú)法定位到j(luò)ar包中的res.txt位置上。就算把bin/目錄去掉:ldc <String "resource/res.txt"> [20] 仍然無(wú)法定位到j(luò)ar包中res.txt上。


          這主要是因?yàn)閖ar包是一個(gè)單獨(dú)的文件而非文件夾,絕對(duì)不可能通過(guò)"file:/e:/.../ResourceJar.jar/resource /res.txt"這種形式的文件URL來(lái)定位res.txt。所以即使是相對(duì)路徑,也無(wú)法定位到j(luò)ar文件內(nèi)的txt文件(讀者也許對(duì)這段原因解釋有些費(fèi)解,在下面我們會(huì)用一段代碼運(yùn)行的結(jié)果來(lái)進(jìn)一步闡述)。
          那么把資源打入jar包,無(wú)論ResourceJar.jar在系統(tǒng)的什么路徑下,jar包中的字節(jié)碼程序都可以找到該包中的資源。這會(huì)是幻想嗎?


                當(dāng)然不是,我們可以用類裝載器(ClassLoader)來(lái)做到這一點(diǎn):

                   (1) ClassLoader 是類加載器的抽象類。它可以在運(yùn)行時(shí)動(dòng)態(tài)的獲取加載類的運(yùn)行信息。 可以這樣說(shuō),當(dāng)我們調(diào)用ResourceJar.jar中的Resource類時(shí),JVM加載進(jìn)Resource類,并記錄下Resource運(yùn)行時(shí)信息 (包括Resource所在jar包的路徑信息)。而ClassLoader類中的方法可以幫助我們動(dòng)態(tài)的獲取這些信息:
                    ● public URL getResource(String name)
                      查找具有給定名稱的資源。資源是可以通過(guò)類代碼以與代碼基無(wú)關(guān)的方式訪問(wèn)的一些數(shù)據(jù)(圖像、聲音、文本等)。并返回資源的URL對(duì)象。
                    ● public InputStream getResourceAsStream(String name);
                       返回讀取指定資源的輸入流。這個(gè)方法很重要,可以直接獲得jar包中文件的內(nèi)容。

                   

                    (2) ClassLoader是abstract的,不可能實(shí)例化對(duì)象,更加不可能通過(guò)ClassLoader調(diào)用上面兩個(gè)方法。所以我們真正寫(xiě)代碼的時(shí)候,是通過(guò)Class類中的getResource()和getResourceAsStream()方法,這兩個(gè)方法會(huì)委托ClassLoader中的getResource()和getResourceAsStream()方法 。好了,現(xiàn)在我們重新寫(xiě)一段Resource代碼,來(lái)看看上面那段費(fèi)解的話是什么意思了:


          //源代碼2:
          package edu.hxraid;
          import java.io.*;
          import java.net.URL;
          public class Resource {
              
          public  void getResource() throws IOException{    
                        
          //查找指定資源的URL,其中res.txt仍然開(kāi)始的bin目錄下 
                  URL fileURL=this.getClass().getResource("/resource/res.txt"); 
                  System.out.println(fileURL.getFile());
              }
              
          public static void main(String[] args) throws IOException {
                  Resource res
          =new Resource();
                  res.getResource();
              }
          }

          運(yùn)行這段源代碼結(jié)果:/E:/Code_Factory/WANWAN/bin/resource/res.txt  (../ Code_Factory/WANWAN/.. 是java project所在的路徑)

                     我們將這段代碼打包成ResourceJar.jar ,并將ResourceJar.jar放在其他路徑下(比如 c:\ResourceJar.jar)。然后另外創(chuàng)建一個(gè)java project并導(dǎo)入ResourceJar.jar,寫(xiě)一段調(diào)用jar包中Resource類的測(cè)試代碼:


          import java.io.IOException;
          import edu.hxraid.Resource;
          public class TEST {
              
          public static void main(String[] args) throws IOException {
                  Resource res
          =new Resource();
                  res.getResource();
              }
          }
          這時(shí)的運(yùn)行結(jié)果是:file:/C:/ResourceJar.jar!/resource/res.txt
          我們成功的在運(yùn)行時(shí)動(dòng)態(tài)獲得了res.txt的位置。然而,問(wèn)題來(lái)了,你是否可以通過(guò)下面這樣的代碼來(lái)得到res.txt文件?
                                File f=new File("C:/ResourceJar.jar!/resource/res.txt");
                      當(dāng)然不可能,因?yàn)?.../ResourceJar.jar!/resource/...."并不是文件資源定位符的格式 (jar中資源有其專門(mén)的URL形式:
          jar:<url>!/{entry} )。所以,如果jar包中的類源代碼用File f=new File(相對(duì)路徑);的形式,是不可能定位到文件資源的。這也是為什么源代碼1打包成jar文件后,調(diào)用jar包時(shí)會(huì)報(bào)出FileNotFoundException的癥結(jié)所在了。

           

                    (3) 我們不能用常規(guī)操作文件的方法來(lái)讀取ResourceJar.jar中的資源文件res.txt,但可以通過(guò)Class類的getResourceAsStream()方法來(lái)獲取 ,這種方法是如何讀取jar中的資源文件的,這一點(diǎn)對(duì)于我們來(lái)說(shuō)是透明的。我們將Resource.java改寫(xiě)成:


          //源代碼3:
          package edu.hxraid;
          import java.io.*;
          public class Resource {
              
          public void getResource() throws IOException{
                  
          //返回讀取指定資源的輸入流
                  InputStream is=this.getClass().getResourceAsStream("/resource/res.txt"); 
                  BufferedReader br
          =new BufferedReader(new InputStreamReader(is));
                  String s
          ="";
                  
          while((s=br.readLine())!=null)
                      System.out.println(s);
              }
          }

          我們將java工程下/bin目錄中的edu/hxraid /Resource.class和資源文件resource/res.txt一并打包進(jìn)ResourceJar.jar中,不管jar包在系統(tǒng)的任何目錄 下,調(diào)用jar包中的Resource類都可以獲得jar包中的res.txt資源,再也不會(huì)找不到res.txt文件了。

          原文出自:
          http://www.iteye.com/topic/483115

          posted @ 2013-08-12 15:19 小胡子 閱讀(288) | 評(píng)論 (0)編輯 收藏

          編輯代碼常用快捷鍵

          格式化代碼的快捷鍵 Ctrl + Shift + F

          格式化縮進(jìn)的快捷鍵是 Ctrl + I,只能對(duì)選中的文本進(jìn)行縮進(jìn)

          刪除一行的快捷鍵是 Ctrl + D

          當(dāng)前窗口最大化最小化切換 Ctrl + M

          轉(zhuǎn)到最后進(jìn)行修改的位置 Ctrl + Q

          快速查找選中的字符 Ctrl + K(向下) Ctrl + Shift + K(向上)

          光標(biāo)放到一個(gè)括號(hào),切換到另一個(gè)成對(duì)的括號(hào) Ctrl + Shirt + P

          在編輯過(guò)的位置進(jìn)行切換 Alt + 左右方向鍵

          閱讀代碼常用的快捷鍵

          F3不解釋(一些人喜歡用Ctrl + 鼠標(biāo)左鍵)

          選中方法或者變量 Ctrl + Alt + H,查找在哪些地方調(diào)用,快速閱讀代碼和評(píng)估代碼修改必須要用到的

          繼承關(guān)系 F4,了解代碼的框架

          快速查找函數(shù)和變量 Ctrl + O,輸入函數(shù)或變量的名字,比在Outline中一個(gè)一個(gè)找要快很多,但是要對(duì)代碼有了解

          全工程查找 Ctrl + H,代碼巨多的情況下必不可少。

          由于水平有限,筆者只用到了這些快捷鍵

          如果想知道其他的快捷鍵 Ctrl + Shift + L

          自定義格式化代碼

          在Preference中打開(kāi)Java的Format

          內(nèi)建的模版是不能修改的,點(diǎn)擊New...,隨便輸入一個(gè)名字,新建一個(gè)自己的模板,彈出自定義Edit窗口

          可以定義的項(xiàng)目非常豐富,在右邊還可以進(jìn)行預(yù)覽,就算對(duì)英文不感冒,也可以捉摸出大致的意思。對(duì)代碼進(jìn)行格式化的好處是不僅僅是美觀,便于閱讀,在 進(jìn)行團(tuán)隊(duì)開(kāi)發(fā)的時(shí)候,使用統(tǒng)一的格式,在合并代碼的時(shí)候可以避免許多的沖突。修改完成的模版就是使用Ctrl + Shift + F格式化時(shí)的模板

          自動(dòng)去除無(wú)用的import,自動(dòng)補(bǔ)全@Override和@deprecated,eclipse的Clean up

          在Code Style中,除了Format還有Clean Up

          和Format進(jìn)行同樣的操作,新建一個(gè)模板,有幾個(gè)地方我決定有必要改一下

          Code Organizing標(biāo)簽選擇Remove trailing whitespace(移除尾部的空格)

          Organzie imports

          選擇Organzie imports前效果

          import org.model.*;

          選擇Organzie imports后效果

          import org.model.Engine;

          切換到Code Style標(biāo)簽

           

          Use blocks in if/while/for/do statements if/while/for/do自動(dòng)添加括號(hào),這個(gè)因人而異,我決定即使只用一行,也應(yīng)該添加括號(hào)。

          點(diǎn)擊菜單里的Source - Clean up,可以對(duì)代碼進(jìn)行清理,清理代碼最大的好處是——移除沒(méi)用的import,自動(dòng)添加@Deprecated和@Override


          特別是自動(dòng)添加@Override,可以很清楚的明白那些函數(shù)是繼承的。

          代碼提示

          用過(guò)visual assistx的一定非常系統(tǒng)它的代碼提示功能,我是個(gè)沒(méi)有代碼提示就無(wú)法Coding的人,點(diǎn)擊菜單Windows-Preference,切換到以下窗口

          找到Auto Activation,也就是紅色方框中的部分,將Auto activation delay(ms): 修改為 50

          Auto activation triggers for Java:修改為 .abcdefghigklmnoprstuvwxyz,這樣就能隨時(shí)提示了。

           

          最后介紹兩個(gè)工具,Search Everything 根據(jù)文件名快速查找文件,ClipX剪貼板歷史記錄。


          原文出自:http://www.cnblogs.com/sw926/p/3209615.html

          posted @ 2013-07-25 01:00 小胡子 閱讀(967) | 評(píng)論 (0)編輯 收藏

           1 @Entity
           2 @Table(name="T_ADM_USER")
           3 public class User extends GenericEntity implements Serializable {
           4     
           5     @OneToOne(cascade = CascadeType.PERSIST)
           6     @JoinColumn(name="grade_id")
           7     public Grade getGrade() {
           8         return grade;
           9     }
          10     public void setGrade(Grade grade) {
          11         this.grade = grade;
          12     }
          13     @Column(name="user_name", insertable = true, updatable = true, nullable = true)
          14     public String getUsername() {
          15         return username;
          16     }
          17     public void setUsername(String username) {
          18         this.username = username;
          19     }
          20 
          21 }

           1 public class TableUtil {
           2 
           3     public static void main(String[] args) {
           4         try{
           5             
           6             AnnotationConfiguration cfg = new AnnotationConfiguration();
           7             cfg.addAnnotatedClass(com.mygogo.grade.user.entity.User.class);                        
           9             SchemaExport se = new SchemaExport(cfg);
          10             se.setDelimiter(";");
          11             se.drop(truetrue);
          12             se.create(truetrue);
          13         }catch(Exception e){
          14             e.printStackTrace();
          15         }
          16         
          17     }
          18 }













          posted @ 2013-07-11 14:13 小胡子 閱讀(318) | 評(píng)論 (0)編輯 收藏

               

          Servlet和Filter的url匹配以及url-pattern詳解


               Servlet和filter是J2EE開(kāi)發(fā)中常用的技術(shù),使用方便,配置簡(jiǎn)單,老少皆宜。估計(jì)大多數(shù)朋友都是直接配置用,也沒(méi)有關(guān)心過(guò)具體的細(xì)節(jié),今天 遇到一個(gè)問(wèn)題,上網(wǎng)查了servlet的規(guī)范才發(fā)現(xiàn),servlet和filter中的url-pattern還是有一些文章在里面的,總結(jié)了一些東西, 放出來(lái)供大家參考,以免遇到問(wèn)題又要浪費(fèi)時(shí)間。

          一 servlet容器對(duì)url的匹配過(guò)


          當(dāng)一個(gè)請(qǐng)求發(fā)送到servlet容器的時(shí)候,容器先會(huì)將請(qǐng)求的url減去當(dāng)前應(yīng)用上下文的路徑作為servlet的映射url,比如我訪問(wèn)的是http://localhost/test/aaa.html,我的應(yīng)用上下文是test,容器會(huì)將http://localhost/test去掉,剩下的/aaa.html部分拿來(lái)做servlet的映射匹配。這個(gè)映射匹配過(guò)程是有順序的,而且當(dāng)有一個(gè)servlet匹配成功以后,就不會(huì)去理會(huì)剩下的servlet了(filter不同,后文會(huì)提到)。其匹配規(guī)則和順序如下:<o:p></o:p>

          1.     精確路徑匹配。例子:比如servletA 的url-pattern為 /test,servletB的url-pattern為 /* ,這個(gè)時(shí)候,如果我訪問(wèn)的url為http://localhost/test ,這個(gè)時(shí)候容器就會(huì)先進(jìn)行精確路徑匹配,發(fā)現(xiàn)/test正好被servletA精確匹配,那么就去調(diào)用servletA,也不會(huì)去理會(huì)其他的servlet了。<o:p></o:p>

          2.     最長(zhǎng)路徑匹配。例子:servletA的url-pattern為/test/*,而servletB的url-pattern為/test/a/*,此時(shí)訪問(wèn)http://localhost/test/a時(shí),容器會(huì)選擇路徑最長(zhǎng)的servlet來(lái)匹配,也就是這里的servletB。<o:p></o:p>

          3.     擴(kuò)展匹配,如果url最后一段包含擴(kuò)展,容器將會(huì)根據(jù)擴(kuò)展選擇合適的servlet。例子:servletA的url-pattern:*.action<o:p></o:p>

          4.     如果前面三條規(guī)則都沒(méi)有找到一個(gè)servlet,容器會(huì)根據(jù)url選擇對(duì)應(yīng)的請(qǐng)求資源。如果應(yīng)用定義了一個(gè)default servlet,則容器會(huì)將請(qǐng)求丟給default servlet(什么是default servlet?后面會(huì)講)。

          根據(jù)這個(gè)規(guī)則表,就能很清楚的知道servlet的匹配過(guò)程,所以定義servlet的時(shí)候也要考慮url-pattern的寫(xiě)法,以免出錯(cuò)。

                對(duì)于filter,不會(huì)像servlet那樣只匹配一個(gè)servlet,因?yàn)閒ilter的集合是一個(gè)鏈,所以只會(huì)有處理的順序不同,而不會(huì)出現(xiàn)只選擇一 個(gè)filter。Filter的處理順序和filter-mapping在web.xml中定義的順序相同。


          二 url-pattern詳解

          • web.xml文件中,以下語(yǔ)法用于定義映射:
          •  以”/’開(kāi)頭和以”/*”結(jié)尾的是用來(lái)做路徑映射的。
          •  以前綴”*.”開(kāi)頭的是用來(lái)做擴(kuò)展映射的。
          • “/” 是用來(lái)定義default servlet映射的。
          • 剩下的都是用來(lái)定義詳細(xì)映射的。比如: /aa/bb/cc.action
          所以,為什么定義”/*.action”這樣一個(gè)看起來(lái)很正常的匹配會(huì)錯(cuò)?因?yàn)檫@個(gè)匹配即屬于路徑映射,也屬于擴(kuò)展映射,導(dǎo)致容器無(wú)法判斷

          出自:
          http://foxty.iteye.com/blog/39332


          posted @ 2013-06-06 15:16 小胡子 閱讀(314) | 評(píng)論 (0)編輯 收藏

          oracle監(jiān)聽(tīng)不能啟動(dòng)的問(wèn)題及處理過(guò)程!

          oracle環(huán)境如下:

          SQL> select * from V$version

          2 ;

          BANNER

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

          Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

          PL/SQL Release 10.2.0.1.0 - Production

          CORE 10.2.0.1.0 Production

          TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

          NLSRTL Version 10.2.0.1.0 - Production

          出錯(cuò)過(guò)程回憶:在此之前用windows優(yōu)化大師對(duì)系統(tǒng)注冊(cè)表進(jìn)行了修復(fù)!

          Q:鏈接oracle時(shí)報(bào)錯(cuò):ORA-12541: TNS: 無(wú)監(jiān)聽(tīng)程序

          A:

          1〉查看監(jiān)聽(tīng)有沒(méi)有啟動(dòng):

          一:運(yùn)行lsnrctl

          C:\Documents and Settings\Admin>lsnrctl

          LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-4月 -2007 09:

          1:43

          Copyright (c) 1991, 2005, Oracle. All rights reserved.

          歡迎來(lái)到LSNRCTL, 請(qǐng)鍵入"help"以獲得信息。

          二:查看stauts

          LSNRCTL> status

          正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

          TNS-12541: TNS: 無(wú)監(jiān)聽(tīng)程序

          TNS-12560: TNS: 協(xié)議適配器錯(cuò)誤

          TNS-00511: 無(wú)監(jiān)聽(tīng)程序

          32-bit Windows Error: 2: No such file or directory

          正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zxt)(PORT=1521)))

          TNS-12541: TNS: 無(wú)監(jiān)聽(tīng)程序

          TNS-12560: TNS: 協(xié)議適配器錯(cuò)誤

          TNS-00511: 無(wú)監(jiān)聽(tīng)程序

          32-bit Windows Error: 61: Unknown error

          三:發(fā)現(xiàn)監(jiān)聽(tīng)沒(méi)有啟動(dòng),現(xiàn)在啟動(dòng)監(jiān)聽(tīng)

          LSNRCTL> start

          啟動(dòng)tnslsnr: 請(qǐng)稍候...

          Failed to start service, error 3.

          TNS-12560: TNS: 協(xié)議適配器錯(cuò)誤

          TNS-00530: 協(xié)議適配器錯(cuò)誤

          2〉發(fā)現(xiàn)監(jiān)聽(tīng)啟動(dòng)不起來(lái),估計(jì)是注冊(cè)表有點(diǎn)問(wèn)題,登錄注冊(cè)表

          C:\Documents and Settings\Admin>regedit

          進(jìn)入注冊(cè)表到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraDb10g_home1TNSListener

          發(fā)現(xiàn)ImagePath關(guān)鍵值沒(méi)有了,增加可擴(kuò)充字符串值,取名為ImagePathImagePath,編輯字符串的數(shù)值數(shù)據(jù)為:G:\oracle\product\10.2.0\db_2\BIN\TNSLSNR(對(duì)應(yīng)oracle的TNSLSNR的位置) ,退出注冊(cè)表。

          3〉啟動(dòng)監(jiān)聽(tīng)

          LSNRCTL> start

          啟動(dòng)tnslsnr: 請(qǐng)稍候...

          TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

          系統(tǒng)參數(shù)文件為d:\oracle\product\10.2.0\db_1\network\admin\listener.ora

          寫(xiě)入d:\oracle\product\10.2.0\db_1\network\log\listener.log的日志信息

          監(jiān)聽(tīng): (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

          監(jiān)聽(tīng): (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zxt)(PORT=1521)))

          正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

          LISTENER 的 STATUS

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

          別名 LISTENER

          版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ

          ction

          啟動(dòng)日期 20-4月 -2007 09:41:29

          正常運(yùn)行時(shí)間 0 天 0 小時(shí) 0 分 3 秒

          跟蹤級(jí)別 off

          安全性 ON: Local OS Authentication

          SNMP OFF

          監(jiān)聽(tīng)程序參數(shù)文件 d:\oracle\product\10.2.0\db_1\network\admin\listener.o

          ra

          監(jiān)聽(tīng)程序日志文件 d:\oracle\product\10.2.0\db_1\network\log\listener.log

          監(jiān)聽(tīng)端點(diǎn)概要...

          (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zxt)(PORT=1521)))

          服務(wù)摘要..

          服務(wù) "PLSExtProc" 包含 1 個(gè)例程。

          例程 "PLSExtProc", 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個(gè)處理程序...

          命令執(zhí)行成功

          4>監(jiān)聽(tīng)啟動(dòng)成功后嘗試登錄

          C:\Documents and Settings\Admin>sqlplus zxt@orcl

          SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 4月 20 09:42:33 2007

          Copyright (c) 1982, 2005, Oracle. All rights reserved.

          輸入口令:

          連接到:

          Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

          With the Partitioning, OLAP and Data Mining options

          登錄成功!

          總結(jié):估計(jì)是windows優(yōu)化大師或者別的工具在修復(fù)注冊(cè)表時(shí)候刪掉了ImagePath字段,補(bǔ)上后就可以了!

          補(bǔ)充:登錄sqlplus時(shí)報(bào)

          ORA-12514: TNS: 監(jiān)聽(tīng)程序當(dāng)前無(wú)法識(shí)別連接描述符中請(qǐng)求的服務(wù)錯(cuò)誤!

          處理辦法:

          1〉oracle_home\NETWORK\ADMIN\tnsnames.ora中修改(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

          為(ADDRESS = (PROTOCOL = TCP)(HOST = 本地計(jì)算機(jī)名)(PORT = 1521)),保存即可。

          2〉有的人介紹oracle_home\NETWORK\ADMIN\sqlnet.ora中修改SQLNET.AUTHENTICATION_SERVICES = (NTS)為

          SQLNET.AUTHENTICATION_SERVICES = (NONE)

          這2種方法,第一個(gè)最佳!

          posted @ 2013-05-30 14:03 小胡子 閱讀(616) | 評(píng)論 (0)編輯 收藏

          Ext GridPanel實(shí)現(xiàn)復(fù)選框選擇框:

          1 var selectModel = new Ext.grid.CheckboxSelectionModel({
          2     singleSelect : false
          3 });
          4 

           但是這樣每一行都會(huì)有復(fù)選框,如果需求為:某行數(shù)據(jù)的某個(gè)列滿足什么條件我才有復(fù)選框選項(xiàng)就不太好實(shí)現(xiàn)了,

          這樣就需要重寫(xiě)Ext.grid.CheckboxSelectionModel的渲染,行點(diǎn)擊涵數(shù)來(lái)實(shí)現(xiàn).

           1 var selectModel = new Ext.grid.CheckboxSelectionModel({
           2       singleSelect : false,
           3       renderer : function(v, p, record){
           4           if (record.data['結(jié)果狀態(tài)'] == '0'){
           5                return '';
           6           }
           7           return '<div class="x-grid3-row-checker">&#160;</div>';
           8       },
           9       onHdMouseDown : function(e, t) {
          10           if (t.className == 'x-grid3-hd-checker') {
          11                e.stopEvent();
          12                var hd = Ext.fly(t.parentNode);
          13                var isChecked = hd.hasClass('x-grid3-hd-checker-on');
          14                if (isChecked){
          15                   hd.removeClass('x-grid3-hd-checker-on');
          16                   this.clearSelections();
          17               }else {
          18                   hd.addClass('x-grid3-hd-checker-on');
          19                   if (this.locked){
          20                       return;
          21                   }
          22                   this.selections.clear();
          23                   for (var i = 0, len = this.grid.store.getCount(); i < len; i++ ){
          24                       if (this.grid.store.getAt(i).data["結(jié)果狀態(tài)"!= '0'){
          25                            this.selectRow(i, true);
          26                       }
          27                  }
          28               }
          29          }
          30       },
          31       handleMouseDown : function(g, rowIndex, e){
          32             if (e.button !== 0 || this.isLocked()) {
          33                    return;
          34             }
          35             var view = this.grid.getView();
          36             if (e.shiftKey && !this.singleSelect && this.last != false ) {
          37                  var last = this.last;
          38                  this.selectRange(last, rowIndex, e.ctrlKey);
          39                  this.last = last;
          40                  view.focusRow(rowIndex);
          41             }else{
          42                  var isSelected = this.isSelected(rowIndex);
          43                  if (e.ctrlKey && isSelected) {
          44                       this.deselectRow(rowIndex);
          45                  }else if(!isSelected || this.getCount() > 1){
          46                       if(this.grid.store.getAt(rowIndex).data["結(jié)果狀態(tài)"!= '0'){
          47                           this.selectRow(rowIndex, e.ctrlKey || e.shiftKey);
          48                       }
          49                       view.focusRow(rowIndex);
          50                  }
          51             }
          52       }
          53 });
          原文:
          http://fordream.iteye.com/blog/1179252



          posted @ 2013-05-06 15:34 小胡子 閱讀(340) | 評(píng)論 (0)編輯 收藏

               摘要: 在學(xué)習(xí)中Ext.grid.EditorGridPanel 的時(shí)候碰到一個(gè)知識(shí)點(diǎn),如何用復(fù)選框來(lái)表示真假值,當(dāng)然我們可以直接這樣 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1 {2    heade...  閱讀全文

          posted @ 2013-05-06 15:32 小胡子 閱讀(253) | 評(píng)論 (0)編輯 收藏

          Ext.grid.GridPanel可以設(shè)置stripeRows: true的屬性來(lái)實(shí)現(xiàn)隔行換顏色的效果,如果你想自定義每行的顏色,那么你可以按照下邊地方法來(lái)實(shí)現(xiàn):
          Ext.ux.GridView=Ext.extend(  
                 Ext.grid.GridView,  
                 {  
                     getRowClass:
          function(record,index)  
                     {  
                         
          if(index%2==0)  
                             
          return 'red';  
                         
          else  
                            
          return 'green';  
                    }  
                 }  
             ) 

          使用自定義的view

          var grid = new Ext.grid.GridPanel({
                  
          //other code
              store: store,
              view:
          new Ext.ux.GridView(),
                  
          //other code
          });
          樣式定義:

          .red {
               background
          -color:#FF0000;
          }
          .green {
               background
          -color:#00FF00;
          }



          通過(guò)firebug可以看到,給每行的div添加了自定義的樣式
          原文出自:
          http://love4j.iteye.com/blog/516007


          posted @ 2013-05-04 21:33 小胡子 閱讀(711) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 横山县| 民乐县| 济宁市| 台安县| 曲松县| 阿坝县| 沙洋县| 芜湖县| 鲜城| 南通市| 云南省| 柞水县| 无锡市| 香河县| 抚顺市| 江山市| 宜城市| 宜宾县| 澄江县| 石河子市| 紫云| 江城| 聂拉木县| 浦江县| 太和县| 娄烦县| 吉木萨尔县| 昌邑市| 涞源县| 西平县| 木兰县| 潞城市| 布拖县| 藁城市| 太康县| 万源市| 吐鲁番市| 文水县| 西丰县| 清新县| 河池市|