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

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

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

    風人園

    弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
    隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0
    數據加載中……

    2012年4月20日

    Spring boot+Spring Security 4配置整合實例

    http://blog.csdn.net/code__code/article/details/53885510

    1. 使用Spring Security管理用戶身份認證、登錄退出

    2. 用戶密碼加密及驗證

    3. 采用數據庫的方式實現Spring Securityremember-me功能

    4. 獲取登錄用戶信息。

    5.使用Spring Security管理url和權限

    posted @ 2018-03-19 21:02 風人園 閱讀(316) | 評論 (0)編輯 收藏

    spring security 參數配置

         摘要:         // 自定義登錄頁面          http.csrf().disable().formLogin().loginPage("/login")  //指定登錄頁的路徑&n...  閱讀全文

    posted @ 2018-03-19 20:33 風人園 閱讀(433) | 評論 (0)編輯 收藏

    spring quartz 串行配置

    <bean id="jobDetail7"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

                       <propertyname="targetObject" ref="billingBillTask"></property>

                       <propertyname="targetMethod" value="executeInternal" />

                       <propertyname="concurrent" value="false" />

             </bean>

             <beanid="billingBillTask"class="com.dangdang.tms.job.schedule.bms.BillingBillTask"/>

             <beanid="cronTriggerBean7" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

                       <propertyname="jobDetail" ref="jobDetail7"></property>

                       <propertyname="cronExpression" value="0/5 * * * * ?"></property>

             </bean>

    參考 http://blog.csdn.net/lkforce/article/details/51841890

    posted @ 2018-03-12 19:58 風人園 閱讀(387) | 評論 (0)編輯 收藏

    spring 3.0 async 異步方法 設置

    為了解決一些比較費時且不是很緊要的任務,將此任務轉為異步任務處理,提高前端操作體驗。 spring 中 自帶注解 @Async. 配置如下 applicationContext.xml 中 增加 task的引用 如上配置之后,只需要在 需要進行異步調用的方法前面增加 注解就可以了。 @Async public void updateOrderBillItemPQty(String deptId, String orderNo, Integer orderItemSid, Double pQty) { 注:需要注意,同一個對象里面方法調用,不會作為異步方法執行。

    posted @ 2017-05-24 14:27 風人園 閱讀(261) | 評論 (0)編輯 收藏

    android ResourceNotFoundException


    在對 TextView 或者 EditText 進行賦值時,調用setText()方法,一定要注意,使用String類型,不要使用int 或者long,否則 會出現找不到資源的異常。系統自動會將int作為一個資源ID,然后去R 里面找,結果找不到。

    posted @ 2016-12-21 20:48 風人園 閱讀(134) | 評論 (0)編輯 收藏

    android 系統提示對話框(AlertDialog)的使用(zt)

         摘要: http://blog.csdn.net/meng425841867/article/details/8523730 在按鍵單擊事件中添加創建對話框并設置相關屬性。        [java] view plain copy dialogButton=(Button)findViewBy...  閱讀全文

    posted @ 2016-12-02 12:54 風人園 閱讀(475) | 評論 (0)編輯 收藏

    Android 自定義ListView adapter(zt)

         摘要: http://daoshud1.iteye.com/blog/1874241 本文講實現一個自定義列表的Android程序,程序將實現一個使用自定義的適配器(Adapter)綁定 數據,通過contextView.setTag綁定數據有按鈕的ListView。 系統顯示列表(ListView)時,首先會實例化一個適配器,本文將實例化一個自定義的適配器。實現 自定義適...  閱讀全文

    posted @ 2016-12-01 13:13 風人園 閱讀(167) | 評論 (0)編輯 收藏

    Android之SimpleAdapter簡單實例和SimpleAdapter參數說明(zt)

         摘要: http://blog.csdn.net/x605940745/article/details/11981049 SimpleAdapter的參數說明 第一個參數 表示訪問整個android應用程序接口,基本上所有的組件都需要 第二個參數表示生成一個Map(String ,Object)列表選項 第三個參數表示界面布局的id  表示該文件作為列表項的組件&...  閱讀全文

    posted @ 2016-12-01 13:12 風人園 閱讀(182) | 評論 (0)編輯 收藏

    android開發教程之listview使用方法

    首先是布局文件,這里需要兩個布局文件,一個是放置列表控件的Activity對應的布局文件 main.xml,另一個是ListView中每一行信息顯示所對應的布局 list_item.xml 這一步需要注意的問題是ListView 控件的id要使用Android系統內置的 android:id="@android:id/list"

    main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width
    ="match_parent"
        android:layout_height
    ="match_parent"
        android:orientation
    ="vertical" >
            
    <ListView 
            
    android:id="@android:id/list"
            android:layout_width
    ="match_parent"
            android:layout_height
    ="match_parent"
            android:padding
    ="20dip"/>
    </LinearLayout>

    list_item.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width
    ="match_parent"
    android:layout_height
    ="match_parent"
    android:orientation
    ="horizontal" >

    <TextView
    android:id="@+id/user_name"
    android:layout_width
    ="match_parent"
    android:layout_height
    ="match_parent"
    android:layout_weight
    ="1"/>
    <TextView
    android:id="@+id/user_id"
    android:layout_width
    ="match_parent"
    android:layout_height
    ="match_parent"
    android:layout_weight
    ="1"/>
    </LinearLayout>


    然后就設置MainActivity中的代碼了:基本思想就是先將數據添加到ArrayList中,然后在設置SimpleAdapter適配器完成設置,入下:

    package com.example.android_newlistview;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;

    import android.os.Bundle;
    import android.app.Activity;
    import android.app.ListActivity;
    import android.view.Menu;
    import android.widget.SimpleAdapter;

    public class MainActivity extends ListActivity {


    String[] from
    ={"name","id"}; //這里是ListView顯示內容每一列的列名
    int[] to={R.id.user_name,R.id.user_id}; //這里是ListView顯示每一列對應的list_item中控件的id

    String[] userName
    ={"zhangsan","lisi","wangwu","zhaoliu"}; //這里第一列所要顯示的人名
    String[] userId={"1001","1002","1003","1004"}; //這里是人名對應的ID

    ArrayList
    <HashMap<String,String>> list=null;
    HashMap
    <String,String> map=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //為MainActivity設置主布局
    //創建ArrayList對象;
    list=new ArrayList<HashMap<String,String>>();
    //將數據存放進ArrayList對象中,數據安排的結構是,ListView的一行數據對應一個HashMap對象,
    //HashMap對象,以列名作為鍵,以該列的值作為Value,將各列信息添加進map中,然后再把每一列對應
    //的map對象添加到ArrayList中

    for(int i=0; i<4; i++){
    map
    =new HashMap<String,String>(); //為避免產生空指針異常,有幾列就創建幾個map對象
    map.put("id", userId[i]);
    map.put(
    "name", userName[i]);
    list.add(map);
    }


    //創建一個SimpleAdapter對象
    SimpleAdapter adapter=new SimpleAdapter(this,list,R.layout.list_item,from,to);
    //調用ListActivity的setListAdapter方法,為ListView設置適配器
    setListAdapter(adapter);
    }

    }


    另外對點擊某一行作出響應的方法是覆寫onListItemClick方法,根據返回的position(從0開始):
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    }


    posted @ 2016-12-01 13:08 風人園 閱讀(155) | 評論 (0)編輯 收藏

    android json 數據解析



    單數據{'singer':{'id':01,'name':'tom','gender':'男'}} 
    多個數據{"singers":[ 
            {'id':02,'name':'tom','gender':'男'}, 
             {'id':03,'name':'jerry,'gender':'男'}, 
    {'id':04,'name':'jim,'gender':'男'}, 
    {'id':05,'name':'lily,'gender':'女'}]}          
    // 普通Json數據解析 
        private void parseJson(String strResult) 
            
    try 
                JSONObject jsonObj 
    = new JSONObject(strResult).getJSONObject("singer"); 
                
    int id = jsonObj.getInt("id"); 
                String name 
    = jsonObj.getString("name"); 
                String gender 
    = jsonObj.getString("gender"); 
                tvJson.setText(
    "ID號"+id + ", 姓名:" + name + ",性別:" + gender); 
            }
     catch (JSONException e) 
                System.out.println(
    "Json parse error"); 
                e.printStackTrace(); 
            }
     
        }
     
        
    //解析多個數據的Json
       private void parseJsonMulti(String strResult) 
           
    try 
                JSONArray jsonObjs 
    = new JSONObject(strResult).getJSONArray("singers"); 
                String s 
    = ""
                
    for(int i = 0; i < jsonObjs.length() ; i++)
                    JSONObject jsonObj 
    = ((JSONObject)jsonObjs.opt(i)).getJSONObject("singer"); 
                    
    int id = jsonObj.getInt("id"); 
                    String name 
    = jsonObj.getString("name"); 
                    String gender 
    = jsonObj.getString("gender"); 
                    s 
    +=  "ID號"+id + ", 姓名:" + name + ",性別:" + gender+ "\n" ; 
                }
     
                tvJson.setText(s); 
            }
     catch (JSONException e) 
                System.out.println(
    "Jsons parse error !"); 
                e.printStackTrace(); 
            }
     
        }
     

    posted @ 2016-11-29 15:09 風人園 閱讀(161) | 評論 (0)編輯 收藏

    button onClick 事件的幾種調用方式



    1. //第一種方式    
    2.         Button Btn1 = (Button)findViewById(R.id.button1);//獲取按鈕資源    
    3.         Btn1.setOnClickListener(new Button.OnClickListener(){//創建監聽    
    4.             public void onClick(View v) {    
    5.                 String strTmp = "點擊Button01";    
    6.                 Ev1.setText(strTmp);    
    7.             }    
    8.   
    9.         });   

    1.     //第二種方式(Android1.6版本及以后的版本中提供了,直接在layout中設置)    
    2.     public void Btn3OnClick(View view){    
    3.         String strTmp="點擊Button03";  
    4.         Ev1.setText(strTmp);  
    5.   
    6.     }  

    1.  <Button  
    2.         android:id="@+id/button3"  
    3.         android:layout_width="wrap_content"  
    4.         android:layout_height="wrap_content"  
    5.         android:text="Button3"   
    6.         android:onClick="Btn3OnClick"/>  


    第三種方式 activity 實現 單擊監聽接口

    public class TestButtonActivity extends Activity implements OnClickListener {
    Button btn1, btn2;
    Toast tst;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test_button);
    btn1 = (Button) findViewById(R.id.button1);
    btn2 = (Button) findViewById(R.id.button2);
    btn1.setOnClickListener(this);
    btn2.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.button1:
    tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);
    tst.show();
    break;
    case R.id.button2:
    tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);
    tst.show();
    break;
    default:
    break;
    }
    }
    }




     

    posted @ 2016-11-29 13:31 風人園 閱讀(904) | 評論 (0)編輯 收藏

    打開activity的幾種方式


    一、直接打開,不傳遞參數
    Intent intent = new Intent(this, Activity.class);
    startActivity(intent);


    二、傳遞參數
    public void OpenNew(View v) {
        
    //新建一個顯式意圖,第一個參數為當前Activity類對象,第二個參數為你要打開的Activity類
        Intent intent =new Intent(MainActivity.this,MainActivity2.class);
        
        
    //用Bundle攜帶數據
        Bundle bundle=new Bundle();
        
    //傳遞name參數為tinyphp
        bundle.putString("name""tinyphp");
        intent.putExtras(bundle);
        
        startActivity(intent);       
     //1.要關閉的頁面  
        protected void onCreate(Bundle savedInstanceState) {  
            
    super.onCreate(savedInstanceState);  
            setContentView(R.layout.otheractivity);  
            Intent intent 
    = this.getIntent();  
            intent.putExtra(
    "tel"12345);  
            
    //設置requestCode和帶有數據的intent對象  
            OtherActivity.this.setResult(3, intent);  
            
    //馬上關閉Activity  
            this.finish();  
        }
      
          
        
    //2.上面的頁面關閉時,此頁面進行數據的接收  
        class ButtonListener implements android.view.View.OnClickListener{  
            @Override  
            
    public void onClick(View arg0) {  
                Intent intent 
    = new Intent();  
                intent.setClass(MainActivity.
    this, OtherActivity.class);  
                
    //與普通的start方法不同,需要設置requestCode  
                startActivityForResult(intent, 1);  
            }
      
        }
      
          
        
    //如果要進行此操作,需要在數據接收頁面中復寫activity的onActivityResul()方法  
        @Override  
        
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
            
    super.onActivityResult(requestCode, resultCode, data);  
            
    int tel = 0;  
            
    //根據返回碼resultCode來判斷下一步進行的業務代碼  
            if(resultCode==3){  
                tel 
    = data.getIntExtra("tel"0);  
            }
      
            Log.i(TAG, 
    "tel--------->"+String.valueOf(tel));  
        }
      
     
        }



    三、回傳參數


    posted @ 2016-11-29 13:24 風人園 閱讀(443) | 評論 (0)編輯 收藏

    spring mvc @ExceptionHandler 異常處理

    spring mvc 統一的異常處理,有兩種方式。
    一、exceptionResolver
    二、ExceptionHandler

    兩者不能同時配置。如果配置了第一種,則第二種無效。就因為這個原因,找了一天的問題。

    ExceptionHandler 通過注解的方式,進行配置,只需要在某個controller 中設置了這個注解,則這個controller中的所有異常都會通過這個方法進行處理。

    比如rest controller,增加一個
        @ExceptionHandler
        
    public String exp(HttpServletRequest request, Exception ex) {  
            
            Map map 
    = new HashMap();
            
            logger.error(
    "error," + UUID.randomUUID().toString(), ex);
            request.setAttribute(
    "ex", ex);  
            
            String msg 
    = ex.getMessage();
            
            map.put(
    "success""0"); 
            map.put(
    "msg", msg);
            
            String rtnjson 
    = JSONUtil.objectToJson(map);
            
            request.setAttribute(
    "json", rtnjson);
            
            
    return "json";
        }
     

    這樣,這個controler中的異常,都會由這個異常處理方法,進行統一處理,生成異常json。避免在各個方法中通過try catch 的方法,進行異常處理。

    posted @ 2016-11-08 08:32 風人園 閱讀(392) | 評論 (0)編輯 收藏

    有關使用 ActionBarSherlock 自定義樣式的問題

    1、不同android 版本,需要設置不同的 sytle 文件。
        默認 通常我們會設置values下面的style 文件
        但是如果是4.0以上,則還需要設置values-v14下面的style文件。
        
    否則不能生效

    posted @ 2014-03-30 09:00 風人園 閱讀(467) | 評論 (0)編輯 收藏

    解決IIS 啟動響應超時 或者 World Wide Web Publishing服務無法啟動提示:錯誤127 找不到指定程序/路徑

    找了很多方案,都說是那個KB939373 這個補丁搞的,但是在添加刪除里就是找不到這個東東,重裝也沒有用,后來找到了這篇文章
    http://www.cnblogs.com/skylaugh/archive/2011/07/21/2112860.html

    根據這篇文章,我把 infocomm.dll 給替換一下,然后就好了,簡直就是坑爹啊。

    這里講講需要注意的事項。
    1、替換的文件通過iis安裝文件生成,請看參考文章
    2、文件直接黏貼覆蓋,不要使用參考里面bat處理。
    3、然后啟動這個服務,啟動iis,搞定

    posted @ 2013-06-18 15:49 風人園 閱讀(230) | 評論 (0)編輯 收藏

    解決Tomcat Error listenerStart 問題

    昨天部署web應用到Tomcat之后,無法成功啟動,并且控制臺沒有詳細的錯誤信息,
    頂多就兩行提示信息,例如:
    嚴重: Error listenerStart
    嚴重: Context [/] startup failed due to previous errors

    或者

    嚴重: Error filterStart
    org.apache.catalina.core.StandardContext start
    嚴重: Context startup failed due to previous errors

    查找logs目錄下的信息,除了這兩句話,也沒別的輔助內容.
    給查錯帶來了困難,在這種情況下,是因為Tomcat自身的默認日志沒有將一些錯誤信息輸出到控制臺或文件,
    這個時候則需要配置Tomcat自身的log,啟用詳細的調試日志.

    3.log4j配置文件:
    log4j.properties
    配置內容為:

    log4j.rootLogger=ERROR,R

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=[%p]%t-%c-%m%n

    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=${catalina.home}/logs/tomcat.log
    log4j.appender.R.MaxFileSize=10MB
    log4j.appender.R.MaxBackupIndex=10
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=[%p]%t-%c-%m%n

    log4j.logger.org.apache.catalina=INFO,R,CONSOLE

    #日志級別不能太低,如果配置為debug的話,輸出的日志信息太多,導致tomcat啟動非常的慢.

    4.Tomcat 6.0所需的juli替換文件:
    http://www.apache.org/dist/--escaped_anchor:079305423cce36d6691457475e081123--/tomcat-6/v6.0.18/bin/extras/tomcat-juli-adapters.jar
    http://www.apache.org/dist/--escaped_anchor:079305423cce36d6691457475e081123--/tomcat-6/v6.0.18/bin/extras/tomcat-juli.jar
    以上兩個鏈接基本沒用,大家可以搜索一下,csdn上面有人提供jar包下載,這里附件也不能加,沒有辦法。

    在Tomcat6.0中,

    將tomcat-juli-adapters.jar,log4j-1.2.15.jar,log4j.properties復制到D:\Java\ApacheTomcat6.0.14\lib下面.

    將tomcat-juli.jar復制到D:\Java\apache-tomcat-6.0.14\bin\下面.

    然后啟動tomcat,就可以在D:\Java\apache-tomcat-6.0.14\logs下看到tomcat.log了.

    在這個時候,再通過日志文件來分析,則會發現出現這種錯誤的情況可能有:
    (以下是我遇到的出錯情況,大多是些低級錯誤)
    1.webapps要用到的classe文件根本沒有復制到WEB-INF/classes目錄下面
    (java.lang.NoClassDefFoundError,而這個信息可能默認沒輸出到控制臺,尤其是用了spring的,昨天就是這個粗心的低級錯誤)
    2.要用到lib文件沒有復制完,缺少lib
    3.lib下的同一個庫的jar文件存在多個不同版本,引起版本沖突.
    4.lib下的jar與tomcat版本不相對應(我遇到的問題是web應用在Tomcat5.5上運行正常,換到Tomcat6.0上就出錯,
    例如一個用了struts的webapp在Tomcat 6上報下面的錯誤
    “Parse Fatal Error at line 17 column 6: The processing instruction
    target matching “[xX][mM][lL]” is not allowed” )

    愿意看英文的可以參考官方網站說明:
    http://tomcat.apache.org/tomcat-6.0-doc/logging.html


    標記一下:) 

    posted @ 2012-04-20 15:39 風人園 閱讀(2877) | 評論 (0)編輯 收藏

    javax.servlet 和 javax.servlet.jsp導致系統錯誤的問題

    提示無法載入 c.tld等信息

    只要刪除 WEB-INF/lib 下的上述兩個文件即可

    因為此文件與 tomcat中的文件版本沖突

    posted @ 2012-04-20 14:16 風人園 閱讀(242) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲国产成+人+综合| 亚洲免费网站观看视频| 中国好声音第二季免费播放| 免费看黄福利app导航看一下黄色录像 | 亚洲男同gay片| 亚洲午夜在线播放| 亚洲中文字幕久久精品无码2021| 亚洲婷婷在线视频| 亚洲色图综合网站| 亚洲另类自拍丝袜第1页| 亚洲免费观看在线视频| ww亚洲ww在线观看国产| 亚洲中文无码亚洲人成影院| 亚洲日韩久久综合中文字幕| 欧美亚洲国产SUV| 国产精品亚洲综合| 一级毛片不卡免费看老司机| 两性色午夜免费视频| 免费看搞黄视频网站| 美女内射毛片在线看免费人动物| 日韩精品免费一级视频| 好大好深好猛好爽视频免费| 午夜dj在线观看免费视频| 国产免费观看黄AV片| 亚洲色图综合在线| 久久精品国产亚洲av成人| 亚洲性无码av在线| 日韩国产欧美亚洲v片| 国产黄色免费观看| 99久久免费看国产精品| 99精品国产免费久久久久久下载| 免费理论片51人人看电影| 亚洲国产精品一区二区三区久久| 亚洲无人区午夜福利码高清完整版| 亚洲国产天堂久久综合网站| 国产成人精品亚洲日本在线| 色吊丝免费观看网站| 免费在线看黄的网站| 丁香花在线观看免费观看| 亚洲A∨精品一区二区三区| 亚洲国产婷婷六月丁香|