Java 从HttpSession获取HTTP服务器名和服务器端口

Java 从HttpSession获取HTTP服务器名和服务器端口,java,servlets,servlet-3.0,Java,Servlets,Servlet 3.0,有人知道从HttpSession对象获取通常包含在HttpRequest中的服务器名称和端口的方法吗 换句话说,我需要HttpServletRequest#getServerName()和HttpServletRequest#getServerPort()方法的结果,同时只需要一个HttpSession对象 我知道我要求的是一种“黑客”,但我目前需要一种黑客方式来实现这一点。嗯,这是一种黑客行为,但正如Jorge Campos所建议的那样,您可以使用过滤器在会话开始时将指向请求的指针放入会话中,

有人知道从
HttpSession
对象获取通常包含在
HttpRequest
中的服务器名称和端口的方法吗

换句话说,我需要
HttpServletRequest#getServerName()
HttpServletRequest#getServerPort()
方法的结果,同时只需要一个
HttpSession
对象


我知道我要求的是一种“黑客”,但我目前需要一种黑客方式来实现这一点。

嗯,这是一种黑客行为,但正如Jorge Campos所建议的那样,您可以使用过滤器在会话开始时将指向请求的指针放入会话中,并在会话结束时将其删除。比如:

public class ReqFilter implements Filter {
    ...
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        HttpSession session = ((HttpServletRequest) request).getSession();
        session.setAttribute("request", request);
        try {
            chain.doFilter(request, response);
        }
        catch(IOException e) {
            throw e;
        }
        catch(ServletException e) {
            throw e;
        }
        finally {
            session.setAttribute("request", null);
        }
    }
}

是否可以实现一个过滤器来为您提供此功能?我可以在JSSessionID cookie的域属性中看到服务器名称,但看不到端口。在属性中只放置所需的字符串会更好。