`
chenzengpeng
  • 浏览: 22285 次
  • 性别: Icon_minigender_1
  • 来自: 火星移民
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • 有你的天堂: chenzengpeng 写道 flyeverzhang 写道 ...
    ......
  • kjj: 没必要动辄使用拦截器,java 干这种事情,这是server ...
    ...
  • EXvision: <div class="quote_title ...
    ...
  • zhangsatanyang: 想问楼主,为什么要用拦截器,写一个过滤器,将自己学校的IP段配 ...
    ...
  • chenzengpeng: <div class="quote_title ...
    ...

...

阅读更多
......
分享到:
评论
13 楼 kjj 2009-01-07  
没必要动辄使用拦截器,java 干这种事情,这是server 的任务,相对tomcat 配置<Context> 里面有拒绝 IP的功能
12 楼 EXvision 2009-01-07  
zhangsatanyang 写道
想问楼主,为什么要用拦截器,写一个过滤器,将自己学校的IP段配置在外部属性文件中,不是更灵活吗


拦截器和过滤器貌似只是一个是struts2的,一个是servlet的吧。没有啥功能上的区别。
不过写一个properties放到外面,还是不错的方法哦。或者直接IoC注入进去也可以啊。
11 楼 zhangsatanyang 2009-01-07  
想问楼主,为什么要用拦截器,写一个过滤器,将自己学校的IP段配置在外部属性文件中,不是更灵活吗
10 楼 chenzengpeng 2009-01-07  
asm 写道
这个interceptor能跑起来吗,servlet里判断是否是校外的ip,判断结果存在session里,请求来的时候是先执行interceptor的啊,那interceptor里的判断肯定是false 啊

当然能啦 你看到的只是表面的东西··
在struts.xml中配置action转发的时候,当然是在转发前就调用isSchoolUser()方法。这样在拦截器之前就先进行了判断。也就是说两个action的拦截器是不一样的。
具体可以看http://zb.hhit.edu.cn
校外不可访问留言,而内部可以访问留言。
你是杭州的?嘿嘿··一起讨论学习吧··
9 楼 asm 2009-01-06  
这个interceptor能跑起来吗,servlet里判断是否是校外的ip,判断结果存在session里,请求来的时候是先执行interceptor的啊,那interceptor里的判断肯定是false 啊
8 楼 liuwei1981 2008-10-15  
cnhzliye 写道
String s = ServletActionContext.getRequest().getRemoteAddr();  

Apache+JBoss的集群环境下这样能得到客户端的IP的地址?


应该没什么问题吧,我的集群环境是apache+tomcat,就可以获得客户端的ip地址。
7 楼 chenzengpeng 2008-10-14  
mmwy 写道
chenzengpeng 写道
String s = ServletActionContext.getRequest().getRemoteAddr();  

Apache+JBoss的集群环境下这样能得到客户端的IP的地址?


前面挡了个apache以后,直接使用getRemoteAddr()得到的自然是apache所在服务器的地址。

但是好在apache、squid这类东西,在向后转发请求时,会将源ip地址以x-forwarded-for:xxx.xxx.xx.xx的格式加在HTTP报头里面。

修改过后的读取ip地址代码

    String ipAddress = request.getHeader("x-forwarded-for");
    if (StringUtils.isBlank(ipAddress)) {
      ipAddress = request.getRemoteAddr();
    }

你的方法不错··借鉴了··嘿嘿··
6 楼 mmwy 2008-10-14  
chenzengpeng 写道
String s = ServletActionContext.getRequest().getRemoteAddr();  

Apache+JBoss的集群环境下这样能得到客户端的IP的地址?


前面挡了个apache以后,直接使用getRemoteAddr()得到的自然是apache所在服务器的地址。

但是好在apache、squid这类东西,在向后转发请求时,会将源ip地址以x-forwarded-for:xxx.xxx.xx.xx的格式加在HTTP报头里面。

修改过后的读取ip地址代码

    String ipAddress = request.getHeader("x-forwarded-for");
    if (StringUtils.isBlank(ipAddress)) {
      ipAddress = request.getRemoteAddr();
    }
5 楼 stormspire 2008-10-14  
这个判断是否是校内的IP逻辑可否用正则来替换? 更加灵活
4 楼 chenzengpeng 2008-09-28  
cnhzliye 写道
String s = ServletActionContext.getRequest().getRemoteAddr();  

Apache+JBoss的集群环境下这样能得到客户端的IP的地址?

还没在Apache+JBoss的集群环境做过开发,所以无法回答您的问题```毕竟这个是简单的ip拦截.
3 楼 chenzengpeng 2008-09-28  
xly_971223 写道
直接用apache岂不是更简单

这是基于struts2拦截器的IP拦截,毕竟不是专业的IP拦截```
你的建议刚好让我去深入学习一下apache的细节问题.
2 楼 xly_971223 2008-09-28  
直接用apache岂不是更简单
1 楼 cnhzliye 2008-09-28  
String s = ServletActionContext.getRequest().getRemoteAddr();  

Apache+JBoss的集群环境下这样能得到客户端的IP的地址?

相关推荐

Global site tag (gtag.js) - Google Analytics