如何使用JSF获取用户的浏览器ID?

时间:2011-12-26 16:05:26

标签: java jsf web-applications jsf-2 jboss

是否可以使用JSF获取用户的浏览器ID号?我将JBoss 7用于应用程序服务器。

2 个答案:

答案 0 :(得分:20)

浏览器的user agent string可用作名称为User-Agent的HTTP请求标头。 ExternalContext#getRequestHeaderMap()提供了JSF请求标头:

ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
String userAgent = externalContext.getRequestHeaderMap().get("User-Agent");

无需从JSF引擎盖下运送原始Servlet API。每当需要访问HTTP servlet请求或响应时,请始终首先查看ExternalContext的javadoc。

请注意,最终用户的请求标头(与HTTP请求中的其他所有内容一样)都是完全可控。所以永远不要认为信息是正确和有效的。仅用于统计。如果您需要进行功能检测,请尽可能使用JavaScript和/或CSS等客户端语言。他们可以更可靠地做到这一点。

答案 1 :(得分:9)

您可以从user-agent阅读request标题,以获取有关浏览器的详细信息

((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getHeaders();