首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ServletContextListener 中獲取伺服器端口號

     編輯:程式設計綜合問答

場景

在 contextInitialized 階段無 HttpServletRequest,無法直接取得端口。需透過容器特定 API 獲取。

Jetty 容器範例

public void contextInitialized(ServletContextEvent sce) {
    WebAppContext ctx = (WebAppContext) sce.getServletContext();
    System.out.println("Context Path: " + ctx.getContextPath());
    // 取得第一個 Connector 的端口
    int port = ctx.getServer().getConnectors()[0].getPort();
    System.out.println("Server Port: " + port);
}

Tomcat 容器替代方案

Tomcat 無標準 API 直接取得端口,常見做法:

  • 從 server.xml 讀取配置(解析 XML)。
  • 啟動時透過系統屬性傳入:-Dserver.port=8080,再用 System.getProperty("server.port") 讀取。
  • 若僅需構建完整 URL,可在首次請求時從 request.getServerPort() 取得並快取。

注意

上述 Jetty 代碼耦合容器實現,遷移時需修改。跨容器通用建議:配置檔或系統屬性顯式指定端口。

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