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

Java 獲取本機 IP 位址與編碼陷阱避坑指南

     編輯:Java 相關知識

本文彙整兩個實用技巧:正確獲取 Linux 伺服器的站點本地 IP,以及避免 JSP 中文亂碼的編碼設定要點。

一、獲取非回環、非 IPv6 的站點本地 IP

遍歷 NetworkInterface,過濾條件:isSiteLocalAddress() 為真、isLoopbackAddress() 為假、且不含冒號(排除 IPv6)。

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

public class GetIp {
    public static void main(String[] args) {
        try {
            String ip = new GetIp().getLocalSiteIP();
            System.out.println("本機站點 IP: " + ip);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private String getLocalSiteIP() throws SocketException {
        Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements()) {
            NetworkInterface ni = interfaces.nextElement();
            Enumeration addresses = ni.getInetAddresses();
            while (addresses.hasMoreElements()) {
                InetAddress addr = addresses.nextElement();
                if (addr.isSiteLocalAddress() 
                    && !addr.isLoopbackAddress() 
                    && addr.getHostAddress().indexOf(':') == -1) {
                    return addr.getHostAddress();
                }
            }
        }
        return null;
    }
}

二、JSP/Servlet 中文編碼最佳實踐

  • 原始碼檔案編碼:IDE 統一設為 UTF-8,避免 EditPlus 等編輯器預設 Unicode 導致編譯後 class 檔編碼不一致。
  • 頁面指令:<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
  • 請求/回應過濾器:在 web.xml 註冊 CharacterEncodingFilter(Spring 提供)強制 request.setCharacterEncoding("UTF-8") 及 response.setCharacterEncoding("UTF-8")。
  • 資料庫連線:JDBC URL 加入 characterEncoding=utf8&useUnicode=true(MySQL)或對應參數。
  • Tomcat 設定:server.xml 的 <Connector URIEncoding="UTF-8" />。

統一全鏈路 UTF-8,可徹底解決「小偷程式」式的亂碼困擾。

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