java - 从 HttpSession 获取 HTTP serverName 和 serverPort

标签 java servlets servlet-3.0

有谁知道如何从 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/

相关文章:

java - 打印两个 int 数组中的公共(public)元素而不重复 [初学者]

java - Jetty - 找不到 Servlet

java - 无法将 Rythm 模板引擎与 servlet 3.0 一起使用

java - Java servlet 生成线程以满足请求是否安全?

java - 如何修复请求属性的跨站点脚本?

java - 如何阻止 JButton 执行无限循环

java - 正则表达式匹配-Java

java - Google App Engine 在与 Java 相同的项目中查询 MySQL

java - 等待几个线程之一

tomcat - 在 servlet 应用程序中保存上传文件的推荐方法