Integración JSP
En términos generales, SpringBoot no recomienda directamente el uso de páginas JSP, pero no descarta los escenarios que deben utilizarse en el trabajo real. Entonces, ¿cómo integra SpringBoot JSP? Debido a que el Tomcat incorporado de SpringBoot no integra el soporte para expresiones JSP o EL, el uso de JSP primero debe integrar las dependencias relevantes.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
Además de introducir las dependencias necesarias mencionadas anteriormente, también necesitamos configurar el diagrama de resolución de la vista. El resolutor de vista relacionado también se presenta en Spring MVC, como sigue:
En SpringBoot, solo necesitamos configurar el archivo application.properties
spring.mvc.view.prefix=/WEB-INF/views/jsp/
spring.mvc.view.suffix=.jsp
Entonces, si necesita admitir múltiples resoluciones de vista en su proyecto, ¿cómo los configura? Si necesita admitir html y jsp, la forma que presentamos antes de aprender SpringMVC se configura en xml, de la siguiente manera:
Entonces, ¿cómo debemos configurar en SpringBoot? No podemos usar la configuración web. De hecho, es lo mismo que nuestra introducción anterior de SpringMVC que no usa la configuración xml y usa anotaciones. Los métodos de configuración de anotación previos utilizados en SpringMVC son los siguientes:
A continuación, echemos un vistazo a cómo configurar capturas de pantalla de varias vistas en SpringBoot. Puede ver que se agrega un inspector, que en realidad es lo mismo que nuestra configuración en xml.
public class HandleResourceViewExists extends InternalResourceView {
@Override
public boolean checkResource(Locale locale) {
File file = new File(this.getServletContext().getRealPath("/") + getUrl());
return file.exists(); //判断页面是否存在
}
}
Entonces solo necesitamos crear el archivo de ruta correspondiente para acceder
Nota: Si de acuerdo con la configuración anterior, cuando estamos probando, si el archivo html no se encuentra primero, y luego va al archivo jsp, entonces no hay problema, pero si el archivo html se encuentra y se accede directamente, informará un error, ¿por qué? ? Debido a que html es un recurso estático, también debemos configurarlo para permitir el acceso a recursos estáticos
Motor de plantillas
Como mencionamos anteriormente, no se recomienda que SpringBoot use JSP. Sí, se recomienda que usemos un motor de plantillas para renderizar html. Entre ellos, SpringBoot recomienda encarecidamente usar thymeleaf. El uso de thymeleaf en SpringBoot es muy simple. Primero introduzca las dependencias
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Luego, debemos resources
crear una templates
carpeta debajo del archivo de acuerdo con las especificaciones , de la siguiente manera:
El contenido de index.html es el siguiente:
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<head lang="en">
<meta charset="UTF-8"/>
</head>
<body>
<h1 th:text="${value}"/>
</body>
</html>
Luego creamos una solicitud de acceso en el Controlador, recuerde que necesitamos comentar la resolución de vista configurada anteriormente y luego probarla.
@Controller
//@RestController
public class DemoController {
@RequestMapping("/index")
public String testThymeleaf(ModelMap map) {
map.addAttribute("value", "Hello World");
return "index";
}
}