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

          servlet監(jiān)聽(tīng)器
          在WEB應(yīng)用中響應(yīng)特定對(duì)象的特定事件
          好處:更方便的控制application,session,request對(duì)象的發(fā)生的特定事件
               可以集中處理特定的事件
          -------------------------------------------------------------------
          HttpSession監(jiān)聽(tīng)器接口
          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)類(lèi))
           </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è)類(lèi)實(shí)現(xiàn)了HttpSessionBindingListener接口,則當(dāng)這個(gè)類(lèi)的對(duì)象通過(guò)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ì)象過(guò)期)valueUnbound()方法將被自動(dòng)調(diào)用.
          --------------------------------------------------------------------------------------------------------
          HttpSessionActivationListener
          1 sessionDidActivate();
          2 sessionWillPassivate();
          ---------------------------------------------------------------------------------
          例子:
          1 建立CounterListener處理類(lèi)
          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頁(yè)面
          <%@page import="com.tags.CounterListener;"%>
          <body>
              當(dāng)前的在線(xiàn)人數(shù):<%=CounterListener.getOnlineNumber() %> <br>
          </body>
          ----------------------------------------------------------------------------
          ServletContext監(jiān)聽(tīng)器接口
          ServletContextListener
          1 contextInitialized()
          2 contextDestroyed()
          調(diào)用機(jī)制
          當(dāng)在web應(yīng)用中部署了實(shí)現(xiàn)該接口的實(shí)現(xiàn)類(lèi)后,在WEB容器加載WEB應(yīng)用時(shí)(如:啟動(dòng)服務(wù)器)就會(huì)自動(dòng)調(diào)用contextInitialized()方法,
          而當(dāng)WEB容器銷(xiāo)毀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)聽(tīng)器
          ServletRequestListener
          1 requestInitialized();
          2 requestDestroyed()
          調(diào)用機(jī)制
          與ServletContextListener接口類(lèi)似,在web應(yīng)用中部署實(shí)現(xiàn)該接口的實(shí)現(xiàn)類(lèi)扣,在HttpServletRequest對(duì)象(JSP中的request對(duì)象)建立
          或者被銷(xiāo)毀時(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 閱讀(330) | 評(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ì)話(huà),如果不存在創(chuàng)建一個(gè)新的會(huì)話(huà),并返回。
               false時(shí),返回該當(dāng)前請(qǐng)求相關(guān)的會(huì)話(huà),如果不存在返回null,不創(chuàng)建會(huì)話(huà)。
          方法二:等同于方法一為true時(shí)。
          HttpSession接口的方法
          session.setAttribute(String name,Object value);
          session.getAttribute(String name);//返回Object
          session.removeAttribute(String name);//刪除
          session.invalidate()//當(dāng)前會(huì)話(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é)議類(lèi)型
          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類(lèi)形對(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 閱讀(339) | 評(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)
          查找具有給定名稱(chēng)的資源

          Result類(lèi)在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("無(wú)數(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,歌詞
          類(lèi)型表,typeid,name
          url
          controls.play()
          controls.stop()

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

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

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

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

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

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

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

          MyEclipse 6.0.1做講解):


          1. 打開(kāi)MyEclipse 6.0.1,然后“window”→“Preferences”

           
          2.       選擇“java”,展開(kāi),“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”,右鍵選擇“用記事本打開(kāi)”。


          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)擊“打開(kāi)”,點(diǎn)擊“Finish”。該步驟和上面

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


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

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

          便。


          總結(jié):

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

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

          能了。

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

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

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

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

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

          MyEclipse 快捷鍵

          1Ctrl+M切換窗口的大小
          2Ctrl+Q跳到最后一次的編輯處
          3F2當(dāng)鼠標(biāo)放在一個(gè)標(biāo)記處出現(xiàn)Tooltip時(shí)候按F2則把鼠標(biāo)移開(kāi)時(shí)Tooltip還會(huì)顯示即Show Tooltip Description
                     
          F3跳到聲明或定義的地方。
                      F5
          單步調(diào)試進(jìn)入函數(shù)內(nèi)部。
                      F6
          單步調(diào)試不進(jìn)入函數(shù)內(nèi)部,如果裝了金山詞霸2006則要把取詞開(kāi)關(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ì)于代碼窗口是打開(kāi)“Show List”下拉框,在此下拉框里顯示有最近曾打開(kāi)的文件
          7Ctrl+/ 在代碼窗口中是這種//~注釋。
                      Ctrl+Shift+/
          在代碼窗口中是這種/*~*/注釋?zhuān)?/span>JSP文件窗口中是<!--~-->
          8Alt+Shift+O(或點(diǎn)擊工具欄中的Toggle Mark Occurrences按鈕) 當(dāng)點(diǎn)擊某個(gè)標(biāo)記時(shí)可使本頁(yè)面中其他地方的此標(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)入包的類(lèi)名上) 作用是加Import語(yǔ)句。
                        Ctrl+Shift+O
          作用是缺少的Import語(yǔ)句被加入,多余的Import語(yǔ)句被刪除。
          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è)編輯的頁(yè)面
          Alt+
          下一個(gè)編輯的頁(yè)面(當(dāng)然是針對(duì)上面那條來(lái)說(shuō)了)

          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ì)于程序超過(guò)100的人就有福音了)
          Ctrl+M
          最大化當(dāng)前的EditView (再按則反之)
          Ctrl+/ 注釋當(dāng)前行,再按則取消注釋
          Ctrl+O
          快速顯示 OutLine
          Ctrl+T
          快速顯示當(dāng)前類(lèi)的繼承結(jié)構(gòu)
          Ctrl+W
          關(guān)閉當(dāng)前Editer
          Ctrl+K
          參照選中的Word快速定位到下一個(gè)
          Ctrl+E
          快速顯示當(dāng)前Editer的下拉列表(如果當(dāng)前頁(yè)面沒(méi)有顯示的用黑體表示)

          Ctrl+/(小鍵盤(pán)) 折疊當(dāng)前類(lèi)中的所有代碼

          Ctrl+×(小鍵盤(pán)) 展開(kāi)當(dāng)前類(lèi)中的所有代碼

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

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

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

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

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

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

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

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

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

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

          Alt+Shift+R 重命名 (是我自己最?lèi)?ài)用的一個(gè)了,尤其是變量和類(lèi)的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 合并變量(可能這樣說(shuō)有點(diǎn)不妥Inline)
          Alt+Shift+V
          移動(dòng)函數(shù)和變量(不怎么常用)
          Alt+Shift+Z
          重構(gòu)的后悔藥(Undo)


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

          posted @ 2009-11-29 22:36 junly 閱讀(242) | 評(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]
            //寫(xiě)出的目標(biāo)文件
            log4j.appender.appender1.File=c:/demllog4j.log[.html]
            //寫(xiě)入文件的格式
            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,為不同類(lèi)定義輸出格式
            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 編寫(xiě)代碼

          public class Test {
           //參數(shù)為當(dāng)前類(lèi)的類(lèi)名,得到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ù)庫(kù)中)

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

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

          配置文件
            log4j.properties/log4j.xml

          posted @ 2009-11-29 22:34 junly 閱讀(317) | 評(píng)論 (0)編輯 收藏
               摘要:  1.Linux進(jìn)入與退出系統(tǒng) 進(jìn)入Linux系統(tǒng): 必須要輸入用戶(hù)的賬號(hào),在系統(tǒng)安裝過(guò)程中可以創(chuàng)建以下兩種帳號(hào):   1.root--超級(jí)用戶(hù)帳號(hào)(系統(tǒng)管理員),使用這個(gè)帳號(hào)可以在系統(tǒng)中做任何事情。   2.普通用戶(hù)--這個(gè)帳號(hào)供普通用戶(hù)使用,可以進(jìn)行有限的操作。   一般的Linux使用者均為普通用戶(hù),而系統(tǒng)管理員一般使用超級(jí)用戶(hù)帳號(hào)完成一些系統(tǒng)管理的工作。如果只需要完成一...  閱讀全文
          posted @ 2009-11-29 22:32 junly 閱讀(452) | 評(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 過(guò)濾器
          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 閱讀(248) | 評(píng)論 (0)編輯 收藏
          僅列出標(biāo)題
          共18頁(yè): First 上一頁(yè) 4 5 6 7 8 9 10 11 12 下一頁(yè) Last 
          主站蜘蛛池模板: 江安县| 项城市| 天等县| 星子县| 乌兰察布市| 永定县| 宜兰市| 阿克| 景洪市| 兴化市| 青河县| 南召县| 翼城县| 合江县| 北辰区| 岳阳县| 武乡县| 临邑县| 福泉市| 罗城| 成都市| 仲巴县| 彩票| 称多县| 思南县| 合江县| 确山县| 于都县| 桐乡市| 阿拉善左旗| 渝北区| 甘孜县| 邓州市| 太仆寺旗| 崇礼县| 长宁县| 上杭县| 长白| 栾川县| 黎平县| 大港区|