JSP文件未在浏览器中加载,但文件名在spring Boot Application的浏览器中显示为字符串

Posted

技术标签:

【中文标题】JSP文件未在浏览器中加载,但文件名在spring Boot Application的浏览器中显示为字符串【英文标题】:JSP file does not load in browser but file name is displayed as String in browser in spring Boot Application 【发布时间】:2019-02-21 04:08:44 【问题描述】:

index.jsp 或任何 .jsp 文件(也是 .html 文件),当我使用字符串类型方法作为索引方法时,我无法在浏览器中显示,而是文件名在浏览器中显示为字符串。 但是,如果我使用 ModelAndView 类,那么它可以正常工作。如何使用字符串类型方法显示页面? 我浏览了很多示例并访问了许多网站,包括 ***.com。波纹管所有相关文件:

    控制器类

    @SpringBootApplication
    public class DemoApplication 
    
    public static void main(String[] args) 
    SpringApplication.run(DemoApplication.class, args);
    
    @RestController
    public class AppController extends SpringBootServletInitializer 
    
    /*following method don't works*/
    @RequestMapping("/home")
    public String index()
    return "index";
    
    /*following method works fine*/
    /*   @RequestMapping("/home")
    public ModelAndView modelAndView()
    return new ModelAndView("index");
    */
    
    

    POM.xml

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- JSTL for JSP -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    
    <!-- Need this to compile JSP -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    

    Application.properties

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

    输出:

预期的页面应如下所示: 文件夹位置没问题。我多次尝试使用不同的 IDE 和文件位置的各种组合,以及 pom.xml 中的所有依赖项。但是每次都会出错。

【问题讨论】:

使用@Controller 而不是@RestController 【参考方案1】:

发生这种情况是因为 @RestController 正在将响应发送到浏览器主体,因此要返回 JSP 页面,请改用 @Controller 注释。

@RestController 更改为@Controller

@Controller 用于将类标记为 Spring MVC Controller。 @RestController 是一个方便的注解,它只不过是添加了@Controller@ResponseBody 注解(参见:[Javadoc][1])

查看两者之间的区别。 Difference between spring @Controller and @RestController annotation

【讨论】:

【参考方案2】:

这是由于 @RestController 注释而发生的,因为当我们想要以 JSON 格式返回内容时会使用它。 --> 您可以将注解更改为@Controller 否则返回包含您的 JSP 文件的模型

【讨论】:

以上是关于JSP文件未在浏览器中加载,但文件名在spring Boot Application的浏览器中显示为字符串的主要内容,如果未能解决你的问题,请参考以下文章

CSS静态文件未在Django中加载

bootstrap.yml 未在 Spring Boot 2 中加载

装饰器未在JBOSS 7和jdk8中加载

从 jar 运行时 CSS 未在 Spring Boot 中加载

DJANGO:静态文件未在实时服务器中加载(但在本地加载)?

CSS未在spring boot应用程序中加载