首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

好手帮忙,struts2获取客户端ip并存入数据库

2012-12-16 
高手帮忙,struts2获取客户端ip并存入数据库现在,我想把访问者的ip获取到,并存入数据库,我想用户已访问inde

高手帮忙,struts2获取客户端ip并存入数据库
现在,我想把访问者的ip获取到,并存入数据库,我想用户已访问index.jsp就记录到数据库,但是不知道用什么方法,是不是用拦截器啊,我没有玩过拦截器,大家帮忙一下,最好说清楚一点,小弟在此感谢了,
我先前写了一个现在已经可以获取到了ip了
HttpServletRequest req=(HttpServletRequest)ServletActionContext.getRequest();

String visitorIp=req.getRemoteAddr();
String visitorhost = req.getRemoteHost();
int visitorPort=req.getRemotePort();
String visitorUsername=req.getRemoteUser();
String visitorUrl=req.getRequestURI();

可以System.out.println("访问者的ip是"+visitorIp);出来

但是我想保存到我的数据库,又报开空指针了
我的环境是s2sh的我写了个Visitor的javabean代码如下
public class Visitor {
private Integer id;
private String ipaddress;
private Date date;
private String host;
private String url;
省了getter和setter方法
我现在往这个visitor中set获取的ip时就报空指针
请大家帮帮忙,主要告我一下拦截器这么用在这里,还有就是获取到ip后这么放到visitor对象里,存进数据库

[最优解释]

引用:
我现在往这个visitor中set获取的ip时就报空指针

在java里面,即使你set一个null给对象也不会报异常的。
只有在什么情况下会报异常呢?就是zsz0147所说的那样。
你的对象并没有实例化。即:Visitor v = new Visitor();
如果你没有采用关键字new来实例化这个Visitor 对象的话。
不管你set何值。都会报空指针异常。
[其他解释]
我想是不是你要对visitorIp的值进行判断,if(visitorIp==null)visitorIp="";
不知道对不对,新手。
[其他解释]
struts2的bean中的值不是和jsp上面的属性自动映射的吗?如果是取不到,是不是属性不一致造成的?楼主可以在jsp中用一个隐藏字段存放ip.
[其他解释]
是哪里报的空指针?
[其他解释]
或者说,你的spring没有配置这个类?
[其他解释]
在Action 中 把reqeust 取出来 就一样的用了撒
[其他解释]
1.
  当访问index.jsp 页面时。你可以拦截它。在action中.用request 得到远程的ip地址。

2.
  在action是把得到的ip存入数据库.
[其他解释]
 ip.length() == 0 
[其他解释]
 ip.length() == 0 
[其他解释]
怎么没有人回答我啊,现在我再加分50
[其他解释]
在往这个visitor中set获取的ip时就报空指针

报怎么个空指针了
[其他解释]
Visitor 这个类的对像你没有new吧
[其他解释]
/**
 * 获得客户端真是ip
 */
public static String getIpAddr(HttpServletRequest request) {    
    String ip = request.getHeader("x-forwarded-for");    
    if(ip == null 
[其他解释]
 "unknown".equalsIgnoreCase(ip)) {    
        ip = request.getHeader("Proxy-Client-IP");    
    }    
    if(ip == null 
------其他解决方案--------------------


 ip.length() == 0 
[其他解释]
 "unknown".equalsIgnoreCase(ip)) {    
        ip = request.getHeader("WL-Proxy-Client-IP");    
    }    
    if(ip == null 
[其他解释]
留名,查看结果。。。。
[其他解释]
 "unknown".equalsIgnoreCase(ip)) {    
        ip = request.getRemoteAddr();    
    }    
  


[其他解释]
欢迎各位继续帮忙,互相讨论,分,我还可以再加
我把我的相关代码贴出来!!!!!!!
[其他解释]
谢谢楼上各位的帮助,我的visitor这个bean类,没有在spring里面注册,所以保留空指针了,还有我在action中引用时,没有new这个对象,还有我现在new出这个对象,set值的时候,依然报空指针,我现在吧visitor这个bean中的属性,把private改成public,尽然成功了,但是这种办法好像不合适吧,写了一个visitor的bean类就是为了隐藏属性的细节吧,暴露出来,那个地方都能用了啊。诡异,奇怪——————

还有就是7楼说的,我要是在spring里面配置这个类,该怎么配置????谢谢

第三个问题就是,这么样让我的这个action起拦截作用?????让客户访问时先经过这个action,再转到主页,web.xml中不能把action设置成欢迎页面啊,我的意思是先进一个index.jsp 然后重定向到visitorAction,这样倒是可以实现,但是记录访问次数和获取ip是这样做吗????

热点排行