Skip to content

Instantly share code, notes, and snippets.

@alexandreaquiles
Created March 29, 2021 18:04
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save alexandreaquiles/4a626664bb57c97e820bd03b51dc83ac to your computer and use it in GitHub Desktop.
Save alexandreaquiles/4a626664bb57c97e820bd03b51dc83ac to your computer and use it in GitHub Desktop.
Como usar JSP com Spring Boot?

Como usar JSP com Spring Boot?

Passo a passo

No pom.xml, adicione as seguintes dependências:

<!-- JSP-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

No application.properties, adicione as seguintes linhas:

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

Pronto! Agora coloque suas JSPs no diretório src/main/webapp/WEB-INF/views.

Por que as JSPs não funcionam por padrão no Spring Boot?

Na documentação do Spring Boot, são listadas algumas template engines que, assim como a JSP, geram um HTML:

As template engines mencionadas anteriormente são completamente controladas pelo Spring Boot.

Já com as JSPs, é o Servlet Container que transforma a JSP em uma Servlet.

Por padrão, o Spring Boot tem um Tomcat embutido, sem a necessidade de instalação. Mas o tratamento das JSPs é feito pelo Tomcat, não pelo Spring Boot.

Além do Tomcat, o Spring Boot suporta o Jetty (um Servlet Container como o Tomcat) e o Undertow. O Undertow não oferece suporte a JSPs.

Algumas limitações de usar JSPs em projetos Spring Boot:

  • Testes automatizados que usam @WebMcTest não conseguem obter o texto do HTML renderizado, limitando as verificações que podem ser feitas nos testes.
  • Páginas de erro customizadas não funcionam quando usamos JSPs com Spring Boot.
@henriqueln7
Copy link

Simples e direto ao ponto :)
Precisei colocar o JSP em um projeto Spring e as informações que achei na internet eram realmente confusas e divergentes, essa aqui foi a melhor que obtive.

Só uma dúvida. Qual seria a principal vantagem do JSP em cima dessas outras templates engines? Ou é mais por questão de preferência e gosto e qualquer uma te deixará bem atendido?

@alexandreaquiles
Copy link
Author

m um projeto Spring e as informações que achei na internet eram realmente confusas e divergentes, essa aqui foi a melhor que obtive.

Um argumento a favor seria a migração de um projeto que já usa JSP no Tomcat, talvez até com Spring MVC mesmo, para usar Spring Boot. Aí, as views não precisariam ser reescritas.

Outro argumento é o conhecimento dos devs do projeto.

Mas, pra projetos começando do zero, não sei se faz sentido, devido às limitações descritas acima.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment