Las 80 preguntas y respuestas principales de la entrevista de Spring MVC (2023): la guía completa

Como desarrollador de Java experimentado y arquitecto principal en una startup de tecnología financiera, he ayudado a revisar el código base heredado con Spring Boot para mejorar la estabilidad y la seguridad. Durante la última década, también he capacitado a cientos de desarrolladores en Spring a través de mis cursos en línea.

Según el inventor de SpringRod Johnson, La adopción de Spring MVC se ha multiplicado por cinco desde 2016, lo que lo convierte en uno de los marcos web Java más populares. Y según la encuesta StackOverflow de 2022, Spring también se ubica como el marco más querido a nivel mundial.

Entonces, si tiene una próxima entrevista de Java o Spring, revisar estas preguntas frecuentes de la entrevista de Spring MVC lo ayudará a prepararse mejor y a triunfar.

Preguntas de la entrevista de Spring MVC para principiantes

1. ¿Qué es Spring MVC?

Spring MVC es un potente marco Modelo-Vista-Controlador para crear aplicaciones web flexibles y poco acopladas. Diseñado y diseñado sobre Spring Framework, proporciona una forma elegante de asignar solicitudes HTTP a controladores que manejan la lógica empresarial y presentan vistas apropiadas para los usuarios finales.

Algunas ventajas clave son:

  • Clara separación de preocupaciones con la interfaz de usuario representada a través de plantillas de vista
  • Controladores basados ​​en POJO para pruebas de código flexibles
  • Componentes conectables como solucionadores de vistas, controladores, etc.
  • Configuración basada en anotaciones sobre XML

2. ¿Cuáles son los componentes clave del marco Spring MVC?

Como una de las implementaciones más populares del patrón MVC, Spring MVC consta de los siguientes componentes clave:

DespachadorServlet– Controlador frontal que maneja todas las solicitudes y respuestas HTTP.

Controladores– Clases POJO que contienen lógica empresarial para manejar solicitudes.

Modelos– Almacén de datos representado por interfaces para vistas de datos abstractos.

Vistas– Plantillas como JSP, Thymeleaf que representan la capa de presentación.

Client -> DispatcherServlet -> Controller -> Service -> 
              Model        View -> Dispatcher -> Client       

3. Explicar el flujo de trabajo o flujo de Spring MVC

Repasemos el flujo de trabajo de Spring MVC con un diagrama de secuencia para un ejemplo de solicitud GET:

sequenceDiagram
    Client->>DispatcherServlet: GET /users
    DispatcherServlet->>HandlerMapping: Find Controller
    HandlerMapping-->>DispatcherServlet: UsersController
    DispatcherServlet->>UsersController: Handle request 

    UsersController->>UserService: Find all users
    UserService-->>UsersController: List<User>

    UsersController->>DispatcherServlet: users (View name)
    DispatcherServlet->>ViewResolver: Resolve users view
    ViewResolver-->>DispatcherServlet: users.jsp

    DispatcherServlet->>users.jsp: Render model
    users.jsp-->>DispatcherServlet: HTML content

    DispatcherServlet-->>Client: Response with HTML

Aquí están los pasos detallados:

  1. El cliente envía unCONSEGUIRsolicitud de/usersURL al DispatcherServlet
  2. DispatcherServlet le pide a HandlerMapping que seleccione el controlador apropiado según la URL (/users)
  3. HandlerMapping devuelve el seleccionadoUsersControllerinstancia
  4. DispatcherServlet invoca elUsersControllery ejecuta la lógica de negocios asociada
  5. El controlador interactúa con UserService, obtiene la lista de usuarios y la agrega al modelo
  6. El controlador devuelve el nombre de la vista lógica.usersvolver al DispatcherServlet
  7. DispatcherServlet le pide al ViewResolver configurado que resuelva elusersvista
  8. ViewResolver asigna y devuelve el archivo de vista físicausers.jsppágina
  9. Finalmente, DispatcherServlet representa los datos del modelo enusers.jspy devuelve el contenido HTML al cliente

¡Esta separación de preocupaciones con MVC hace que sea extremadamente fácil administrar la complejidad en grandes aplicaciones web!

Preguntas de entrevista para Intermediate Spring MVC

4. ¿Qué es una anotación @Controller?

El@ControllerLa anotación indica que una clase particular es un controlador web que atiende solicitudes web. Al marcar una clase POJO con la anotación @Controller, DispatcherServlet puede detectar solicitudes asignadas a ella e invocar la lógica empresarial relevante:

import org.springframework.stereotype.Controller;

@Controller
public class HomeController {

}  

Podemos utilizar además las anotaciones @RequestMapping para manejar solicitudes.

5. ¿Qué es la anotación @RequestMapping?

@RequestMappingLa anotación se utiliza para asignar solicitudes HTTP a métodos de controlador de controlador.

Por ejemplo, los siguientes mapasGET /userssolicita llamar algetAllUsers()método del controlador:

@Controller
public class UsersController {

   @RequestMapping(value = "/users", method = RequestMethod.GET)
   public String getAllUsers() {
      // Handle request
   }
}

También podemos establecer atributos adicionales como encabezados, parámetros, etc. para coincidir con las solicitudes.

6. ¿Cómo se maneja la validación en Spring MVC Framework?

Spring MVC tiene soporte de primera clase para la validación usandoValidatorinterfaces yDataBinderclases.

Algunas formas de validar datos:

  • Usar@Validanotación para invocar automáticamente validadores
  • Personalizar reglas de validación en atributos del modelo
  • ImplementarValidatorinterfaz para validación compleja
  • Utilice anotaciones de validación como@NotEmptyen los campos
  • Mostrar errores automáticamente con etiquetas de formulario Spring

7. Explique las etiquetas de formulario que ofrece Spring MVC.

Spring MVC ofrece etiquetas de enlace de formularios enriquecidas para representar formularios y vincularlos a atributos del modelo sin problemas, como:

<form:input path="name" />  
<form:errors path="name" cssClass="error"/>

Algunos otros beneficios incluyen:

  • HTML que se escapa para prevenir ataques XSS
  • Personalización con clases CSS, información de etiquetas, etc.
  • Soporte para repoblar valores de formulario existentes en caso de errores
  • Disponible como etiquetas JSP y en otras vistas como Thymeleaf

¡Esto ahorra tareas tediosas como vincular valores manualmente o errores de validación!

8. ¿Cómo manejar la carga de archivos en la aplicación web Spring?

Spring Framework proporciona soporte sencillo para la carga de archivos conMultipartResolver.

Los pasos clave son:

  • ConfigurarMultipartResolveren DispatcherServlet
  • Usar@RequestParam MultipartFile fileen el controlador
  • Guarde el archivo en el disco contransferTo()método

Por ejemplo:

@PostMapping("/upload") 
public String handleFileUpload(@RequestParam("file") MultipartFile file){
   file.transferTo(new File("/uploads" + file.getOriginalFilename()));
   // ...  
}

También podemos personalizar validaciones, carpetas de almacenamiento, etc.

9. ¿Qué es un interceptor en Spring MVC?

Un interceptor es como unFilterque puede manejar solicitudes web antes y después de manera más elegante en Spring MVC. Podemos usarlo para tareas como:

  • Comprobaciones de autenticación
  • Registro y monitoreo
  • Solicitudes de auditoría
  • Tareas comunes previas y posteriores

Podemos configurar interceptores para que activen controladores antes y después u otros interceptores también.

10. ¿Qué es la clase ModelAndView en Spring?

ElModelAndViewLa clase actúa como soporte para los datos del modelo y ve la información juntos en Spring MVC.

En lugar de devolver nombres de vistas desde el controlador, podemos devolver la instancia ModelAndView, por ejemplo:

@GetMapping("/users")
public ModelAndView getUsers() {

   // Setup model data
   List<User> users = userService.getAll(); 
   ModelAndView modelAndView = new ModelAndView("users", "users", users);

   return modelAndView;  
}

Aquí vinculamos el modelo de usuarios y representamos la plantilla de vista de "usuarios".

11. Explique la anotación @SessionAttributes

@SessionAttributesLa anotación permite almacenar atributos del modelo en la sesión HTTP para acceder a través de múltiples solicitudes del controlador.

Por ejemplo:

@Controller
@SessionAttributes("user") 
public class LoginController {
  // ...
}

Esto persiste eluseratributo de modelo en la sesión en lugar de cargarlo en cada solicitud!

Conclusión

Spring MVC es sin duda el marco web Java más popular utilizado por desarrolladores de todo el mundo para crear aplicaciones web tanto pequeñas como empresariales.

Esta amplia gama de preguntas de la entrevista de Spring MVC para principiantes, intermedios y avanzados debería ayudarle a obtener una comprensión profunda de los conceptos y patrones de Spring MVC para su próxima entrevista de desarrollador web Java.

Para profundizar más, recomiendo encarecidamente el libro Expert Spring MVC de Rod Johnson, así como las guías oficiales de Spring de Pivotal.

¡Déjame saber en los comentarios si tienes otras preguntas favoritas sobre Spring MVC!

Related Posts