java获取登录者IP和登录时间的两种实现代码详解

网友投稿 383 2022-11-30


java获取登录者IP和登录时间的两种实现代码详解

第一种直接用java自带的InetAddress类:

import java.net.InetAddress;

import java.text.SimpleDateFormat;

import java.util.Date;

public class test{

public static void main(String[] args) throws Exception{

InetAddress addr = InetAddress.getLocalHost();

String ip=addr.getHostAddress();//获得本机IP

String address=addr.getHostName();//获得本机名称

Date d = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateNowStr = sdf.format(d);

System.out.println("IP: "+ip+" Name: "+address+" Time: "+dateNowStr);

}

}

输出结果如下:

第二种根据Web request请求获取:

package demo.login;

import ins.framework.web.Struts2Action;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import java.net.InetAddress;

@SuppressWarnings("serial")

public class LoginAction extends Struts2Action {

public String login() {

HttpServletRequest request=this.getRequest();

this.getIpAddress(request);

return SUCCESS;

}

public void getIpAddress(HttpServletRequest request) {

String ip = request.getHeader("x-forwarded-for");

System.out.println("x-forwarded-for ip: " + ip);

if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {

// 多次反向代理后会有多个ip值,第一个ip才是真实ip

if( ip.indexOf(",")!=-1 ){

ip = ip.split(",")[0];

}

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("Proxy-Client-IP");

System.out.println("Proxy-Client-IP ip: " + ip);

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("WL-Proxy-Client-IP");

System.out.println("WL-Proxy-Client-IP ip: " + ip);

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("HTTP_CLIENT_IP");

System.out.println("HTTP_CLIENT_IP ip: " + ip);

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("HTTP_X_FORWARDED_FOR");

System.out.println("HTTP_X_FORWARDED_FOR ip: " + ip);

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("X-Real-IP");

System.out.println("X-Real-IP ip: " + ip);

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr();

System.out.println("getRemoteAddr ip: " + ip);

}

//获取本地ip

if("0:0:0:0:0:0:0:1".equals(ip)){

try {

ip = InetAddress.getLocalHost().getHostAddress();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("getLocal ip: " + ip);

}

Date d = new DaQinuGSOte();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateNowStr = sdf.format(d);

System.out.println("登录IP: " + ip+"登录时间:"+dateNowStr);

}

}

本地会输出:

服务器端如下:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解Mybatis框架SQL防注入指南
下一篇:Spring前后端跨域请求设置代码实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~