2014-07-21 57 views
0

是否有人知道從HttpSession對象獲取通常包含在HttpRequest中的服務器名稱和端口的方法?從HttpSession獲取HTTP serverName和serverPort

換句話說我需要HttpServletRequest#getServerName()HttpServletRequest#getServerPort()方法的結果,而只有HttpSession對象。

我明白我要求的是「黑客」,但我目前需要一個黑客辦法來做到這一點。

+1

將是有用的來實現一個過濾器爲您提供這個? –

+0

我可以在jsessionid cookie的域屬性中看到服務器名稱,但不能看到端口。 – MarianP

回答

2

好吧,這是一種破解,但如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); 
     } 
    } 
} 
+1

只放入你需要屬性的字符串會更好。 – MarianP