通过session取IP?

ansili521 2008-11-25 09:00:55
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
activeSessions.put(session.getId(), session);
}

在此已经取得session了. 如何取得客户端访问的IP呢?.
...全文
1053 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
fx290318458 2008-11-29
  • 打赏
  • 举报
回复
request..getRemoteAddr() 能获得到
steryzone 2008-11-28
  • 打赏
  • 举报
回复
用request获取ip
LZ不一定要在session里面拿到阿,试下用其他方法。。。来实现效果
jumpheightway 2008-11-27
  • 打赏
  • 举报
回复
取ip用这个request.getRemoteAddr()
weakizy164 2008-11-27
  • 打赏
  • 举报
回复
11楼说得很有道理啊,学习了
ansili521 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jumpheightway 的回复:]
那九个对象是可以互取的怎么得不到呢
[/Quote]

不能解到!.. 请问一下怎么个互取法?. 能否列一下?.
ansili521 2008-11-27
  • 打赏
  • 举报
回复
session侦听 没什么感觉.
没有很好的方法解决这个问题.
结贴算了.
ansili521 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 nextuser 的回复:]
session中应该是取不到了,可以作个filter,
1。请求过来,
2。判断session中是否有统计过标志
3。如果没有,统计计数加一,记录在request中的远程地址,在session中设置统计过标志
如果有统计过标志,跳到4
4 交给下一工序处理(调用父类的dofilter)
[/Quote]

这也是一个方法.但很个请求我都去处理一下,例如这样request.getSession().setAttribute("ip",request.getRemoteAddr());
存在部分问题.
1.效率上.
2.我现在可能是将IP放在一个Map里面,通过sessionid做为key存放起来. 当用户在线数量一增多,结果就会出现同步问题.
理论上说.session有责任存放ip的.session是服务器对客户端生命周期的描述.
但的确找不到.最后我实现的方式也是使用filter完成的.
但存还是不满意,因为存在什么问题.
海会圣贤 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ansili521 的回复:]
我是想做在线人数统计,目前只能实现,有多少人在线,在线人数的IP等信息.
具体代码如下
public class SessionListener implements HttpSessionListener
{


public static Map <String, HttpSession> activeSessions = Collections.synchronizedMap(new HashMap <String, HttpSession>());

public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
activeSessions…
[/Quote]

你可以使用session侦听啊.......
用法上网搜.
nextuser 2008-11-25
  • 打赏
  • 举报
回复
session中应该是取不到了,可以作个filter,
1。请求过来,
2。判断session中是否有统计过标志
3。如果没有,统计计数加一,记录在request中的远程地址,在session中设置统计过标志
如果有统计过标志,跳到4
4 交给下一工序处理(调用父类的dofilter)
ansili521 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 iwantnba 的回复:]
session里面好像没有直接获得客户端IP地址的方法
[/Quote]

我找了的确没有,不敢保证我自己找的是否全面,只是想发一个贴看看,有没有知道怎么得到.
或是有更好的方法.
iwantnba 2008-11-25
  • 打赏
  • 举报
回复
session里面好像没有直接获得客户端IP地址的方法
jumpheightway 2008-11-25
  • 打赏
  • 举报
回复
那九个对象是可以互取的怎么得不到呢
dujun3245350 2008-11-25
  • 打赏
  • 举报
回复
接分
ansili521 2008-11-25
  • 打赏
  • 举报
回复
我是想做在线人数统计,目前只能实现,有多少人在线,在线人数的IP等信息.
具体代码如下
public class SessionListener implements HttpSessionListener
{


public static Map<String, HttpSession> activeSessions = Collections.synchronizedMap(new HashMap<String, HttpSession>());

public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
activeSessions.put(session.getId(), session);
}

public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
activeSessions.remove(session.getId());
}
}
iwantnba 2008-11-25
  • 打赏
  • 举报
回复
activeSessions.put(session.getId(), session);
这方法是干嘛的?
ansili521 2008-11-25
  • 打赏
  • 举报
回复
关键在这里得不到. Request对象.
现在在这里的只有HttpSession的对象.
zfg2003 2008-11-25
  • 打赏
  • 举报
回复
Up
yanbin1016 2008-11-25
  • 打赏
  • 举报
回复
用内置的request对象的getRemoteAddr()方法可以取到IP 不知道你要的是这个不! 如:String strIP = request.getRemoteAddr(); //IP
dimcutter 2008-11-25
  • 打赏
  • 举报
回复
我是来长见识了~~~飘
上善_若水 2008-11-25
  • 打赏
  • 举报
回复
session确实不能取到ip,因为session的信息是保存在服务端的,为做为客户端的标识唯一的就是有不同的session id而已。客户端可以通过session id
获得session信息。根本没有包括ip在内的一些其他客户端信息。
加载更多回复(3)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧