无法在Spring Boot中加载视图

时间:2018-07-17 10:53:34

标签: java spring-mvc jsp spring-boot

我已经尝试了几个小时,似乎无法解决此问题。我有一个简单的Spring Boot应用程序。

这些是重要文件:

DemoApplication.java

package com.whatever.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

import com.whatever.config.ConfigurationSettings;

@SpringBootApplication
@ComponentScan(basePackages = {"com.whatever.controllers", "com.whatever.config"})

public class DemoApplication{
    public static void main(String[] args) {
        Class[] sources = {DemoApplication.class, ConfigurationSettings.class};

        SpringApplication.run(sources, args);

        System.out.println("Hello WORLD!");
    }
}

MainController.java

package com.whatever.controllers;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
@RequestMapping("/")
public class MainController{

    @RequestMapping("/welcome")
    public ModelAndView welcome(){
        System.out.println("WELCOME!");

        ModelAndView mAndView = new ModelAndView();

        mAndView.setViewName("welcome");
        return mAndView;
    }
}

ConfigurationSettings.java

package com.whatever.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
public class ConfigurationSettings extends WebMvcConfigurationSupport{

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

我的项目结构:

--src
   --main
      --com.whatever.config
      --com.whatever.controllers
      --com.whatever.demo
   --webapp
      --WEB-INF
         welcome.jsp

但是,它无法加载 welcome.jsp 页面,而我继续获得/ error页面。 我似乎无法理解问题。 任何帮助表示赞赏。

P.S:我得到了“你好,世界!”和“欢迎!”控制台上的消息。所以,我知道控件到达了那里。

StackTrace说:

2018-07-17 16:40:19.869 DEBUG 11004 --- [-auto-13-exec-9] o.s.w.servlet.view.BeanNameViewResolver  : No matching bean found for view name 'welcome'
2018-07-17 16:40:19.869 DEBUG 11004 --- [-auto-13-exec-9] o.s.b.f.s.DefaultListableBeanFactory     : Invoking afterPropertiesSet() on bean with name 'welcome'
2018-07-17 16:40:19.869 DEBUG 11004 --- [-auto-13-exec-9] o.s.b.f.s.DefaultListableBeanFactory     : Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2018-07-17 16:40:19.869 DEBUG 11004 --- [-auto-13-exec-9] o.s.b.f.s.DefaultListableBeanFactory     : Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2018-07-17 16:40:19.870 DEBUG 11004 --- [-auto-13-exec-9] o.s.web.servlet.DispatcherServlet        : Rendering view [org.springframework.web.servlet.view.JstlView: name 'welcome'; URL [/WEB-INF/welcome.jsp]] in DispatcherServlet with name 'dispatcherServlet'
2018-07-17 16:40:19.871 DEBUG 11004 --- [-auto-13-exec-9] o.s.web.servlet.view.JstlView            : Forwarding to resource [/WEB-INF/welcome.jsp] in InternalResourceView 'welcome'
2018-07-17 16:40:19.872 DEBUG 11004 --- [-auto-13-exec-9] o.s.web.servlet.DispatcherServlet        : Successfully completed request
2018-07-17 16:40:19.875 DEBUG 11004 --- [-auto-13-exec-9] o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/error]
2018-07-17 16:40:19.875 DEBUG 11004 --- [-auto-13-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Looking up handler method for path /error
2018-07-17 16:40:19.876 DEBUG 11004 --- [-auto-13-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Did not find handler method for [/error]

2 个答案:

答案 0 :(得分:1)

您已在控制器代码中添加@RestController,如果要查看jsp页面,则需要将其删除并更改为@Controller,因为@RestController将添加{{1 }} 至  自动控制方法

@ResponseBody

答案 1 :(得分:0)

您已经使用@RestController,而不是@Controller,它将解决您的问题

请尝试如下操作,

package com.whatever.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

import com.whatever.config.ConfigurationSettings;

@Controller
public class MainController{

    @RequestMapping("/welcome")
    public String welcome(){
        System.out.println("WELCOME!");
        return "welcome";
    }
}