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的域属性中看到服务器名称,但看不到端口。在属性中只放置所需的字符串会更好。