【问题标题】:Spring MVC - Page Not FoundSpring MVC - 找不到页面
【发布时间】:2016-07-25 17:10:58
【问题描述】:

这是我的项目:

WebConfig.java:

@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter{

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("index");
}

public InternalResourceViewResolver internalResourceViewResolver() {

    InternalResourceViewResolver resolver = new         InternalResourceViewResolver();
    //strings to views
    //success from a controller -* prefix/success/suffix
    //success from a controller -* /WEB-INF/pages/success.jsp
    resolver.setPrefix("/WEB-INF/pages/");
    resolver.setSuffix(".jsp");

    return resolver;
}
}

AppInitializer.java:

public class WebAppInitializer implements WebApplicationInitializer{

public void onStartup(ServletContext container) throws ServletException {
    AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
    rootContext.register(WebConfig.class);

    container.addListener(new ContextLoaderListener(rootContext));

    DispatcherServlet dispatcherServlet = new DispatcherServlet(rootContext);

    ServletRegistration.Dynamic registration = container.addServlet("dispatcherServlet", dispatcherServlet);
    registration.setLoadOnStartup(1);
    registration.addMapping("/");
}

}

PS:我的“index.jsp”页面位于:/WEB-INF/pages/

我仍然没有得到索引页:它说它没有找到。 感谢您的帮助。

【问题讨论】:

  • 为什么你认为应该获取索引页?您认为这里的应用程序配置的哪一部分服务于它?你为什么这么认为?
  • 好吧,我按照教程做了,这个人确实得到了他的页面,我想知道为什么是我!而且我已经将默认的“/”映射到“索引”,所以我在这里看不到问题..
  • 你能链接到教程吗?你认为你的internalResourceViewResolver() 方法是用来做什么的?
  • link。而且我认为该方法应该搜索并指向视图,不?

标签: java spring jsp spring-mvc web


【解决方案1】:

尝试将@Bean 注解添加到该解析器并将@ComponentScan(basePackages = "yourPackages") 添加到配置类

尝试改写解析器:

@Bean
public ViewResolver viewResolver()
{
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");

    return viewResolver;
}

【讨论】:

  • 非常感谢!!但我能解释一下它到底是做什么的吗(我的意思是方法)
  • 它设置视图解析器,由Java注解配置。视图解析器负责在春季按名称解析视图。例如,如果您在控制器中有映射方法并且该映射返回字符串,则该解析器负责在我们的视图页面中搜索该名称。
  • 最后一个问题:为什么我们需要将其设置为 bean?
  • @Bean 用于显式声明单个 bean,而不是像上面那样让 Spring 自动完成。它将 bean 的声明与类定义分离,并允许您完全按照您的选择创建和配置 bean。 Spring 在需要时从上下文中获取该 bean。他知道他正在等待容器中的一些动作:)
猜你喜欢
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多