日期:2014-05-17  浏览次数:20788 次

高手帮忙,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 
------其他解决方案--------------------