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

Java Robot 實現伺服器桌面遠端監控:Servlet + 瀏覽器即時截圖

     編輯:Java 相關知識

利用 java.awt.Robot 擷取伺服器螢幕畫面,封裝為 Servlet 輸出 JPEG 圖片流,瀏覽器定時刷新即可實現輕量級「遠端桌面監控」。無需安裝 Agent,適合內網伺服器快速巡檢。

核心 Servlet 代碼

@WebServlet("/snapshot")
public class SnapshotServlet extends HttpServlet {
    private static final String CONTENT_TYPE = "image/jpeg";

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        resp.setContentType(CONTENT_TYPE);
        resp.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

        try {
            Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
            Rectangle bounds = new Rectangle(0, 0, screen.width, screen.height);
            BufferedImage img = new Robot().createScreenCapture(bounds);

            try (ServletOutputStream out = resp.getOutputStream()) {
                ImageIO.write(img, "jpg", out);
                out.flush();
            }
        } catch (AWTException | IOException e) {
            resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "截圖失敗: " + e.getMessage());
        }
    }
}

前端整合

<img id="screen" src="/snapshot" width="800" />
<script>
setInterval(() => {
    document.getElementById('screen').src = '/snapshot?' + Date.now(); // 防快取
}, 2000); // 每 2 秒刷新
</script>

擴展:從「監控」到「控制」

  1. 前端 canvas 或 img 綁定 click/mousemove 事件,將座標相對圖片比例換算為螢幕絕對座標。
  2. 以 AJAX POST 送至 /robot-control Servlet,參數 action=click|move|type&x=...&y=...&key=...。
  3. Servlet 端 Robot.mouseMove(x,y)、mousePress/Release、keyPress/Release 執行操作。
  4. 安全性:必須加入 IP 白名單、Token 驗證、HTTPS、操作審計日誌,否則極高風險。

限制與避坑

  • Robot 需要圖形介面環境(Headless 模式下會拋 AWTException),Linux 伺服器需安裝 Xvfb 或運行於桌面 Session。
  • 截圖頻率過高會佔用大量 CPU/頻寬,建議 1-5 秒間隔,或改用 VNC/RDP 協議。
  • 多螢幕環境 getScreenSize() 僅返回主螢幕,需用 GraphicsEnvironment.getScreenDevices() 遍歷。
  • Java 9+ 模組化需 --add-modules java.desktop 或在 module-info.java requires java.desktop;。

生產級替代方案

Robot 方案適合快速原型、內網無公網 IP、無法安裝額外軟體的臨時監控需求;長期維運請採用標準遠端桌面協議。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方案優點缺點
Apache GuacamoleHTML5 無客戶端、支援 RDP/VNC/SSH、認證授權完善部署相對複雜
noVNC + Websockify輕量、標準 RFB 協議需伺服器端運行 VNC Server
Chrome Remote Desktop / TeamViewer穿透 NAT、商業級可靠閉源、需安裝 Agent