posts - 122,  comments - 25,  trackbacks - 0
               摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*-------------------------------------------------------------------------------說明:JavaScript腳本,驗證表單中...  閱讀全文
          posted @ 2007-05-22 09:49 josson 閱讀(362) | 評論 (0)編輯 收藏
          /**
           * 用途:檢查輸入字符串是否只由英文字母和數字和下劃線組成
           * 輸入:s, 字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isNumberOr_Letter( s ){
              
          var regu = "^[0-9a-zA-Z\_]+$";
              
          var re = new RegExp(regu);
              
          if (re.test(s))  return true;
              
          else    return false;
          }

          /**
           * 用途:檢查輸入字符串是否只由英文字母和數字組成
           * 輸入:s, 字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isNumberOrLetter( s ){//判斷是否是數字或字母
              var regu = "^[0-9a-zA-Z]+$";
              
          var re = new RegExp(regu);
              
          if (re.test(s))  return true;
              
          else return false;
          }

          /**
           * 用途:檢查輸入字符串是否只由漢字、字母、數字組成
           * 輸入:value, 字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isChinaOrNumbOrLett( s ){
              
          var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$"
              
          var re = new RegExp(regu);
              
          if (re.test(s))   return true;
              
          else return false;

          }

          /**
           * 用途:判斷是否是日期
           * 輸入:date:日期;fmt:日期格式
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isDate( date, fmt ) {
              
          if (fmt==null) fmt="yyyyMMdd";
              
          var yIndex = fmt.indexOf("yyyy");
              
          if(yIndex==-1return false;
              
          var year = date.substring(yIndex,yIndex+4);
              
          var mIndex = fmt.indexOf("MM");
              
          if(mIndex==-1return false;
              
          var month = date.substring(mIndex,mIndex+2);
              
          var dIndex = fmt.indexOf("dd");
              
          if(dIndex==-1return false;
              
          var day = date.substring(dIndex,dIndex+2);
              
          if(!isNumber(year)||year>"2100" || year< "1900"return false;
              
          if(!isNumber(month)||month>"12" || month< "01"return false;
              
          if(day>getMaxDay(year,month) || day< "01"return false;
              
          return true;
          }
           
          /**
           * 用途:獲取每月的最后一天日期值.
           * 輸入:date:年份;month:月份
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function getMaxDay(year,month) {
              
          if(month==4||month==6||month==9||month==11)
                  
          return "30";
              
          if(month==2)
                  
          if(year%4==0&&year%100!=0 || year%400==0)
                      
          return "29";
                  
          else
                      
          return "28";
              
          return "31";
          }

          /**
           * 用途:字符1是否以字符串2結束
           * 輸入:str1:字符串;str2:被包含的字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isLastMatch(str1,str2){
              
          var index = str1.lastIndexOf(str2);
              
          if(str1.length==index+str2.length) return true;
              
          return false;
          }

          /**
           * 用途:字符1是否以字符串2開始
           * 輸入:str1:字符串;str2:被包含的字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isFirstMatch(str1,str2){
              
          var index = str1.indexOf(str2);
              
          if(index==0return true;
              
          return false;
          }

          /**
           * 用途:字符1是包含字符串2
           * 輸入:str1:字符串;str2:被包含的字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isMatch(str1,str2){
              
          var index = str1.indexOf(str2);
              
          if(index==-1return false;
              
          return true;
          }

          /**
           * 用途:檢查輸入的起止日期是否正確,規則為兩個日期的格式正確,且結束如期>=起始日期
           * 輸入:startDate:起始日期(字符串),   endDate:結束如期(字符串)
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function checkTwoDate( startDate,endDate ) {
              
          if!isDate(startDate) ) {
                  alert(
          "起始日期不正確!");
                  
          return false;
              } 
          else if!isDate(endDate) ) {
                  alert(
          "終止日期不正確!");
                  
          return false;
              } 
          else if( startDate > endDate ) {
                  alert(
          "起始日期不能大于終止日期!");
                  
          return false;
              }
              
          return true;
          }

          posted @ 2007-05-22 09:31 josson 閱讀(301) | 評論 (0)編輯 收藏
          JavaScript腳本,用于檢查網頁提交表單的輸入數據。

          /**
           * 用途:校驗ip地址的格式
           * 輸入:strIP:ip地址
           * 返回:如果通過驗證返回true,否則返回false;
           
          */
          function isIP(strIP) {
              
          if (isNull(strIP)) return false;
              
          var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$///匹配IP地址的正則表達式
              if(re.test(strIP)){
                  
          if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256return true;
              }
              
          return false;
          }

          /**
           * 用途:檢查輸入字符串是否為空或者全部都是空格
           * 輸入:str
           * 返回:
           * 如果全是空返回true,否則返回false
           
          */
          function isNull( str ){
              
          if ( str == "" ) return true;
              
          var regu = "^[ ]+$";
              
          var re = new RegExp(regu);
              
          return re.test(str);
          }

          /**
           * 用途:檢查輸入對象的值是否符合整數格式
           * 輸入:str 輸入的字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isInteger( str ){ 
              
          var regu = /^[-]{0,1}[0-9]{1,}$/;
              
          return regu.test(str);
          }

          /**
           * 用途:檢查輸入手機號碼是否正確
           * 輸入:s, 字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function checkMobile( s ){  
              
          var regu =/^[1][3][0-9]{9}$/;
              
          var re = new RegExp(regu);
              
          if (re.test(s))    return true;
              
          else    return false;
          }

          /**
           * 用途:檢查輸入字符串是否符合正整數格式
           * 輸入:s, 字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isNumber( s ){  
              
          var regu = "^[0-9]+$";
              
          var re = new RegExp(regu);
              
          if (s.search(re) != -1)  return true;
              
          else     return false;
              }
          }

          /**
           * 用途:檢查輸入字符串是否是帶小數的數字格式,可以是負數
           * 輸入:s, 字符串
           * 返回:如果通過驗證返回true,否則返回false
          */
          function isDecimal( str ){  
              
          if(isInteger(str)) return true;
              
          var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
              
          if (re.test(str)) {
                  
          if(RegExp.$1==0&&RegExp.$2==0return false;
                  
          return true;
              } 
          else {
              
          return false;
              }
          }

           
          /**
           * 用途:檢查輸入對象的值是否符合端口號格式
           * 輸入:str 輸入的字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isPort( str ){ 
              
          return (isNumber(str) && str<65536);
          }

           
          /**
           * 用途:檢查輸入對象的值是否符合E-Mail格式
           * 輸入:str 輸入的字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isEmail( str ){ 
              
          var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
              
          if(myReg.test(str)) return true;
              
          return false;
          }

           
          /**
           * 用途:檢查輸入字符串是否符合金額格式
           * 格式定義為帶小數的正數,小數點后最多三位
           * 輸入:s, 字符串
           * 返回:如果通過驗證返回true,否則返回false
           
          */
          function isMoney( s ){  
              
          var regu = "^[0-9]+[\.][0-9]{0,3}$";
              
          var re = new RegExp(regu);
              
          if (re.test(s)) return true;
              
          else return false;
          }

          posted @ 2007-05-17 13:00 josson 閱讀(311) | 評論 (0)編輯 收藏
          1.0的標準事務配置示例:
           <bean id="baseTxService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"  
                     abstract
          ="true">  
                   
          <property name="transactionManager" ref="transactionManager"/>  
                   
          <property name="proxyTargetClass" value="true"/>  
                   
          <property name="transactionAttributes">  
                       
          <props>  
                           
          <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>  
                           
          <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>  
                           
          <prop key="save*">PROPAGATION_REQUIRED</prop>  
                           
          <prop key="remove*">PROPAGATION_REQUIRED</prop>  
                       
          </props>  
                   
          </property>  
                   
          <property name="preInterceptors">  
                       
          <list>  
                           
          <ref bean="methodSecurityInterceptor"/>  
                       
          </list>  
                   
          </property>  
            
          </bean>  
            
          <bean id="userManager" parent="baseTxService">  
                   
          <property name="target">  
                       
          <bean class="com.scommnet.acl.service.UserManager"/>  
                   
          </property>  
            
          </bean>

          2.0的事務配置示例:
           <aop:config proxy-target-class="true">  
               
          <aop:advisor pointcut="execution(* com.scommnet.acl.*Manager.*(..))" advice-ref="txAdvice"/>  
               
          <aop:advisor pointcut="execution(* com.scommnet.sms.*Manager.save(..))" advice-ref="fooAdvice"/>  
           
          </aop:config><tx:advice id="txAdvice" transaction-manager="transactionManager">  
               
          <tx:attributes>  
                   
          <tx:method name="get*" read-only="true"/>  
                   
          <tx:method name="find*" read-only="true"/>  
                   
          <tx:method name="*" rollback-for="BusinessException"/>  
              
          </tx:attributes>  
           
          </tx:advice>  
             
           
          <bean id="userManager" class="com.scommnet.acl.service.UserManager"/>

          pointcut語法說明,Spring參考文檔6.2.3.4里有完整說明。
          execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)

          其中帶問號的modifiers-pattern?(public/protected) 和 declaring-type-pattern? throws-pattern? 可以不填

          可見execution(* *..UserManager.save(..))

          第一顆* 代表ret-type-pattern 返回值可任意,*..UserManager 代表任意Pacakge里的BookManager類。
          如果寫成com.xyz.service.* 則代表com.xyz.service下的任意類,com.xyz.service..* com.xyz.service則代表com.xyz.service及其子package下的任意類,save代表save方法,也可以寫save* 代表saveBook()等方法 。

          (..) 匹配0個參數或者多個參數的,任意類型
          (x,..) 第一個參數的類型必須是X
          (x,,,s,..) 匹配至少4個參數,第一個參數必須是x類型,第二個和第三個參數可以任意,第四個必須是s類型。

          注意name-pattern千萬不要寫成*..*Manager ,這樣子的話會把所有第三方類庫的Manager比如Spring的PlatformTranstationManager 也加入aop,非常危險。所以最好還是加上項目的package前綴,如com.sample
          posted @ 2007-05-17 08:54 josson 閱讀(345) | 評論 (0)編輯 收藏
          http://docs.huihoo.com/framework/hibernate/reference-v3_zh-cn/querycriteria.html

          第 16 章  條件查詢(Criteria Queries)

          具有一個直觀的、可擴展的條件查詢API是Hibernate的特色。

          16.1. 創建一個Criteria 實例

          org.hibernate.Criteria接口表示特定持久類的一個查詢。Session是 Criteria實例的工廠。

          Criteria crit = sess.createCriteria(Cat.class);
          crit.setMaxResults(
          50);
          List cats 
          = crit.list();


          16.2. 限制結果集內容

          一個單獨的查詢條件是org.hibernate.criterion.Criterion 接口的一個實例。org.hibernate.criterion.Restrictions類 定義了獲得某些內置Criterion類型的工廠方法。

          List cats = sess.createCriteria(Cat.class)
              .add( Restrictions.like(
          "name""Fritz%") )
              .add( Restrictions.between(
          "weight", minWeight, maxWeight) )
              .list();


          約束可以按邏輯分組。

          List cats = sess.createCriteria(Cat.class)
              .add( Restrictions.like(
          "name""Fritz%") )
              .add( Restrictions.or(
                  Restrictions.eq( 
          "age"new Integer(0) ),
                  Restrictions.isNull(
          "age")
              ) )
              .list();


          List cats = sess.createCriteria(Cat.class)
              .add( Restrictions.in( 
          "name"new String[] { "Fritz""Izi""Pk" } ) )
              .add( Restrictions.disjunction()
                  .add( Restrictions.isNull(
          "age") )
                  .add( Restrictions.eq(
          "age"new Integer(0) ) )
                  .add( Restrictions.eq(
          "age"new Integer(1) ) )
                  .add( Restrictions.eq(
          "age"new Integer(2) ) )
              ) )
              .list();


          Hibernate提供了相當多的內置criterion類型(Restrictions 子類), 但是尤其有用的是可以允許你直接使用SQL。

          List cats = sess.createCriteria(Cat.class)
              .add( Restrictions.sql(
          "lower({alias}.name) like lower(?)""Fritz%", Hibernate.STRING) )
              .list();


          {alias}占位符應當被替換為被查詢實體的列別名。

          Property實例是獲得一個條件的另外一種途徑。你可以通過調用Property.forName() 創建一個Property。

          Property age = Property.forName("age");
          List cats 
          = sess.createCriteria(Cat.class)
              .add( Restrictions.disjunction()
                  .add( age.isNull() )
                  .add( age.eq( 
          new Integer(0) ) )
                  .add( age.eq( 
          new Integer(1) ) )
                  .add( age.eq( 
          new Integer(2) ) )
              ) )
              .add( Property.forName(
          "name").in( new String[] { "Fritz""Izi""Pk" } ) )
              .list();


          16.3. 結果集排序

          你可以使用org.hibernate.criterion.Order來為查詢結果排序。

          List cats = sess.createCriteria(Cat.class)
              .add( Restrictions.like(
          "name""F%")
              .addOrder( Order.asc(
          "name") )
              .addOrder( Order.desc(
          "age") )
              .setMaxResults(
          50)
              .list();

          List cats = sess.createCriteria(Cat.class)
              .add( Property.forName(
          "name").like("F%") )
              .addOrder( Property.forName(
          "name").asc() )
              .addOrder( Property.forName(
          "age").desc() )
              .setMaxResults(
          50)
              .list();


          16.4. 關聯

          你可以使用createCriteria()非常容易的在互相關聯的實體間建立 約束。

          List cats = sess.createCriteria(Cat.class)
              .add( Restrictions.like(
          "name""F%")
              .createCriteria(
          "kittens")
                  .add( Restrictions.like(
          "name""F%")
              .list();


          注意第二個 createCriteria()返回一個新的 Criteria實例,該實例引用kittens 集合中的元素。

          接下來,替換形態在某些情況下也是很有用的。

          List cats = sess.createCriteria(Cat.class)
              .createAlias(
          "kittens""kt")
              .createAlias(
          "mate""mt")
              .add( Restrictions.eqProperty(
          "kt.name""mt.name") )
              .list();


          (createAlias()并不創建一個新的 Criteria實例。)

          Cat實例所保存的之前兩次查詢所返回的kittens集合是 沒有被條件預過濾的。如果你希望只獲得符合條件的kittens, 你必須使用returnMaps()。

          List cats = sess.createCriteria(Cat.class)
              .createCriteria(
          "kittens""kt")
                  .add( Restrictions.eq(
          "name""F%") )
              .returnMaps()
              .list();
          Iterator iter 
          = cats.iterator();
          while ( iter.hasNext() ) {
              Map map 
          = (Map) iter.next();
              Cat cat 
          = (Cat) map.get(Criteria.ROOT_ALIAS);
              Cat kitten 
          = (Cat) map.get("kt");
          }


          16.5. 動態關聯抓取

          你可以使用setFetchMode()在運行時定義動態關聯抓取的語義。

          List cats = sess.createCriteria(Cat.class)
              .add( Restrictions.like(
          "name""Fritz%") )
              .setFetchMode(
          "mate", FetchMode.EAGER)
              .setFetchMode(
          "kittens", FetchMode.EAGER)
              .list();


          這個查詢可以通過外連接抓取mate和kittens。 查看第 20.1 節 “ 抓取策略(Fetching strategies) ”可以獲得更多信息。
          16.6. 查詢示例

          org.hibernate.criterion.Example類允許你通過一個給定實例 構建一個條件查詢。

          Cat cat = new Cat();
          cat.setSex(
          'F');
          cat.setColor(Color.BLACK);
          List results 
          = session.createCriteria(Cat.class)
              .add( Example.create(cat) )
              .list();


          版本屬性、標識符和關聯被忽略。默認情況下值為null的屬性將被排除。

          你可以自行調整Example使之更實用。

          Example example = Example.create(cat)
              .excludeZeroes()           
          //exclude zero valued properties
              .excludeProperty("color")  //exclude the property named "color"
              .ignoreCase()              //perform case insensitive string comparisons
              .enableLike();             //use like for string comparisons
          List results = session.createCriteria(Cat.class)
              .add(example)
              .list();


          你甚至可以使用examples在關聯對象上放置條件。

          List results = session.createCriteria(Cat.class)
              .add( Example.create(cat) )
              .createCriteria(
          "mate")
                  .add( Example.create( cat.getMate() ) )
              .list();


          16.7. 投影(Projections)、聚合(aggregation)和分組(grouping)

          org.hibernate.criterion.Projections是 Projection 的實例工廠。我們通過調用 setProjection()應用投影到一個查詢。

          List results = session.createCriteria(Cat.class)
              .setProjection( Projections.rowCount() )
              .add( Restrictions.eq(
          "color", Color.BLACK) )
              .list();

          List results 
          = session.createCriteria(Cat.class)
              .setProjection( Projections.projectionList()
                  .add( Projections.rowCount() )
                  .add( Projections.avg(
          "weight") )
                  .add( Projections.max(
          "weight") )
                  .add( Projections.groupProperty(
          "color") )
              )
              .list();


          在一個條件查詢中沒有必要顯式的使用 "group by" 。某些投影類型就是被定義為 分組投影,他們也出現在SQL的group by子句中。

          你可以選擇把一個別名指派給一個投影,這樣可以使投影值被約束或排序所引用。下面是兩種不同的實現方式:

          List results = session.createCriteria(Cat.class)
              .setProjection( Projections.alias( Projections.groupProperty(
          "color"), "colr" ) )
              .addOrder( Order.asc(
          "colr") )
              .list();

          List results 
          = session.createCriteria(Cat.class)
              .setProjection( Projections.groupProperty(
          "color").as("colr") )
              .addOrder( Order.asc(
          "colr") )
              .list();


          alias()和as()方法簡便的將一個投影實例包裝到另外一個 別名的Projection實例中。簡而言之,當你添加一個投影到一個投影列表中時 你可以為它指定一個別名:

          List results = session.createCriteria(Cat.class)
              .setProjection( Projections.projectionList()
                  .add( Projections.rowCount(), 
          "catCountByColor" )
                  .add( Projections.avg(
          "weight"), "avgWeight" )
                  .add( Projections.max(
          "weight"), "maxWeight" )
                  .add( Projections.groupProperty(
          "color"), "color" )
              )
              .addOrder( Order.desc(
          "catCountByColor") )
              .addOrder( Order.desc(
          "avgWeight") )
              .list();

          List results 
          = session.createCriteria(Domestic.class"cat")
              .createAlias(
          "kittens""kit")
              .setProjection( Projections.projectionList()
                  .add( Projections.property(
          "cat.name"), "catName" )
                  .add( Projections.property(
          "kit.name"), "kitName" )
              )
              .addOrder( Order.asc(
          "catName") )
              .addOrder( Order.asc(
          "kitName") )
              .list();


          你也可以使用Property.forName()來表示投影:

          List results = session.createCriteria(Cat.class)
              .setProjection( Property.forName(
          "name") )
              .add( Property.forName(
          "color").eq(Color.BLACK) )
              .list();

          List results 
          = session.createCriteria(Cat.class)
              .setProjection( Projections.projectionList()
                  .add( Projections.rowCount().as(
          "catCountByColor") )
                  .add( Property.forName(
          "weight").avg().as("avgWeight") )
                  .add( Property.forName(
          "weight").max().as("maxWeight") )
                  .add( Property.forName(
          "color").group().as("color" )
              )
              .addOrder( Order.desc(
          "catCountByColor") )
              .addOrder( Order.desc(
          "avgWeight") )
              .list();


          16.8. 離線(detached)查詢和子查詢

          DetachedCriteria類使你在一個session范圍之外創建一個查詢,并且可以使用任意的 Session來執行它。

          DetachedCriteria query = DetachedCriteria.forClass(Cat.class)
              .add( Property.forName(
          "sex").eq('F') );
             
          Session session 
          = .;
          Transaction txn 
          = session.beginTransaction();
          List results 
          = query.getExecutableCriteria(session).setMaxResults(100).list();
          txn.commit();
          session.close();


          DetachedCriteria也可以用以表示子查詢。條件實例包含子查詢可以通過 Subqueries或者Property獲得。

          DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)
              .setProjection( Property.forName(
          "weight").avg() );
          session.createCriteria(Cat.
          class)
              .add( Property.forName(
          "weight).gt(avgWeight) )
              .list();

          DetachedCriteria weights 
          = DetachedCriteria.forClass(Cat.class)
              .setProjection( Property.forName(
          "weight") );
          session.createCriteria(Cat.
          class)
              .add( Subqueries.geAll(
          "weight", weights) )
              .list();


          甚至相互關聯的子查詢也是有可能的:

          DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class"cat2")
              .setProjection( Property.forName(
          "weight").avg() )
              .add( Property.forName(
          "cat2.sex").eqProperty("cat.sex") );
          session.createCriteria(Cat.
          class"cat")
              .add( Property.forName(
          "weight).gt(avgWeightForSex) )
              .list();

          posted @ 2007-05-15 08:55 josson 閱讀(360) | 評論 (0)編輯 收藏
          Criteria接口的Projections類主要用于幫助Criteria接口完成數據的分組查詢和統計功能:
          List cats=session.createCriteria(Cat.class)
                         .setProjection(Projections.projectionList()
                         .add(Projections.rowCount())
                         .add(Projections.avg(
          "weight"))
                         .add(Projections.max(
          "weight"))
                         .add(Projections.min(
          "weight"))
                         .add(Projections.groupProperty(
          "color"))
                     ).addOrder(Order.asc(
          "color")).list();

          示例
          代碼相當于:
          select color,count(*),avg(weight),max(weight),min(weight),min(weight) from cat group by color order by color asc;

          posted @ 2007-05-15 08:50 josson 閱讀(2937) | 評論 (0)編輯 收藏
          DTree控件開發時,若在node中指定了target項,如

          d.add('id','pid','node-name','javascript:abc();','','_target');

          若指定了"_target"項時,就無法調用abc方法,去掉就正常了。

          posted @ 2007-05-12 15:51 josson 閱讀(867) | 評論 (0)編輯 收藏
          如果源文件編碼使用了utf-8編碼,那么生成的文檔可會有亂碼,解決辦法如下:

          Generate javadoc時, 在第三個對話框的"Extra Javadoc options" 文本框里面加上 "-encoding UTF-8"
          posted @ 2007-04-28 10:39 josson 閱讀(1772) | 評論 (2)編輯 收藏
          新裝的系統,又中Backdoor.Hupigeon了,現在病毒真的太猖狂了,無孔不入!!

          無良人類總是不斷的制造出新病毒和流氓軟件,從中獲取利益,強烈的鄙視這群人!!

          可憐我的Norton能殺,但不能清理干凈,郁悶至極!找了個金山毒霸的專殺工具,在windows下殺出了一個kson.exe!!


          希望問題已經解決,哈哈。。


          posted @ 2007-04-28 09:18 josson 閱讀(600) | 評論 (0)編輯 收藏
          在Servlet或者filter或者Listener中使用spring的IOC容器的方法是:
          WebApplicationContext webApplicationContext =
              WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); 

          由于spring是注入的對象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext 對象:
          WebApplicationContext webApplicationContext =
              (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

          事實上WebApplicationContextUtils.getWebApplicationContext方法就是使用上面的代碼實現的,建議使用上面上面的靜態方法
          posted @ 2007-04-25 17:08 josson 閱讀(515) | 評論 (0)編輯 收藏
          僅列出標題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 吉林省| 宝鸡市| 密云县| 滦南县| 敦煌市| 绥江县| 缙云县| 招远市| 中卫市| 泾源县| 旬阳县| 普格县| 长寿区| 池州市| 宁陕县| 兴仁县| 万载县| 武宁县| 长岭县| 札达县| 乌拉特后旗| 新乡县| 五家渠市| 房产| 罗江县| 宕昌县| 三江| 湖口县| 东明县| 古浪县| 新宾| 原平市| 乌拉特后旗| 西平县| 荥经县| 封开县| 屏山县| 南靖县| 绥中县| 定日县| 陆川县|