首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

JBuilder 2005 Servlet 開發:建立監聽器記錄 Web 容器啟動關閉日誌

     編輯:Java 程式設計入門

前言

Web 應用伺服器會產生各類事件:容器啟動、Session 過期、請求到達等。善用事件處理機制可大幅增強程式對伺服器的控制力。本文示範建立 Servlet 監聽器,記錄 Web 容器啟動/關閉事件至 Excel 日誌檔,供管理員查閱,並支援登入後下載日誌。

建立 Servlet 監聽器步驟

1. 啟動建立精靈

在 JBuilder 中選擇 File → New → Web → Listener Servlet,啟動精靈。指定類別名稱 SrvStartListener,套件名 bookstore.servlet。

2. 指定實現的事件介面

Web 容器啟動/關閉事件由 ServletContextListener 定義,勾選該介面並完成建立。

3. 實作 contextInitialized 方法

打開產生的 SrvStartListener.java,加入以下核心程式碼(粗體部分):

package bookstore.servlet;
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;

public class SrvStartListener extends HttpServlet implements ServletContextListener {
    public void contextInitialized(ServletContextEvent sce) {
        GregorianCalendar cal = new GregorianCalendar();
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        File file = new File("D:/serverLog/log_" + year + "_" + month + ".xls");
        FileWriter fw = null;
        try {
            fw = new FileWriter(file, true); // 追加模式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String starttime = sdf.format(new Date());
            fw.write("於 " + starttime + " 啟動 Web 容器 ");
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (fw != null) fw.close();
            } catch (IOException ex1) {
                ex1.printStackTrace();
            }
        }
    }
    // contextDestroyed 方法類似,略
}

contextInitialized 在容器初始化時被呼叫,寫入啟動日誌;contextDestroyed 在容器關閉前被呼叫,記錄關閉資訊(完整程式碼請參考隨書光碟)。

部署描述資訊

打開 web.xml,可見監聽器的部署資訊:

<web-app>
    <listener>
        <listener-class>bookstore.servlet.SrvStartListener</listener-class>
    </listener>
</web-app>

部署描述未指定監聽器類型,容器透過類別實現的事件介面自動識別。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved