Extraer información del navegador del usuario en el servidor de una aplicación web Java
Escrito por
el .
java
planeta-codigo
programacion
Enlace permanente
Comentarios
En una aplicación web dependiendo de las características del cliente si es de escritorio, móvil u otro dispositivo y tamaño, lenguaje o dependiendo de la ubicación mediante su dirección IP puede servirse diferente contenido adaptado a las propiedades del cliente.
La comprobación desde el navegador se realiza con JavaScript, con la propiedad window.navigator.userAgent se obtienen propiedades básicas del agente del usuario como navegador, versión y plataforma. Con la librería JavaScript Modernizr se obtiene las características que soporta el navegador. Pero el código JavaScript se ejecuta en el cliente y la primera petición de un usuario llega al servidor cuando aún no se ha cargado ninguna página ni código JavaScript, sólo se dispone del agente de usuario, lenguaje preferido y dirección IP con lo que es necesario una librería en el lado de servidor que procese el agente del usuario u otra información que este envíe para actúa en consecuencia.
En la primera petición de un usuario a una aplicación Java con la librería browscap-java es posible procesar el agente del usuario y conocer su navegador y versión, tipo de dispositivo, plataforma y versión. Con esta información la aplicación es capaz adaptar el contenido al cliente, por ejemplo si se trata de una versión antigua de un navegador al que hay que seguir ofreciendo soporte porque algunos usuarios siguen usándolo y para el que hay que devolver un JavaScript especial por no soportar algunas características de navegadores más modernos.
En este ejemplo se hace uso de la librería browscap-java y se imprime en la salida de la aplicación la información que esta proporciona interpretando la cadena del agente del usuario. Se observa que en mi caso uso GNU/Linux, Firefox en la versión 70 de la versión de escritorio. Los navegadores envían una cabecera del protocolo HTTP, User-Agent, en la que incluyen información y la firma del navegador o agente del usuario. En el servidor para recuperar la cabecera basta con utilizar el método HttpServletRequest.getHeader() o usando Spring MVC con la anotación @RequestHeader.
|
|
|
|
Accediendo a la dirección del controlador http://localhost:8080 se obtienen los siguientes resultados dependiendo de con que navegador se acceda, en estos ejemplos con Firefox de escritorio, con Chrome de escritorio, y con Firefox de Android.
|
|
|
|
|
|
El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando siguiente comando:./gradlew run