¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Java Spring
  3. Spring en un contexto web JSP
Extrait - Java Spring La base técnica de las aplicaciones Jakarta EE
Extractos del libro
Java Spring La base técnica de las aplicaciones Jakarta EE Volver a la página de compra del libro

Spring en un contexto web JSP

Spring MVC

Spring MVC permite crear fácilmente una aplicación web en un contenedor ligero como Tomcat o Jetty. Permite servir una interfaz hombre-máquina (IHM) con JSP o JSF u otro motor de renderizado como Thymeleaf y exponer API SOAP y REST. Es muy fácil de utilizar y permite tener una muy buena cobertura de pruebas. Es posible usar una configuración basada en archivos XML o anotaciones. Al igual que sucede con otros tipos de aplicaciones Spring, son preferibles las configuraciones anotadas porque son más fáciles de mantener. En este capítulo, presentamos los dos tipos de configuración porque los proyectos más antiguos todavía usan la versión basada en archivos XML. Los servicios web SOAP y REST algunas veces usan Spring MVC, junto con Jersey y Apache CXF.

Este capítulo se centra en Spring MVC sin Spring Boot, que será el tema de un capítulo específico (Spring Boot). Para los nuevos proyectos, normalmente ya no se utilizan las JSP. En teoría, las páginas JSP se han sustituido por páginas JSF, pero en la práctica las SPA (Single Page Applications) han tenido prioridad sobre las JSP (y JSF). Sin embargo, todavía se utilizan las partes inicialmente previstas para un uso JSF con el RestTemplate, lo que permite el uso simplificado de Spring MVC para su utilización con servidores REST. Sin embargo, sigue siendo interesante conocer esta parte para poder hacer mantenimiento y pasar ciertas pruebas técnicas durante la selección.

Preferiblemente, usaremos el WebClient del stack reactivo para los nuevos proyectos que hagan Spring MVC (bloqueadores) porque RestTemplate ya no evolucionará a favor de evoluciones en el WebClient. De hecho, el WebClient es un cliente de bloqueo normal y un cliente reactivo. El WebClient se detalla en el capítulo titulado Introducción a Spring Reactor y Spring Webflux.

Al igual que sucede con muchos módulos de Spring, encontramos en los proyectos de configuraciones mezcladas varios estilos correspondientes a varios períodos de programación. Este capítulo muestra maneras antiguas y nuevas de usar Spring MVC. Cuanto más moderna es la configuración, más sencillo parece. Por ejemplo, todavía es posible configurar una aplicación Spring MVC de manera muy fina usando programación, pero...

Cliente REST

El cliente REST se beneficia de las facilidades ofrecidas por el template RestTemplate.

1. Utilización del RestTemplate

Un cliente REST es bastante sencillo con Spring.

@Log 
public class ClienteRest { 
   public static void main(String[] args) { 
      ApplicationContext ctx = new ClassPathXmlApplicationContext( 
               new String[] { "applicationContext.xml" }); 
      RestTemplate restTemplate = new RestTemplate(); 
      Usuario usuario= restTemplate.getForObject( 
               "http://localhost:8080/cap09-sr2/usuarios/2", 
               Usuario.class); 
      log.info(usuario.toString()); 
   } 
} 

2. El bean de dominio con la anotación REST para los campos ausentes

Es posible ignorar los campos ausentes.

Podemos utilizar estos campos para administrar la compatibilidad con versiones anteriores.

@JsonIgnoreProperties(ignoreUnknown = true) 
@Getter @Setter @ToString 
@NoArgsConstructor 
@AllArgsConstructor 
public class Usuario { 
private...

Spring Security

1. Introducción a Spring Security

Spring Security ayuda a proteger las aplicaciones a diferentes niveles. Spring utiliza aspectos (AOP) para interceptar métodos y añadir un contexto de seguridad. 

images/cap9_pag55.png

Se articula en torno a cuatro conceptos:

Principal

El usuario, sistema o dispositivo que realiza una acción.

Autenticación

Verificación de la validez de los derechos de main.

Autorización

Verificación de que la acción está permitida para main.

Recurso seguro

El recurso para el que se deben verificar los derechos de acceso.

Existen varios mecanismos de autenticación basados en:

  • un mecanismo ultrabásico,

  • un resumen,

  • un formulario,

  • un acceso X-509 (LDAP, por ejemplo),

  • cookies,

  • SSO (Single Sign-On).

Cuando sea posible, es recomendable utilizar SSO para reutilizar las credenciales de la sesión de la estación de trabajo.

Para aplicaciones muy sensibles, es posible utilizar un lector de tarjetas inteligentes o un sistema de tokens (sistema basado en un número que se muestra en una caja o calculadora, el cual cambia cada x segundos).

Esta autenticación se puede asociar con derechos que se registran:

  • en duro en un programa durante el ciclo de desarrollo,

  • en un archivo .properties,

  • en una base de datos (SQL, NoSQL a través de un DAO clásico),

  • en una base de datos LDAP,

  • en un sistema externo dedicado.

Para determinar si una acción es posible, primero es necesario verificar quién está haciendo la consulta utilizando el mecanismo de autenticación. Podemos definir que un usuario que aún no está identificado se considera un invitado (GUEST). El sistema más sencillo puede considerar a un usuario estándar como miembro (MEMBER) si se trata de un usuario que no tiene permisos de administración. Un usuario administrador tiene un rol de administrador (ADMIN). Estos tres roles, GUEST, MEMBER, ADMIN, son los roles básicos en Spring Security.

Veremos que también está previsto poder definir otros roles que complementarán estos roles sencillos. Spring Security es independiente de los mecanismos estándar...

Puntos clave

  • Spring MVC es muy potente y permite hacer muchas cosas.

  • Spring MVC con JSP ha logrado sustituir a Struts 1.

  • Podemos probar la mayoría de nuestro código.

  • El modo MVC estandariza la forma de hacer la aplicación.