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

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

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

         摘要:   1<script language="JavaScript" type="text/JavaScript">   2// 日期選擇   3// By Ziyue(http://www.web-v.com/)   4var months&n...  閱讀全文
    posted @ 2009-03-27 17:03 勒緊皮帶向前沖 閱讀(451) | 評論 (0)編輯 收藏
     
     
    2008-12-23 17:09:31 原文地址: http://blog.sina.com.cn/u/4a1347d50100bmv8 [查看原文]

    1。每天11:00點前睡覺,每天7:30點前起床;
    2。每天提醒自己,不要忘記夢想;


    3。有時間多看書,多學習,做一個有文學素養的 人,不要把時間浪費在滑稽怪誕的事情上;

    4。多鍛煉身體,身體垮了什么都沒有了,男人女人要對自己好一點;

    5。努力學習賺錢的本領,錢是一個人活著的根本,是做人的尊嚴;

    6。常回家看看老媽,常給姐姐哥哥電話,親情是最珍貴的感情;

    7。要學會做個傾聽者,要多聽聽別人的感受,從中獲得教訓;

    8。要學會玩,學會有品位的玩;

    9。工作上的煩惱,不要帶回家,解決不了任何問題,帶回來會平添更多煩惱;

    10。做工作的有心人;

    11。學會奉承領導,多擺笑臉,不做惡人,三緘其口,三思而后行;

    12。學會推拖事情,人善被人欺,馬善被人騎;

    13。不和沒素養的人交往,免得受其影響;

    14。不與小氣的人交往,吃虧的總是自己;

    15。對裝B的人要一棒子打死,讓他(她)下次再也牛不起來!

    16。不與已婚人或者已經同居的人談感情,多半是浪費口舌,最后沒什么收獲,反而打擊自己的生活激情;

    17。要尋找與自己有共同價值觀的人,愛自己的人,好好珍惜,好好保護,終了一生;

    18。不要把感情浪費在沒有希望的人身上,看重外在的人永遠都是弱智,只有在傷痕累累時才明白,真正愛她的人原來一直在她身邊關注她,而她卻一直以為幸福很遙遠;

    19。不要過分將就一個人,過分將就不是愛情,是犯賤;

    20。現實一點,愛情在現實面前總是那么蒼白,浪漫的愛情不屬于男人,屬于女人;

    21。做婚姻的有心人,好好準備步入婚姻,好好準備做一個好丈夫好妻子;

    22。做生活的有心人,用心準備營造一個美好的家庭,一個安全溫馨的家庭;

    23。不要老是想做救世主,就算是救世主,也沒必要去拯救世人。可憐之人,必有可恨之處,而且都是猶大;

    24。不要輕易借錢給別人,借錢的人,許多都不想還錢;

    25。要明白讀過很多書的人不一定有很多知識,沒上過學的人卻不一定是文盲;

    26。不要以貌取人,特別是女人,漂亮的也許是個魔鬼,
    丑陋的卻可能是天使,上天總是公平的;

    27。要做回自己,為自己活著;

    28。要會裝扮自己,邋遢不是一個酷的表現,是沒教養的結果;

    29。走自己的路,讓NB說破嘴皮吧;

    30。賺別人的錢,讓貧窮見鬼去吧

    posted @ 2009-03-16 16:17 勒緊皮帶向前沖 閱讀(168) | 評論 (0)編輯 收藏
     

    ConvertUtils,這個工具類的職能是在字符串和指定類型的實例之間進行轉換。

     

     

    目前支持的類型有:

     

     

    • java.lang.BigDecimal

       

    • java.lang.BigInteger

       

    • boolean and java.lang.Boolean

       

    • byte and java.lang.Byte

       

    • char and java.lang.Character

       

    • java.lang.Class

       

    • double and java.lang.Double

       

    • float and java.lang.Float

       

    • int and java.lang.Integer

       

    • long and java.lang.Long

       

    • short and java.lang.Short

       

    • java.lang.String

       

    • java.io.File

       

    • java.net.URL

       

    • java.sql.Date

       

    • java.sql.Time

       

    • java.sql.Timestamp

       

    總體提供兩類功能:

     

     

    1.         將字符串轉換為指定類型;

     

     

    2.         注冊、注銷和查詢類型轉換器;

    convert(java.lang.Object value)

    將任意的實例轉變為String,用法非常簡單。在嘗試的過程中,感覺與調用實例上的toString()方法的效果一樣,不知道是不是在這個方法內僅僅是調用了傳入實例的toString()方法。

    ps:需要讀源代碼才能清楚。

    convert(java.lang.String value, java.lang.Class clazz)

     

    將字符串value轉換為clazz的一個實例;如果失敗的話,就以String的形式返回value

     

     

    convert(java.lang.String[] values, java.lang.Class clazz)

     

    這個方法是對前一方法的加強版,將數組中的每個value都進行轉換,最后以Object返回。(數組也是Object啊)

     

     

    deregister()和deregister(java.lang.Class clazz)

    注銷轉換器,前者將所有的轉換器注銷掉,后者只注銷對應于clazz的轉換器。注銷在這里不是徹底刪除了,而是將轉換器變為默認的轉換器(apache commons提供的)。

    lookup(java.lang.Class clazz)

    獲取指定類型clazz的轉換器.

    register(Converter converter, java.lang.Class clazz)

    為指定類型clazz注冊轉換器converter。如果clazz已經存在一個對應的轉換器,那么converter,將覆蓋原來的轉換器。也就是說,我們可以為String,Double創建自定義的類型轉換器,并在注冊后進行使用。

    ps:apache的類定義明確,描述非常清楚,所以就不貼出例子了。當然這只是到達可以正常使用的階段,如果要進行改造或者創建自己的ConvertUtils,那可能需要更多的時間,因為還要去參考ConvertUtilsBean,這里就不詳述了。

    以下為使用convertUtils的一個DATE類型的例子(該例子來源于尚學堂視屏)
    1.定義converter

     1package com.bjsxt.oa.web;
     2
     3import java.text.ParseException;
     4import java.text.SimpleDateFormat;
     5import java.util.Date;
     6
     7import org.apache.commons.beanutils.Converter;
     8
     9public class UtilDateConverter implements Converter {
    10    
    11    private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    12
    13    public Object convert(Class type, Object value) {
    14        if (value == null{
    15            return value;
    16        }

    17        if (value instanceof Date) {
    18            return value;
    19        }

    20        if (value instanceof String) {
    21            try {
    22                return format.parse((String)value);
    23            }
     catch (ParseException e) {
    24                e.printStackTrace();
    25            }

    26        }

    27        return null;
    28    }

    29
    30}

    31
    2.使用convertUilts注冊converter
     1package com.bjsxt.oa.web;
     2
     3import java.util.Date;
     4
     5import javax.servlet.ServletException;
     6import javax.servlet.http.HttpServlet;
     7
     8import org.apache.commons.beanutils.ConvertUtils;
     9
    10public class UtilDateConverterInitServlet extends HttpServlet {
    11
    12    @Override
    13    public void init() throws ServletException {
    14         ConvertUtils.register(new UtilDateConverter(), Date.class);
    15    }

    16
    17}

    18
    3.在web.xml中配置servlet
    1 <servlet>
    2    <servlet-name>utilDateConverter</servlet-name>
    3    <servlet-class>com.bjsxt.oa.web.UtilDateConverterInitServlet</servlet-class>
    4    <load-on-startup>3</load-on-startup>
    5  </servlet>  
    posted @ 2009-03-04 10:36 勒緊皮帶向前沖 閱讀(2912) | 評論 (0)編輯 收藏
     
    org.apache.commons.beanutils.BeanUtils
     
    一、簡介:

    BeanUtils提供對 Java反射和自省API的包裝。其主要目的是利用反射機制對JavaBean的屬性進行處理。我們知道,一個JavaBean通常包含了大量的屬性,很 多情況下,對JavaBean的處理導致大量get/set代碼堆積,增加了代碼長度和閱讀代碼的難度。

    二、用法:

    BeanUtils是這個包里比較常用的一個工具類,這里只介紹它的copyProperties()方法。該方法定義如下:

    public static void copyProperties(java.lang.Object dest,java.lang.Object orig)
        throws java.lang.IllegalAccessException,
               java.lang.reflect.InvocationTargetException


    如 果你有兩個具有很多相同屬性的JavaBean,一個很常見的情況就是Struts里的PO對象(持久對象)和對應的ActionForm,例如 Teacher和TeacherForm。我們一般會在Action里從ActionForm構造一個PO對象,傳統的方式是使用類似下面的語句對屬性逐 個賦值:

    //得到TeacherForm
    TeacherForm teacherForm=(TeacherForm)form;
    //構造Teacher對象
    Teacher teacher=new Teacher();
    //賦值
    teacher.setName(teacherForm.getName());
    teacher.setAge(teacherForm.getAge());
    teacher.setGender(teacherForm.getGender());
    teacher.setMajor(teacherForm.getMajor());
    teacher.setDepartment(teacherForm.getDepartment());

    //持久化Teacher對象到數據庫
    HibernateDAO=;
    HibernateDAO.save(teacher);

    而使用BeanUtils后,代碼就大大改觀了,如下所示:
    //得到TeacherForm
    TeacherForm teacherForm=(TeacherForm)form;
    //構造Teacher對象
    Teacher teacher=new Teacher();
    //賦值
    BeanUtils.copyProperties(teacher,teacherForm);
    //持久化Teacher對象到數據庫
    HibernateDAO=;
    HibernateDAO.save(teacher);


    如 果Teacher和TeacherForm間存在名稱不相同的屬性,則BeanUtils不對這些屬性進行處理,需要程序員手動處理。例如 Teacher包含modifyDate(該屬性記錄最后修改日期,不需要用戶在界面中輸入)屬性而TeacherForm無此屬性,那么在上面代碼的 copyProperties()后還要加上一句:

    teacher.setModifyDate(new Date());


    怎 么樣,很方便吧!除BeanUtils外還有一個名為PropertyUtils的工具類,它也提供copyProperties()方法,作用與 BeanUtils的同名方法十分相似,主要的區別在于后者提供類型轉換功能,即發現兩個JavaBean的同名屬性為不同類型時,在支持的數據類型范圍 內進行轉換,而前者不支持這個功能,但是速度會更快一些。BeanUtils支持的轉換類型如下:

          * java.lang.BigDecimal
          * java.lang.BigInteger
          * boolean and java.lang.Boolean
          * byte and java.lang.Byte
          * char and java.lang.Character
          * java.lang.Class
          * double and java.lang.Double
          * float and java.lang.Float
          * int and java.lang.Integer
          * long and java.lang.Long
          * short and java.lang.Short
          * java.lang.String
          * java.sql.Date
          * java.sql.Time
          * java.sql.Timestamp


    這里要注意一點,java.util.Date是不被支持的,而它的子類java.sql.Date是被支持的。因此如果對象包含時間類型的屬性,且希望被轉換的時候,一定要使用java.sql.Date類型。否則在轉換時會提示argument mistype異常。

    三、優缺點:

    Apache Jakarta Commons項目非常有用。我曾在許多不同的項目上或直接或間接地使用各種流行的commons組件。其中的一個強大的組件就是BeanUtils。我 將說明如何使用BeanUtils將local實體bean轉換為對應的value 對象:


    BeanUtils.copyProperties(aValue, aLocal)


    上 面的代碼從aLocal對象復制屬性到aValue對象。它相當簡單!它不管local(或對應的value)對象有多少個屬性,只管進行復制。我們假設 local對象有100個屬性。上面的代碼使我們可以無需鍵入至少100行的冗長、容易出錯和反復的get和set方法調用。這太棒了!太強大了!太有用 了!

    現在,還有一個壞消息:使用BeanUtils的成本驚人地昂貴!我做了一個簡單的測試,BeanUtils所花費的時間要超過取數 據、將其復制到對應的 value對象(通過手動調用get和set方法),以及通過串行化將其返回到遠程的客戶機的時間總和。所以要小心使用這種威力!
    該文章的原文地址為:http://lifejava.spaces.live.com/Blog/cns!A666C33543221640!158.entry
    posted @ 2009-03-04 09:53 勒緊皮帶向前沖 閱讀(2884) | 評論 (0)編輯 收藏
     
    (1)用文本編輯器打開<Tomcat主目錄>/conf目錄下的Server.xml文件,使用“查找”菜單查找內容為“</Host>”的行,緊接該行下面增加一對<Host></Host>標簽。參照前面的<Host>標簽的屬性設置情況,設置新增的<Host>標簽的屬性,并在它里面嵌套一個設置該WEB站點根目錄的<Context>元素,最終的內容如下:
    <Host name="www.xydesign.cn" debug="0" appBase="d:\site1">
    <Context path="" docBase="." debug="0"/>
    </Host>
    這樣,將創建一個新的WEB站點。上面的<Context>元素的docBase屬性值被設置為一個點(.),即表示使用<Host>元素的appBase屬性中所設置的路徑作為這個<Context>所映射的目錄。

        (2)在上面新增的<Host></Host>標簽對下面再增加一對<Host></Host>標簽,并將它設置為如下形式:
    <Host name="www.xydesign.net.cn" debug="0" appBase="d:\site2">
    <Context path="" docBase="." debug="0"/>
    </Host>
    這又創建了一個新的WEB站點,該站點的主機名稱為www.xydesign.net.cn,根目錄對應的本地文件系統目錄為d:\site2。

        (3)在d:盤下創建名稱為site1和site2兩個目錄,并在這兩個目錄中分別創建一個名為test.html的文件,在d:\site1\test.html文件中寫入如下一行內容:
    這是d:\site1目錄中的test.html文件
    在d:\site2\test.html文件中寫入如下一行內容:
    這是d:\site2目錄中的test.html文件

        (4)用記事本程序打開c:\winnt\System32\Drivers\Etc\Hosts文件,可以看到有如下一行內容:
    127.0.0.1       localhost
    緊接這行文本的下面,用它復制出兩行文本,并將這兩行文本中的localhost分別修改成www.xydesign.cn和www.xydesign.net.cn,這樣,就使用Hosts文件為當前計算機設置了多個主機名。如果要用www.xydesign.cn和www.xydesign.net.cn這個兩主機名訪問其他計算機上的WEB站點,則應將127.0.0.1修改成其他計算機的實際IP地址。保存Hosts文件后,Hosts文件的內容如下:
    127.0.0.1                  localhost
    202.104.125.154       www.xydesign.cn
    202.104.125.154       www.xydesign.net.cn

    其中202.104.125.154為您服務器的固定IP地址。

    在命令行窗口中執行“ping www.xydesign.cn”和“ping www.xydesign.net.cn”命令,查看該主機名是否被正確解析到了相應的IP地址上。建立site1和site2與計算機IP地址的映射后,在IE瀏覽器地址欄中輸入http://localhost:8080/test.html、http://www.xydesign.cn:8080/test.html和http://www.xydesign.net.cn:8080/test.html,可以看到瀏覽器將顯示出各自站點中的test.html網頁文件的內容。
    如需不要后面的8080端口號,可直接把tomcat端口號設置為80即可。

       (5)設置域名www.xydesign.cn    www.xydesign.net.cn 的解析IP地址都為202.104.125.154(即您服務器的IP地址)。

    可見,使用主機名的方式在同一臺WEB服務器上創建多個虛擬主機后,在WEB瀏覽器中使用主機名訪問Web服務器時,Web服務器將選擇與該主機名關聯的WEB站點進行響應。通過這種方式,多個WEB站點可以共享同一個IP地址和相同的端口號,唯一不足的就是WEB瀏覽不能通過IP地址去訪問這些WEB站點。基于主機名的虛擬主機是目前Internet上的大多數虛擬主機業務提供商所通常采用的方式。只要找出幾個小型公司或個人的網站,如果在WEB瀏覽器地址欄中輸入“http://主機名”可以訪問到該WEB站點,接著在命令行窗口中執行“ping 主機名”,查看到該域名對應的IP地址,然后在WEB瀏覽器地址欄中輸入“http://IP地址”時,卻無法訪問這個WEB站點了,那么,這個WEB站點就是一個基于主機名的虛擬主機,它與其他一些WEB站點共享一臺WEB服務器,而不是自己獨享一臺WEB服務器。
    注意:當使用安全套接字層 (SSL) 時,不能使用主機頭字段來實現虛擬主機,這是因為使用SSL的HTTP請求有加密保護。主機頭字段是加密內容的一部分,不能被解釋和路由到正確的站點。

    posted @ 2009-02-10 13:25 勒緊皮帶向前沖 閱讀(506) | 評論 (0)編輯 收藏
     


    專注移動通信,嵌入式,IC設計,硬件研發,手機研發等當今最熱門的技術領域的討論與資料共享
    52RD研發論壇 - http://www.52rd.com/bbs

    本文來自:我愛研發網(52RD.com) 詳細出處:http://www.52rd.com/bbs/Detail_RD.BBS_131240_17_1_1.html

    posted @ 2009-02-07 09:41 勒緊皮帶向前沖 閱讀(411) | 評論 (0)編輯 收藏
     

    什么是ThreadLocal?

    顧名思義它是local variable(線程局部變量)。它的功用非常簡單,就是為每一個使用該變量的線程都提供一個變量值的副本,是每一個線程都可以獨立地改變自己的副本,而不會和其它線程的副本沖突。從線程的角度看,就好像每一個線程都完全擁有該變量。

    使用場景

    1. To keep state with a thread (user-id, transaction-id, logging-id)
    2. To cache objects which you need frequently

    ThreadLocal類

    它 主要由四個方法組成initialValue(),get(),set(T),remove(),其中值得注意的是initialValue(),該方法 是一個protected的方法,顯然是為了子類重寫而特意實現的。該方法返回當前線程在該線程局部變量的初始值,這個方法是一個延遲調用方法,在一個線 程第1次調用get()或者set(Object)時才執行,并且僅執行1次。ThreadLocal中的確實實現直接返回一個null:

    ThreadLocal的原理

    ThreadLocal是如何做到為每一個線程維護變量的副本的呢?其實實現的思路很簡單,在ThreadLocal類中有一個Map,用于存儲每一個線程的變量的副本。比如下面的示例實現:

    public class ThreadLocal
    {
    private Map values = Collections.synchronizedMap(new HashMap());
    public Object get()
    {
    Thread curThread = Thread.currentThread();
    Object o = values.get(curThread);
    if (o == null && !values.containsKey(curThread))
    {
    o = initialValue();
    values.put(curThread, o);
    }
    return o;
    }

     public void set(Object newValue)
    {
    values.put(Thread.currentThread(), newValue);
    }

     public Object initialValue()
    {
    return null;
    }
    }

    ThreadLocal 的使用

    使用方法一:

    Hibernate的文檔時看到了關于使ThreadLocal管理多線程訪問的部分。具體代碼如下

    1.  public static final ThreadLocal session = new ThreadLocal();
    2.  public static Session currentSession() {
    3.      Session s = (Session)session.get();
    4.      //open a new session,if this session has none
    5.   if(s == null){
    6.      s = sessionFactory.openSession();
    7.      session.set(s);
    8.   }
          return s;
    9. }

    我們逐行分析
    1。 初始化一個ThreadLocal對象,ThreadLocal有三個成員方法 get()、set()、initialvalue()。
        如果不初始化initialvalue,則initialvalue返回null。
    3。 session的get根據當前線程返回其對應的線程內部變量,也就是我們需要的net.sf.hibernate.Session(相當于對應每個數據 庫連接).多線程情況下共享數據庫鏈接是不安全的。ThreadLocal保證了每個線程都有自己的s(數據庫連接)。
    5。如果是該線程初次訪問,自然,s(數據庫連接)會是null,接著創建一個Session,具體就是行6。
    6。創建一個數據庫連接實例 s
    7。保存該數據庫連接s到ThreadLocal中。
    8。如果當前線程已經訪問過數據庫了,則從session中get()就可以獲取該線程上次獲取過的連接實例



    以上轉自 橄欖樹  http://hi.baidu.com/mojiedao/blog/item/0ceeab99e7a0ad086f068c09.html

    posted @ 2009-01-12 10:23 勒緊皮帶向前沖 閱讀(176) | 評論 (0)編輯 收藏
     

    java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
     at org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:86)
     at org.springframework.web.struts.DelegatingActionUtils.findRequiredWebApplicationContext(DelegatingActionUtils.java:148)
     at org.springframework.web.struts.DelegatingActionProxy.getWebApplicationContext(DelegatingActionProxy.java:146)
     at org.springframework.web.struts.DelegatingActionProxy.getDelegateAction(DelegatingActionProxy.java:125)
     at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:109)
     at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
     at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
     at java.lang.Thread.run(Unknown Source)

    該錯誤表明你在web.xml中沒配置spring環境
    posted @ 2009-01-04 15:21 勒緊皮帶向前沖 閱讀(262) | 評論 (0)編輯 收藏
     
    1、拷貝pager-taglib.jar包
    2、在JSP頁面中使用taglib指令引入pager-taglib標簽庫
    3、使用pager-taglib標簽庫進行分頁處理

    pg:pager【這個標簽用來設置分頁的總體參數】重要參數說明:
        url:分頁的鏈接根地址,pager標簽會在這個鏈接的基礎上附加分頁參數
        items:總記錄數,pager標簽正是根據這個值來計算分頁參數的
        maxPageItems:每頁顯示的行數,默認為10
        maxIndexPages:在循環輸出頁碼的時候,最大輸出多少個頁碼,默認是10
        
    pg:first【第一頁的標簽】重要參數說明:
        export變量的意義:
        pageUrl - 分頁鏈接URL地址(最重要的export參數)
        pageNumber - 頁碼
        firstItem - 首頁第一行的索引值
        lastItem - 首頁最后一行的索引值
        
    pg:pre【上一頁標簽】重要參數說明:
        export變量的意義:
        pageUrl - 分頁鏈接URL地址(最重要的export參數)
        pageNumber - 頁碼
        firstItem - 前頁第一行的索引值
        lastItem - 前頁最后一行的索引值

    pg:next【下一頁標簽】重要參數說明:
        export變量的意義:
        pageUrl - 分頁鏈接URL地址(最重要的export參數)
        pageNumber - 頁碼
        firstItem - 下頁第一行的索引值
        lastItem - 下頁最后一行的索引值
        
    pg:last重要參數說明:
        export變量的意義:
        pageUrl - 分頁鏈接URL地址(最重要的export參數)
        pageNumber - 頁碼
        firstItem - 尾頁第一行的索引值
        lastItem - 尾頁最后一行的索引值
        
    pg:pages【這個標簽用來循環輸出頁碼信息】重要參數說明:
        export變量的意義:
        pageUrl - 分頁鏈接URL地址(最重要的export參數)
        pageNumber - 頁碼
        firstItem - pageNumber這個頁碼指定的那一頁的第一行的索引值
        lastItem - pageNumber這個頁碼指定的那一頁的最后一行的索引值


    pager-taglib-2.0下載
    http://www.tkk7.com/Files/wx886104/pager-taglib-2.0.rar
    posted @ 2008-12-29 16:45 勒緊皮帶向前沖 閱讀(356) | 評論 (0)編輯 收藏
     

    Log日志:主要用于記錄程序運行的情況,以便于程序在部署之后的排錯調試等等!也有利于將這些信息進行持久化(如果不將日志信息保存到文件或數據庫,則信息便會丟失)

    Java Logging API

    需JDK1.4版本以上才能支持。

    java.util.logging.* 包是JDK的日志記錄API。

    基本概念

    logger  用來記錄日志的對象

    log level  日志等級:從FINEST到SEVERE級別

    請參考JDK文檔

    handler  日志輸出處理器,即用來將格式化后的日志信息輸出,J2SE提供了下面的處理器

    StreamHandler  將信息輸出到一個OutputStream對象

    ConsoleHandler  將信息輸出到控制臺

    FileHandler  將信息輸出到文件

    還有Socket處理器和內存處理器等

    Formater  用來對日志信息進行格式化

    SimpleFormater  簡單的格式化輸出

    XmlFormater  Xml格式化輸出

    logManager  日志管理器,它包含有那些被命名的logger,以及從配置文件中讀取來的一些控制信息

    Log4j

    基本概念

    Log4j比JDK Logging更加成熟。Log4j是事實上 日志記錄標準。

    三大概念:logger/appender/layout

    logger  使用這個對象來進行輸出

    appender  使用這個對象來定義輸出到哪里去

    layout  使用這個對象來定義輸出的格式

    log4j的級別(level)

    DEBUG < INFO < WARN < ERROR < FATAL

    基本配置與使用

    只需要將log4j.jar包放到類路徑中,并且保證在類路徑根目錄下有一個log4j.properties文件即可。Log4j.properties文件是對log4j的配置。 

    在log4j.properties中,可以配置logger/appender/layout/level等內容。

    了解如何配置logger

    log4j.rootLogger = [級別],[使用哪個appender]

    log4j.logger.[logger的名稱]=[級別],[使用哪個appender]

    了解如何配置appender

    Log4j.appender.[appender的名稱]=[appender類名]

    Log4j.appender.[appender的名稱].[appender的屬性名]=[appender的屬性值]

    如:對于ConsoleAppender來說,可以配置它的target屬性為System.out,而對于FileAppender來說,可以配置它的File屬性為一個文件名

    了解如何配置layout

    Log4j.appender.[appender的名稱].layout=[layout類名]

    Log4j.appender.[appender的名稱].layout.[layout的屬性名]=[layout的屬性值]

    最常見的是PatternLayout

    Log4J采用類似C語言中的printf函數的打印格式格式化日志信息,打印參數見表1如下:
    %m 輸出代碼中指定的消息
    %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
    %r 輸出自應用啟動到輸出該log信息耗費的毫秒數
    %c 輸出所屬的類目,通常就是所在類的全名
    %t 輸出產生該日志事件的線程名
    %n 輸出一個回車換行符,Windows平臺為“"r"n”,Unix平臺為“"n”
    %d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
    %l 輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10)

    Commons log

    通用Log處理,它是一個接口抽象,底層的實現可以自動替換:

    如果當前存在log4j,則使用log4j來實現

    否則,使用JDK LOG來實現

    否則,使用其自身的簡單實現

    posted @ 2008-12-29 11:29 勒緊皮帶向前沖 閱讀(152) | 評論 (0)編輯 收藏
    僅列出標題
    共14頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 
     
    主站蜘蛛池模板: 亚洲精品动漫在线| 91精品国产免费久久国语麻豆| 亚洲一级毛片免费观看| 国产亚洲婷婷香蕉久久精品| 在线a亚洲v天堂网2018| 老司机在线免费视频| 久久久99精品免费观看| 毛片基地看看成人免费| 黄色三级三级三级免费看| 亚洲人成77777在线播放网站不卡| 亚洲网址在线观看你懂的| 亚洲精品美女久久久久99| 亚洲乱码中文字幕综合234| 国产jizzjizz视频免费看| 女人张腿给男人桶视频免费版 | 成年人免费观看视频网站| 久久国产精品免费网站| 成人片黄网站色大片免费观看cn| 曰批全过程免费视频观看免费软件| 亚洲影院天堂中文av色| 亚洲无吗在线视频| 亚洲成a人片在线不卡| 亚洲区精品久久一区二区三区| 亚洲日本中文字幕区| 久久精品夜色国产亚洲av| 亚洲国产精品一区二区第一页| 亚洲精品国产美女久久久| 久久亚洲2019中文字幕| 精品亚洲视频在线观看 | 国产精品亚洲а∨天堂2021| 亚洲熟妇无码八V在线播放| 2020久久精品亚洲热综合一本| 亚洲天堂2016| 亚洲午夜精品久久久久久app| 亚洲欧洲日韩极速播放| 亚洲色偷偷色噜噜狠狠99网| 亚洲七久久之综合七久久| 亚洲日韩AV一区二区三区四区| 亚洲av成人一区二区三区观看在线 | 少妇中文字幕乱码亚洲影视| 亚洲精品国产成人专区|