本文彙整兩個實用技巧:正確獲取 Linux 伺服器的站點本地 IP,以及避免 JSP 中文亂碼的編碼設定要點。
遍歷 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;
}
}
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>web.xml 註冊 CharacterEncodingFilter(Spring 提供)強制 request.setCharacterEncoding("UTF-8") 及 response.setCharacterEncoding("UTF-8")。characterEncoding=utf8&useUnicode=true(MySQL)或對應參數。server.xml 的 <Connector URIEncoding="UTF-8" />。統一全鏈路 UTF-8,可徹底解決「小偷程式」式的亂碼困擾。