如何在速度工具中获取HttpServletRequest?

时间:2016-03-18 11:45:07

标签: java tomcat authentication servlets velocity

我想实现一个速度工具,它提供了一种方法,以便找出用户登录或不登录的天气。我使用VelocityLayoutServlet来为每个请求呈现模板。

我的velocity-tools.xml如下所示:

<tools>
    <toolbox scope="request">
       <tool key="user" class="UserTool"/>
    </toolbox>
</tools>

我的工具类:

public class UserTool{

    // How do I get this object?
    private HttpServletRequest request;

    public boolean isLoggedIn(){
        return !request.getUserPrincipal().getName().isEmpty();
    }

}

如何在工具中获取HttpServletRequest对象?

仅供参考:我使用容器管理身份验证。

1 个答案:

答案 0 :(得分:1)

这有两个缺陷:

  1. 如果请求是匿名的,您将收到NullPointerException
  2. 您的工具是多余的,因为Velocity捆绑的Servlet应该已将请求添加到上下文中:$request.remoteUser
  3. 范围request不表示HTTP请求。它只是说明在每个渲染请求上都会重新创建这个工具。