有谁知道如何从 HttpSession
对象获取通常包含在 HttpRequest
中的服务器名称和端口?
换句话说,我需要 HttpServletRequest#getServerName()
和 HttpServletRequest#getServerPort()
方法的结果,而只有 HttpSession
对象。
我知道我要求的是“黑客”,但我目前需要一种黑客方法来做到这一点。
最佳答案
嗯,这是一种黑客攻击,但正如 Jorge Campos 所建议的,您可以使用 Filter 在开始时将指向请求的指针放入 session 中,并在结束时将其删除。像这样的东西:
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);
}
}
}
关于java - 从 HttpSession 获取 HTTP serverName 和 serverPort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24864354/