首页 > 解决方案 > Spring Boot应用程序在命中目标时下载JSP,但不是HTML

问题描述

当我点击 URL 时,它正在下载 JSP 页面,但是当我使用 HTML 页面时,它会在浏览器中呈现。|| HTML 1 - 0 JSP ||

项目结构

在此处输入图像描述

应用属性:

spring.mvc.view.prefix=/views/
spring.mvc.view.suffix=.html

控制器

在此处输入图像描述

当我添加了 tomcat-embed-jasper 依赖项时它起作用了。为什么会这样?

标签: spring-bootspring-mvcspring-web

解决方案


您可以执行以下操作:

演示控制器.java:

@Controller
public class DemoController {    
    @GetMapping("/")
    public String getLoginView(){
        return "login";  
    }       
    @GetMapping("/welcoome")
    public String welcome(){
        return "login";   
    }
}

ApplicationConfigurerAdapter.java

@Configuration
@EnableWebMvc
public class ApplicationConfigurerAdapter extends WebMvcConfigurerAdapter{

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

DemoApplication.java

@Configuration
@EnableAutoConfiguration
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

应用程序属性

server.contextPath=/
server.servlet.contextPath=/

server.port=6565

pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>   
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

您可以将其构建为 mvn 包,也可以在容器外部运行(例如 Tomcat)

项目结构 输出


推荐阅读