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

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

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

    隨筆-124  評(píng)論-49  文章-56  trackbacks-0
     

    servlet監(jiān)聽器
    在WEB應(yīng)用中響應(yīng)特定對(duì)象的特定事件
    好處:更方便的控制application,session,request對(duì)象的發(fā)生的特定事件
         可以集中處理特定的事件
    -------------------------------------------------------------------
    HttpSession監(jiān)聽器接口
    1 HttpSessionListener(需要配web.xml)
    2 HttpSessionAttributeListener(需要配web.xml)
    3 HttpSessionBindingListener
    4 HttpSessionActivationListener(需要配web.xml)
    -------------------------------------------------------------------
    HttpSessionListener
    1 sessionCreated()//當(dāng)session對(duì)象產(chǎn)生的時(shí)候調(diào)用的方法
    2 sessionDestroyed()//當(dāng)session對(duì)象消滅的時(shí)候調(diào)用的方法
    web.xml配置
    <listener>
     <listener-class>webbook.chapter14.CounterListener(對(duì)應(yīng)的實(shí)現(xiàn)類)
     </listener-class>
    </listener>
    ---------------------------------------------------------------------
    HttpSessionAttributeListener
    1 attributeAdded()//添加時(shí)調(diào)用
    2 attributeReplaced()//替換時(shí)調(diào)用
    3 attributeRemoved()//刪除時(shí)調(diào)用
    產(chǎn)生事件的代碼
    session.setAttribute("username","wangwu");
    session.setAttribute("username","lisi");
    session.removeAttribute("username");
    -----------------------------------------------------------------
    HttpSessionBindingListener
    1 valueBound();
    2 vaoueUnbound();
    調(diào)用機(jī)制
    如果一個(gè)類實(shí)現(xiàn)了HttpSessionBindingListener接口,則當(dāng)這個(gè)類的對(duì)象通過session.setAttribute()被綁定到Session對(duì)象中時(shí),
    則該對(duì)象的valueBound()方法被自動(dòng)調(diào)用,當(dāng)這個(gè)對(duì)象從Session中刪除時(shí)(調(diào)用session.invalidate()和session.removeAtrribute()
    方法,或Session對(duì)象過期)valueUnbound()方法將被自動(dòng)調(diào)用.
    --------------------------------------------------------------------------------------------------------
    HttpSessionActivationListener
    1 sessionDidActivate();
    2 sessionWillPassivate();
    ---------------------------------------------------------------------------------
    例子:
    1 建立CounterListener處理類
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    public class CounterListener implements HttpSessionListener {

     private static long onlineNumber=0;
     public void sessionCreated(HttpSessionEvent se) {
      onlineNumber++;
     }

     public void sessionDestroyed(HttpSessionEvent se) {
      onlineNumber--;
     }
     
     public static long getOnlineNumber(){
      return onlineNumber;
     }
    }
    2 配置web.xml
    <listener>
        <listener-class>com.tags.CounterListener</listener-class>
    </listener>
    3 JSP頁面
    <%@page import="com.tags.CounterListener;"%>
    <body>
        當(dāng)前的在線人數(shù):<%=CounterListener.getOnlineNumber() %> <br>
    </body>
    ----------------------------------------------------------------------------
    ServletContext監(jiān)聽器接口
    ServletContextListener
    1 contextInitialized()
    2 contextDestroyed()
    調(diào)用機(jī)制
    當(dāng)在web應(yīng)用中部署了實(shí)現(xiàn)該接口的實(shí)現(xiàn)類后,在WEB容器加載WEB應(yīng)用時(shí)(如:啟動(dòng)服務(wù)器)就會(huì)自動(dòng)調(diào)用contextInitialized()方法,
    而當(dāng)WEB容器銷毀WEB應(yīng)用時(shí)(如:關(guān)閉服務(wù)器),會(huì)自動(dòng)調(diào)用contextDestroyed()方法.
    -----------------------------------------------------------------------------------
    ServletContextAttributeListener
    1 attributeAdded()
    2 attributeReplaced()
    3 attributeRemoved()
    觸發(fā)事件的代碼
    context.setAttribute("counter",new Integer(0));
    context.setAttribute("counter",new Integer(100));
    context.removeAttribute("counter");
    -----------------------------------------------------------
    HttpServletRequest監(jiān)聽器
    ServletRequestListener
    1 requestInitialized();
    2 requestDestroyed()
    調(diào)用機(jī)制
    與ServletContextListener接口類似,在web應(yīng)用中部署實(shí)現(xiàn)該接口的實(shí)現(xiàn)類扣,在HttpServletRequest對(duì)象(JSP中的request對(duì)象)建立
    或者被銷毀時(shí),由web容器自動(dòng)調(diào)用requestInitialized()或者requestDestroyed()方法.
    --------------------------------------------------------------------------------------
    ServletRequestAttributeListener
    1 attributeAdded();
    2 attributeReplaced();
    3 attributeRemoved();
    觸發(fā)事件的代碼
    request.setAttribute("username","lisi");
    request.setAttribute("username","wangwu");
    request.removeAttribute("username");

    ******************************************************************
    public class ListenerOnline implements HttpSessionLinstener,ServletContext{
      private  application;
      public void sessionCreated(HttpSessionEvent event){
        Integer n=(Integer)application.getAttrabute("z",1000);
        application.setAttrabute("z",n.IntValue()+1);
       
      }
       public void sessionDestroyed(HttpSessionEvent event){
      }
      public void contextInitialized(ServletContextEvent event){
        application=event.getServletContext();
        application.setAttrabute("z",1000);
      }
       public void contextDestroyed(ServletContextEvent event){
      }
    }

    <listener>
        <listener-class>com.tags.ListenerOnline</listener-class>
    </listener>

    <meta http-equiv="refresh" content="3"/>

    posted @ 2009-11-29 22:47 junly 閱讀(334) | 評(píng)論 (0)編輯 收藏

    -HttpServletRequest request對(duì)象

    request.getParameter("param");

    request.setAttribute("loginname",object);

    request.setCharacterEncoding("gb2312");
    輸入內(nèi)容轉(zhuǎn)成中文
    -HttpServletResponse response對(duì)象

    response.setContentType("text/html;charset=gb2312");
    設(shè)置輸出為中文
    response.sendRediredt("url");

    -RequsetDispatcher dispatcher=request.getRequestDispatcher(url);
    定義轉(zhuǎn)發(fā)器
    dispatcher.forward(request,response);

    -HttpSession session對(duì)象
    創(chuàng)建對(duì)象的兩種方法
    HttpSession session = request.getSession(boolean value);
    HttpSession session = request.getSession();
    方法一:true時(shí),返回該當(dāng)前請(qǐng)求相關(guān)的會(huì)話,如果不存在創(chuàng)建一個(gè)新的會(huì)話,并返回。
         false時(shí),返回該當(dāng)前請(qǐng)求相關(guān)的會(huì)話,如果不存在返回null,不創(chuàng)建會(huì)話。
    方法二:等同于方法一為true時(shí)。
    HttpSession接口的方法
    session.setAttribute(String name,Object value);
    session.getAttribute(String name);//返回Object
    session.removeAttribute(String name);//刪除
    session.invalidate()//當(dāng)前會(huì)話關(guān)閉
    */

    /*
    讀取xml文件中的參數(shù)值
    web.xml
    <servlet>
      <init-param>
        <param-name>repeat</param-name>
        <param-value>10</param-value>
      </init-param>
    </servlet>
    servlet.java
    int repeat=Integer.parseInt(this.getInitParameter("repeat"));
    */

    /*
    得到當(dāng)前servlet相當(dāng)信息的方法
    request.getServerName()//得到當(dāng)前請(qǐng)求的服務(wù)器名子
    request.getRemoteAddr()得到當(dāng)前請(qǐng)求服務(wù)器的IP地址
    request.getServerPort()得到當(dāng)前請(qǐng)求服務(wù)器的端口號(hào)
    request.getProtlcol()得到當(dāng)前請(qǐng)求的協(xié)議版本
    request.getContextPath()得到當(dāng)前請(qǐng)求的上下文地址
    request.getScheme()得到當(dāng)前請(qǐng)求的協(xié)議類型
    request.getMethod()得到當(dāng)前請(qǐng)求的提交方式GET
    request.getRequestURI()得到當(dāng)前服務(wù)器servlet的映射路徑,帶上下文
    request.getServletPath()得到當(dāng)前服務(wù)器servlet的映射路徑

    servlet的頭信息
    Enumeration e=request.getHeaderNames();得到包含header名子的Enumeration類形對(duì)象
    request.getHeader()得到header名子對(duì)應(yīng)的值
    例子:
    Enumeration e=request.getHeaderNames();
    String name="";
    while(e.hasMoreElements)
    {
      name=(String)e.nextElement();
      System.out.println(name);
      System.out.println(request.getHeader(name));
    }

    JSValidation驗(yàn)證框架
    url:http://cosoft.org.cn/projects/jsvalidateion
    修改validation-framwork.js
    var ValidationRoot="/webproject2/js/"
    配置validation-config.xml

    FCKeditor文本編輯組件
    http://www.fckeditor.net/download

    posted @ 2009-11-29 22:46 junly 閱讀(342) | 評(píng)論 (0)編輯 收藏

    1 在src下建config.properties文件
    config.properties
    uname=aaa
    pwd=123
    2
     InputStream in=this.getClass().getResourceAsStream("/config.properties");
     //in=new FileInputStream("D:/config.properties");
     Properties pro=new Properties();
     try{
      pro.load(in);
      pro.loadFromXML();
      pro.getProperty("uname");
      //(String)pro.get("uname");
      pro.put(key,"value");
     }

    class
    class.forName(String className)
    運(yùn)行中的對(duì)象都是class的一個(gè)實(shí)例,相關(guān)技術(shù)-反射
    class.getResourceAsStream(String fileName)
    查找具有給定名稱的資源

    Result類在java.servlet.jsp.jstl.sql.Result包中,可以在關(guān)閉連接的狀態(tài)下使用
    stmt=conn.createStatement();
    rs=stmt.executeQuery(sql);
    Result result=ResultSupport.toResult(rs);
    if(result==null){
     System.out.println("無數(shù)據(jù)");
    }
    for(int i=0;i<result.getRowCount();i++){
     Map map=result.getRows()[i];
     map.get("username");
    }

    作業(yè),連接池,配置文件
    <embed src=""/>
    歌手表,gid,sex,name,love
    歌曲表,id,name,gid,typeid,歌詞
    類型表,typeid,name
    url
    controls.play()
    controls.stop()

    posted @ 2009-11-29 22:45 junly 閱讀(536) | 評(píng)論 (0)編輯 收藏

    應(yīng)該是中文操作系統(tǒng)的原因,eclipse默認(rèn)的新項(xiàng)目的編碼是GBK,出于對(duì)編碼支持的考慮,項(xiàng)目組中最好統(tǒng)一要求是UTF-8編碼進(jìn)行開發(fā)。

    修改eclipse的配置,可以使得eclipse的新建項(xiàng)目的默認(rèn)編碼直接為UTF-8

    在菜單欄的

    Window->Preferences->General->Workspace->Text file encoding

    將其改為UFT-8即可。

    這個(gè)也是安裝完Eclipse之后應(yīng)該立刻做的一件事

    但是這種修改只對(duì)當(dāng)前的workspace有效,如果新建或者切換到一個(gè)新的workspace下,還是得做同樣的步驟。

    同樣

    Window->Preferences->General->Content Types中可以修改具體的不同格式的文件的默認(rèn)編碼,尤其是HTML,CSS,Javascript等文件的編碼最好是修改一下,否則默認(rèn)的ISO- 8859-1無法支持中文。

    不知道如何解決默認(rèn)安裝完是GBK的問題,難道一定要用英文操作系統(tǒng)?

    myeclipse6.0下怎么樣統(tǒng)一全部文件編碼:

    windows---->preferences---->myeclipse---->file and editors----->jsp--->把這個(gè)目錄下的encoding選為你要設(shè)置的編碼(如UTF-8)
    這樣,你下次再新建一個(gè)JSP頁面的時(shí)候就默認(rèn)是以你剛才設(shè)置的編碼了
    因?yàn)槟J(rèn)情況下新建一個(gè)JSP頁面的編碼是ISO8859-1的,是不能存中文的,要存中文就得手動(dòng)改為GBK,UTF-8支持中文的編碼,每次新建都要修改手動(dòng)修改一次編碼就很麻煩.
    經(jīng)過上面的設(shè)置后就可以統(tǒng)一整個(gè)項(xiàng)目的編碼而不用再手動(dòng)設(shè)置.

    posted @ 2009-11-29 22:39 junly 閱讀(730) | 評(píng)論 (0)編輯 收藏
    在window->perferences->General->Appearance->Colors and Fonts->Basic->Text Font 單擊change 修改
    posted @ 2009-11-29 22:38 junly 閱讀(974) | 評(píng)論 (0)編輯 收藏

    增強(qiáng)Eclipse ,MyEclipse 的代碼提示功能,具體怎么樣來配置?下面開始說步驟(注意本人用的

    MyEclipse 6.0.1做講解):


    1. 打開MyEclipse 6.0.1,然后“window”→“Preferences”

     
    2.       選擇“java”,展開,“Editor”,選擇“Content Assist”。

    3.       選擇“Content Assist”,然后看到右邊,右邊的“Auto-Activation”下面的“Auto 

    Activation triggers for java”這個(gè)選項(xiàng)。其實(shí)就是指觸發(fā)代碼提示的就是“.”這個(gè)符號(hào)。


    4.       “Auto Activation triggers for java”這個(gè)選項(xiàng),在“.”后加abc字母,方便后面的查找

    修改。然后“apply”,點(diǎn)擊“OK”。


    5. 然后,“File”→“Export”,在彈出的窗口中選擇“Perferences”,點(diǎn)擊“下一步”。


    6. 選擇導(dǎo)出文件路徑,本人導(dǎo)出到桌面,輸入“test”作為文件名,點(diǎn)擊“保存”。


    7. 在桌面找到剛在保存的文件“test.epf”,右鍵選擇“用記事本打開”。


    8. 可以看到很多配置MyEclipse 6.0.1的信息


    9. 按“ctrl + F”快捷鍵,輸入“.abc”,點(diǎn)擊“查找下一個(gè)”。


    10. 查找到“.abc”的配置信息如下:


    如下:

     
    11. 把“.abc”改成“.abcdefghijklmnopqrstuvwxyz(,”,保存,關(guān)閉“test.epf”。


    12. 回到MyEclipse 6.0.1界面,“File”→“Import”,在彈出的窗口中選擇“Perferences”,點(diǎn)擊

    “下一步”,選擇剛在已經(jīng)修改的“test.epf”文件,點(diǎn)擊“打開”,點(diǎn)擊“Finish”。該步驟和上面

    的導(dǎo)出步驟類似。


    13. 最后當(dāng)然是進(jìn)行代碼測(cè)試了。隨便新建一個(gè)工程,新建一個(gè)類。在代碼輸入switch,foreach等進(jìn)行

    測(cè)試。你立即會(huì)發(fā)現(xiàn),果然出了提示,而且無論是敲哪個(gè)字母都會(huì)有很多相關(guān)的提示了,很流暢,很方

    便。


    總結(jié):

    “Auto Activation triggers for java”這個(gè)選項(xiàng)就是指觸發(fā)代碼提示的的選項(xiàng),把“.”改成

    “.abcdefghijklmnopqrstuvwxyz(,”的意思,就是指遇到26個(gè)字母和.,(這些符號(hào)就觸發(fā)代碼提示功

    能了。

    順便說一下,修改類名,接口名等以不同顏色高亮的,可以這樣配置在“java”→“enditor”→

    “syntac”,右邊展開“java”→“classes”,勾上“Enable”這個(gè)選項(xiàng),選擇自己喜歡的顏色即可。

    當(dāng)然還有其他相關(guān)的顏色配置。具體就不說啦。其實(shí),在“Preferences”這個(gè)東西,有很多可以配置的

    東西,使得MyEclipse 優(yōu)化的,具體的就要各個(gè)人根據(jù)自己個(gè)人喜好去配置了。

    posted @ 2009-11-29 22:37 junly 閱讀(6073) | 評(píng)論 (0)編輯 收藏

    MyEclipse 快捷鍵

    1Ctrl+M切換窗口的大小
    2Ctrl+Q跳到最后一次的編輯處
    3F2當(dāng)鼠標(biāo)放在一個(gè)標(biāo)記處出現(xiàn)Tooltip時(shí)候按F2則把鼠標(biāo)移開時(shí)Tooltip還會(huì)顯示即Show Tooltip Description
               
    F3跳到聲明或定義的地方。
                F5
    單步調(diào)試進(jìn)入函數(shù)內(nèi)部。
                F6
    單步調(diào)試不進(jìn)入函數(shù)內(nèi)部,如果裝了金山詞霸2006則要把取詞開關(guān)的快捷鍵改成其他的。
               
    F7由函數(shù)內(nèi)部返回到調(diào)用處。
                F8
    一直執(zhí)行到下一個(gè)斷點(diǎn)。
    4Ctrl+Pg~對(duì)于XML文件是切換代碼和圖示窗口
    5Ctrl+Alt+IJava文件中變量的相關(guān)信息
    6Ctrl+PgUp對(duì)于代碼窗口是打開“Show List”下拉框,在此下拉框里顯示有最近曾打開的文件
    7Ctrl+/ 在代碼窗口中是這種//~注釋。
                Ctrl+Shift+/
    在代碼窗口中是這種/*~*/注釋,在JSP文件窗口中是<!--~-->
    8Alt+Shift+O(或點(diǎn)擊工具欄中的Toggle Mark Occurrences按鈕) 當(dāng)點(diǎn)擊某個(gè)標(biāo)記時(shí)可使本頁面中其他地方的此標(biāo)記黃色凸顯,并且窗口的右邊框會(huì)出現(xiàn)白色的方塊,點(diǎn)擊此方塊會(huì)跳到此標(biāo)記處。
    9右擊窗口的左邊框即加斷點(diǎn)的地方選Show Line Numbers可以加行號(hào)。
    10Ctrl+I格式化激活的元素Format Active Elements
                 
    Ctrl+Shift+F格式化文件Format Document
    11Ctrl+S保存當(dāng)前文件。
                  Ctrl+Shift+S
    保存所有未保存的文件。
    12Ctrl+Shift+M(先把光標(biāo)放在需導(dǎo)入包的類名上) 作用是加Import語句。
                  Ctrl+Shift+O
    作用是缺少的Import語句被加入,多余的Import語句被刪除。
    13Ctrl+Space提示鍵入內(nèi)容即Content Assist,此時(shí)要將輸入法中Chinese(Simplified)IME-Ime/Nonlme Toggle的快捷鍵(用于切換英文和其他文字)改成其他的。
                  Ctrl+Shift+Space
    提示信息即Context Information
    14)雙擊窗口的左邊框可以加斷點(diǎn)。
    15Ctrl+D刪除當(dāng)前行。

    Alt+當(dāng)前行和下面一行交互位置(特別實(shí)用,可以省去先剪切,再粘貼了)
    Alt+
    當(dāng)前行和上面一行交互位置(同上)
    Alt+前一個(gè)編輯的頁面
    Alt+
    下一個(gè)編輯的頁面(當(dāng)然是針對(duì)上面那條來說了)

    Alt+Enter 顯示當(dāng)前選擇資源(工程,or 文件 or文件)的屬性

    Shift+Enter 在當(dāng)前行的下一行插入空行(這時(shí)鼠標(biāo)可以在當(dāng)前行的任一位置,不一定是最后)
    Shift+Ctrl+Enter
    在當(dāng)前行插入空行(原理同上條)

    Ctrl+Q 定位到最后編輯的地方
    Ctrl+L
    定位在某行 (對(duì)于程序超過100的人就有福音了)
    Ctrl+M
    最大化當(dāng)前的EditView (再按則反之)
    Ctrl+/ 注釋當(dāng)前行,再按則取消注釋
    Ctrl+O
    快速顯示 OutLine
    Ctrl+T
    快速顯示當(dāng)前類的繼承結(jié)構(gòu)
    Ctrl+W
    關(guān)閉當(dāng)前Editer
    Ctrl+K
    參照選中的Word快速定位到下一個(gè)
    Ctrl+E
    快速顯示當(dāng)前Editer的下拉列表(如果當(dāng)前頁面沒有顯示的用黑體表示)

    Ctrl+/(小鍵盤) 折疊當(dāng)前類中的所有代碼

    Ctrl+×(小鍵盤) 展開當(dāng)前類中的所有代碼

    Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有沖突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)

    Ctrl+Shift+E 顯示管理當(dāng)前打開的所有的View的管理器(可以選擇關(guān)閉,激活等操作)

    Ctrl+J 正向增量查找(按下Ctrl+J,你所輸入的每個(gè)字母編輯器都提供快速匹配定位到某個(gè)單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個(gè)單詞時(shí),特別實(shí)用,這個(gè)功能Idea兩年前就有了)

    Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從后往前查)

    Ctrl+Shift+F4 關(guān)閉所有打開的Editer

    Ctrl+Shift+X 把當(dāng)前選中的文本全部變味小寫

    Ctrl+Shift+Y 把當(dāng)前選中的文本全部變?yōu)樾?/span>

    Ctrl+Shift+F 格式化當(dāng)前代碼

    Ctrl+Shift+P 定位到對(duì)于的匹配符(譬如{}) (從前面定位后面時(shí),光標(biāo)要在匹配符里面,后面到前面,則反之)

    下面的快捷鍵是重構(gòu)里面常用的,本人就自己喜歡且常用的整理一下(:一般重構(gòu)的快捷鍵都是Alt+Shift開頭的了)

    Alt+Shift+R 重命名 (是我自己最愛用的一個(gè)了,尤其是變量和類的Rename,比手工方法能節(jié)省很多勞動(dòng)力)

    Alt+Shift+M 抽取方法 (這是重構(gòu)里面最常用的方法之一了,尤其是對(duì)一大堆泥團(tuán)代碼有用)

    Alt+Shift+C 修改函數(shù)結(jié)構(gòu)(比較實(shí)用,N個(gè)函數(shù)調(diào)用了這個(gè)方法,修改一次搞定)

    Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數(shù)字和字符串抽取成一個(gè)變量,尤其是多處調(diào)用的時(shí)候)

    Alt+Shift+F Class中的local變量變?yōu)?/span>field變量 (比較實(shí)用的功能)

    Alt+Shift+I 合并變量(可能這樣說有點(diǎn)不妥Inline)
    Alt+Shift+V
    移動(dòng)函數(shù)和變量(不怎么常用)
    Alt+Shift+Z
    重構(gòu)的后悔藥(Undo)


    Eclipse快捷鍵大全
    Ctrl+1 快速修復(fù)(最經(jīng)典的快捷鍵,就不用多說了)
    Ctrl+D:
    刪除當(dāng)前行
    Ctrl+Alt+↓
    復(fù)制當(dāng)前行到下一行(復(fù)制增加)
    Ctrl+Alt+↑
    復(fù)制當(dāng)前行到上一行(復(fù)制增加)

    posted @ 2009-11-29 22:36 junly 閱讀(245) | 評(píng)論 (0)編輯 收藏

    http://logging.apache.org/
    1 導(dǎo)入log4j的jar包

    2 在scr下創(chuàng)建log4j.properties
      log4j.properties
      //輸入級(jí)別debug<info<warn<error
      log4j.rootLogger=debug[info][warn][error],appender1
      //ConsoleAppender輸出到控制臺(tái),FileAppender輸出到文件
      log4j.appender.appender1=org.apache.log4j.ConsoleAppender[FileAppender]
      //寫出的目標(biāo)文件
      log4j.appender.appender1.File=c:/demllog4j.log[.html]
      //寫入文件的格式
      log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout[HTMLLayout]
     
      例1,控制臺(tái)輸出:
      log4j.rootLogger=debug,appender1
      log4j.appender.appender1=org.apache.log4j.ConsoleAppender
      log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
      例2,輸出到.log文件:
      log4j.rootLogger=debug,appender1
      log4j.appender.appender1=org.apache.log4j.FileAppender
      log4j.appender.appender1.File=c:/demllog4j.log
      log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
      例3,輸出到.html文件:
      log4j.appender.appender1=org.apache.log4j.FileAppender
      log4j.appender.appender1.File=c:/demllog4j.html
      log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout
      例4,輸出到.html文件同時(shí)輸出到控制臺(tái):
      log4j.rootLogger=error,appender1,appender2
      log4j.appender.appender1=org.apache.log4j.ConsoleAppender
      log4j.appender.appender2=org.apache.log4j.FileAppender
      log4j.appender.appender2.File=c:/demllog4j.html
      log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
      log4j.appender.appender2.layout=org.apache.log4j.HTMLLayout
      例5,為不同類定義輸出格式
      log4j.rootLogger=debug,appender1
      #log4j.logger.com.liuwei=info,appender1
      log4j.appender.appender1=org.apache.log4j.ConsoleAppender
      log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
      log4j.appender.appender1.layout.ConversionPattern=%r [%t] %p - %c - %l - %m%n

    3 編寫代碼

    public class Test {
     //參數(shù)為當(dāng)前類的類名,得到logger
     private static Logger logger=Logger.getLogger(Test.class);
     
     public static void main(String[] args) {
                    //輸出信息
      //if(log.isDebugEnabled()){
           logger.debug("sssssssss");
           logger.info("ssssssss");
           logger.error("ssssssssss");
      //}
     }
    }
    --------------------------------------------------------------------
    log4j核心
     
    1 Logger 完成日志信息的處理

      輸出級(jí)別:
        debug 錯(cuò)誤信息     if(log.isDebugEnabled()){log.debug("x="+x);}
        info 日常信息      if(log.isDebugEnabled()){log.info("System started at"+new Date());}
        warn 警告信息      if(log.isDebugEnabled()){log.warn("Server down-returnning");}
        error 程序出錯(cuò)信息 if(log.isDebugEnabled()){log.error("Could not access server",e);}
     
    2 Appender 設(shè)置日志信息的去向

      org.apache.log4j.ConsoleAppender(控制臺(tái))
      org.apache.log4j.FileAppender(文件)
      org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)
      org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸時(shí)產(chǎn)生一個(gè)新的文件)
      org.apache.log4j.WriterAppender(將日志訊息以串流格式發(fā)送到任意指定的地方)
      org.apache.log4j.JdbcAppender(將日志訊息保存到數(shù)據(jù)庫中)

    3 Layout 設(shè)置日志信息的輸出樣式

      org.apache.log4j.HTMLLayout (以HTML表格形式布局)
      org.apache.log4j.SimpleLayout (包含日志訊息的級(jí)別和訊息字符串)
      org.apache.log4j.TTCCLayout (包含日志產(chǎn)生的時(shí)間、執(zhí)行者、類別等等訊息)
      org.apache.log4j.PatternLayout (可以靈活地指定布局模式)
     
      PatternLayout:
         -%p 輸出優(yōu)先級(jí),即debug,info,warn,error
         -%r 輸出自應(yīng)用啟到到輸出該日志訊息所耗費(fèi)的毫秒數(shù)
         -%t 輸出產(chǎn)生該日志事件的線程名
         -%f 輸出日志訊息所屬的類的類別名
         -%c 輸出日志訊息所屬的類的全名
         -%d 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,指定格式的方式:%d{yyyy-MM-dd HH:mm:ss}
         -%l 輸出日志訊息所屬發(fā)生位置,即輸出日志訊息的語句處于它所在的類別的第幾行
         -%m 輸出代碼中指定的訊息,如log(message)中的message
         -%n 輸出一個(gè)換行符號(hào)

    配置文件
      log4j.properties/log4j.xml

    posted @ 2009-11-29 22:34 junly 閱讀(318) | 評(píng)論 (0)編輯 收藏
         摘要:  1.Linux進(jìn)入與退出系統(tǒng) 進(jìn)入Linux系統(tǒng): 必須要輸入用戶的賬號(hào),在系統(tǒng)安裝過程中可以創(chuàng)建以下兩種帳號(hào):   1.root--超級(jí)用戶帳號(hào)(系統(tǒng)管理員),使用這個(gè)帳號(hào)可以在系統(tǒng)中做任何事情。   2.普通用戶--這個(gè)帳號(hào)供普通用戶使用,可以進(jìn)行有限的操作。   一般的Linux使用者均為普通用戶,而系統(tǒng)管理員一般使用超級(jí)用戶帳號(hào)完成一些系統(tǒng)管理的工作。如果只需要完成一...  閱讀全文
    posted @ 2009-11-29 22:32 junly 閱讀(456) | 評(píng)論 (0)編輯 收藏

    request.setCharacterEncoding("gbk");
    response.setCharacterEncoding("text/html;charset=gbk");
    String name=request.getParameter("username");

    name=new String (name.getBytes("iso-8859-1"),"gbk");

    1 過濾器
    HttpServletRequest req=(HttpServletRequest)request;
    request.setCharacterEncoding("gbk");
    china.do();
    2 子控制器
    public class ToChinese extends RequestProcessor{
     public boolean processProcess(HttpServletRequest req,HttpServletRespone rep){
      request.setCharacterEncoding("gb2312");
      return true;
     }
    }
    struts-config.xml
    <controller processorClass="com.org.ToChinese"/>

    posted @ 2009-11-29 22:30 junly 閱讀(250) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題
    共18頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 Last 
    主站蜘蛛池模板: 无码免费午夜福利片在线| 亚洲AV无码国产精品永久一区| 久久精品亚洲男人的天堂| 亚洲一级Av无码毛片久久精品| 亚洲尤码不卡AV麻豆| 亚洲欧洲国产经精品香蕉网| 亚洲欧洲免费无码| 成人免费无码H在线观看不卡| 99精品视频在线观看免费专区| 成人AV免费网址在线观看| 亚洲成av人片不卡无码| 中文毛片无遮挡高潮免费| www国产亚洲精品久久久| 亚洲国产人成网站在线电影动漫 | 国产在线一区二区综合免费视频| 91九色精品国产免费| 亚洲AV无码一区二区三区在线| 免费大片黄在线观看| 免费观看国产网址你懂的| 亚洲高清偷拍一区二区三区| 亚洲AV无码一区二区三区在线| 免费无码又爽又刺激毛片| 亚洲男同帅GAY片在线观看| 欧洲人成在线免费| 久久久久亚洲AV综合波多野结衣| 中文字幕无码毛片免费看| 免费国产a国产片高清| 亚洲一级毛片免费观看| 男女啪啪永久免费观看网站| 大片免费观看92在线视频线视频| 毛片免费在线播放| 亚洲高清免费在线观看| 国产福利免费视频| 国产精品成人无码免费| 亚洲不卡中文字幕| mm1313亚洲精品国产| 无码一区二区三区免费| 亚洲ⅴ国产v天堂a无码二区| 精品一区二区三区免费观看 | 免费视频精品一区二区| 亚洲国产精品久久|