Spring MVC-Dispatcher Servlet找不到任何页面

时间:2019-10-07 17:05:50

标签: spring spring-mvc jsp

我使用Spring mvcJava class annotations.jsp而非.html做了一个非常简单的演示Web应用程序。 当我在本地主机上启动Tomcat时-我总是收到404错误。我在哪里犯错?

Config.class

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.mylov.springsecurity.demo.config")
public class Config {

    //Define bean for ViewResolver
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/view/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
}

调度程序Servlet初始化

public class DispatcherServletInit extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{Config.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

控制器

@Controller
public class DemoController {

    @GetMapping({"", "/"})
    public String showHome() {
        return "home";
    }
}

项目结构:

enter image description here

2 个答案:

答案 0 :(得分:1)

您需要扫描 demo 软件包下的软件包。因此,Spring将找到您的Controllers和Config类。但是现在您仅指向配置。因此不会扫描软件包“ controller”。

尝试执行以下操作:

@ComponentScan(basePackages = "com.mylov.springsecurity.demo")

答案 1 :(得分:0)

尝试提供如下所示的映射,以便所有url均与servlet映射:

public class DispatcherServletInit extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{Config.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/*"};
    }
}

还要将基本软件包更改为以下内容,以便也可以拾取控制器类以进行组件扫描:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.mylov.springsecurity.demo")
public class Config {
..........
}