在Struts2 中 怎样通过ActionInvocation对象 获得访问者的ip

问题描述

在Struts2 中 怎样通过ActionInvocation对象 获得访问者的ip ;好像是在getInvocationContext()里面 , 各位帅哥美女 !大哥大姐 ! 小弟菜鸟一个!请求支援啊 问题补充:laorer 写道

解决方案

Struts2中获得request及ip//在struts2中获得request HttpServletRequest request = ServletActionContext. getRequest(); //获得ip地址(防止代) public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "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 || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; }//http://hi.baidu.com/wxyhaiy/blog/item/67aeef3f9cac77c87d1e710d.html
解决方案二:
request.getRemoteAddr()
解决方案三:
ActionContext ctx = invocation.getInvocationContext(); HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST); 有了request,剩下的不用我说了吧

时间: 2025-01-31 05:41:48

在Struts2 中 怎样通过ActionInvocation对象 获得访问者的ip的相关文章

struts2中迭代不同类型对象的测试

在平时使用 s:iterator 这个迭代标签,一般我们都是把一个 相同类型的多个对象放入一个集合当中,那么,是否可以放入不相同的对象来迭代呢? 日常工作有时候可能是需要这样来简化程序的,我今天测试了一下,好像完全可以 第一步: 我建立了两个不同的POJO类, public class Feng {private String lou;private String feng;}public class FengFeng {private String a;private String b;} 当

如何在HTML页面中用Jquery取得Struts2中Seesion存储的对象

问题描述 像这样取值不行,好像是jquery和EL表达式冲突,网上说要加<%@ page isELIgnored="false"%>可是HTML中怎么加呢?不知道有什么方法可以解决.谢谢! 问题补充:<br /><img src="http://dl.iteye.com/upload/attachment/557727/f1c4dd7c-c0a4-394b-a937-fbde717c61be.jpg" /><br />

有关struts2中的表单标签回显查询到对象的某个属性值

问题描述 有关struts2中的表单标签回显查询到对象的某个属性值 action中的方法: public String userEdit() { elecUser=elecUserService.findById(elecUser.getUserId()); // ActionContext.getContext().getValueStack().pop(); ActionContext.getContext().getValueStack().push(elecUser); return "

Struts2中的ModelDriven机制及其运用

ModelDriven 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象. 比如,有实体类User如下:   package cn.com.leadfar.struts2.actions;   public class User {     private int id;     private String username;     private String password;     private int age;     private String addre

在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等

目录(?)[-] ValueStack 如何得到值栈: 如何将对象存入值栈: 让值栈执行表达式来获得值: 在JSP中跳过栈顶元素直接访问第二层: 在JSP中访问值栈对象本身(而不是它们的属性) ActionContext ValueStack与ActionContext的联系和区别: 如何获得ActionContext: 如何向ActionContext中存入值: 如何从ActionContext中读取值: HttpServletRequest类或request的Map 使用HttpServle

Struts2 中的设计模式

1. Command Pattern 基本定义: 把Command(Request)封装成对象,把发出命令(Invoker)的责任和执行命令(Receiver)的责任分割开,委派给不同的对象. 责任划分有什么好处? 责任约单一,内聚性越高,可重用的可能性越大,试想下,如果服务员不仅要点菜,还要去做菜,会是什么情景. 为什么把Invoker和Receiver解耦好处多? 类之间的耦合越低,可扩展的可能性越高.解耦后,更换一个服务员并不会影响厨师的工作 那么把Request封装成对象具体是什么意思呢

Struts2中Action接收参数的方法

Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action类中定义属性,创建get和set方法:     b.接收:通过属性接收参数,如:userName:     c.发送:使用属性名传递参数,如:user1!add?userName=Magci: 2.使用DomainModel接收参数:     a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法:    

struts2中常用constant命令配置方法_java

struts.objectFactory这个属性用 于说明Struts2的 对象池创建工厂,Struts2也有自己的对象池,就像Spring那样,在配置文件中你可以引用对象池中的对象,你可以借助于Spring中的对象池, 当想要得到Spring中的对象池时,申明struts.objectFactory为Spring的对象池构建工厂.... struts.serve.static.browserCache 该属性设置浏览器是否缓存静态内容.当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响

在Struts2中使用OGNL

OGNL是XWork引入的一个非常有效的数据处理的工具.我们已经了解了OGNL的基本操作和OGNL的内部结构,接下来,我们来看看XWork对OGNL做了什么样的加强,以及OGNL的体系在Struts2中如何运转.  从例子开始  我们先从一个例子开始,看看数据在Struts2中是如何运转的.  Java代码   /**   * @author Downpour   */   public class User {              private Integer id;