Относительно Вашего второго примера спецификация JSON запрещает его :
членские данные и ошибки не ДОЛЖНЫ сосуществовать в том же документе.
Для части браузера вам необходимо проанализировать раздел User-Agent запроса.
String browserType = request.getHeader("User-Agent");
Там вы найдете соответствующую информацию ...
ServletRequest.getRemoteAddr () или заголовок X-Forwarded-For , если вы думаете, что можете ему доверять.
Какая информация в браузере? В заголовках запроса будет User-Agent.
Здесь вы можете найти getRemoteAddr (), который
возвращает полное имя клиента или последнего прокси, отправившего запрос
... и с этим вы (возможно) получите браузер
request.getHeader("User-Agent")
Вы можете получить всю информацию, которую клиент готов предоставить вам, через заголовки HTTP. Вот их полный список.
Чтобы получить доступ к заголовку в сервлете или JSP, используйте:
request.getHeader ("имя-заголовка-вы-хотите") ;
Следующий jsp выведет ваш IP-адрес и пользовательский агент:
Your user-agent is: <%=request.getHeader("user-agent")%><br/>
Your IP address is: <%=request.getRemoteAddr()%><br/>
Чтобы узнать, какой браузер и / или ОС использует пользователь, проанализируйте заголовок пользовательского агента.
Например:
<%
String userAgent = request.getHeader("user-agent");
if (userAgent.indexOf("MSIE") > -1) {
out.println("Your browser is Microsoft Internet Explorer<br/>");
}
%>
Список пользовательских агентов см. здесь .