Hello! I use spring boot + jsp. I can not understand why jsp file is given simply as a resource, and how to fix it (I do not even know what else to attach ... enter image description here

The essence of the problem

package com.gmail.nedoluga.yaroslav.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.*; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; @Configuration @EnableWebMvc @ComponentScan("com.gmail.nedoluga.yaroslav") public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/pages/**").addResourceLocations("/pages/").setCachePeriod(180); registry.addResourceHandler("/pages/css/**").addResourceLocations("/pages/css/"); registry.addResourceHandler("/pages/fonts/**").addResourceLocations("/pages/fonts/"); registry.addResourceHandler("/pages/img/**").addResourceLocations("/pages/img/"); registry.addResourceHandler("/pages/js/**").addResourceLocations("/pages/js/"); } @Bean public InternalResourceViewResolver setupViewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setViewClass(JstlView.class); resolver.setPrefix("/pages/WEB-INF/"); resolver.setSuffix(".jsp"); resolver.setOrder(1); return resolver; } @Override public void configureDefaultServletHandling( DefaultServletHandlerConfigurer configurer) { configurer.enable(); } } 
  • Take a close look at the first line of the addResourceHandlers method. What do you think she does? - Pavel Mayorov

3 answers 3

By default, Tomcat, which is used in Spring Boot, does not support JSP (and developers do not recommend using it). In order to enable JSP support, you need to add additional dependencies to pom.xml :

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

    Remove the line

     registry.addResourceHandler("/pages/**").addResourceLocations("/pages/").setCachePeriod(180); 

    It instructs spring to treat your jsp-shki as static files.

      In the beginning of the .jsp file add:

       <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
      • Thank you, but unfortunately it did not work! :( - user225844