【问题标题】:How can I get HttpServletRequest Object in Jodd action class?如何在 Jodd 动作类中获取 HttpServletRequest 对象?
【发布时间】:2015-08-16 08:50:32
【问题描述】:

我正在使用Jodd Madvoc MVC 框架。我想获取 Web 应用程序客户端的 IP 地址。如何在动作类中获取HttpServletRequest 对象?

@MadvocAction(value = "login")
public class LoginAction extends BaseAction {

    Logger logger = LoggerFactory.getLogger(getClass());

    @PetiteInject
    UserService userService;

    @Action
    public void view() {
        if (logger.isInfoEnabled())
            logger.info("LoginAction.view()");
       // Code for getting ip Address
        forwardTo("/login.jsp");
    }
}

【问题讨论】:

  • 为 HttpServletRequest 创建一个字段,然后使用 setter 方法将其传递给 Login 类。
  • 你好,mastah,我正在使用 Jodd Madvoc MVC 框架,我没有在其中初始化动作类。所以设置 HttpServletRequest 的私有字段是不可能的。

标签: java jodd


【解决方案1】:

在阅读http://jodd.org/doc/madvoc/injection.html like HttpServletResponse injection 之后,我对HttpServletRequest 做了同样的事情。

@MadvocAction(value = "login")
public class LoginAction extends BaseAction {

    Logger logger = LoggerFactory.getLogger(getClass());

    @PetiteInject
    UserService userService;

    @In(scope = ScopeType.SERVLET)
    protected HttpServletResponse servletResponse;

    @In(scope = ScopeType.SERVLET)
    protected HttpServletRequest servletRequest;

    @Action
    public void view() {
        if (logger.isInfoEnabled())
            logger.info("LoginAction.view()");
       // Code for getting ip Address
        forwardTo("/login.jsp");
    }
}

问题就解决了。 :-)

【讨论】:

  • 这是正确答案 :) 但是,尽量不要使用 servlet 类 - Madvoc 的目的是让用户可以使用简单的 java bean,而不是 servlet 类。在您的情况下,使用结果进行转发 - 只需继续阅读文档 ;)))
  • 是的,我试图不使用 HttpServletRequest 但我想从请求中获取 IP 地址,所以想使用它。
  • 知道了。请注意,您可以使用特殊字段名称访问 servlet 属性(如 getRequestAddress)...来自文档:“...servlet 对象的适配器映射:当@In 属性命名为:requestMap、sessionMap 或 contextMap 时,相应的映射适配器将被注入到属性中。当然,期望属性类型是Map...."
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多