我正在尝试使用AbstractAnnotationConfigDispatcherServletInitializer
而不是web.xml文件初始化我的Web应用程序。我已经在我自己的MySocialNetworkWebAppInitializer
课程中扩展了这门课程:
public class MySocialNetworkWebAppInitializer
extends AbstractAnnotationConfigDispatcherServletInitializer
{
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class };
}
}
我已经实现了一个控制器HomeController
来侦听“/”处的请求。当我运行应用程序时,我得到以下内容:
HTTP状态404 - 未找到...原始服务器未找到目标资源的当前表示,或者不愿意透露该目标资源是否存在。
当我创建项目时,默认情况下有一个web.xml文件,我已将其删除,因为我想使用MySocialNetworkWebAppInitializer
。为了使用这个新的初始化程序运行应用程序,我缺少什么?
我的项目设置如下所示:
我的HomeController.java
:
package com.petehallw.mysocialnetwork.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home() {
return "home";
}
}
我的WebConfig.java
:
@Configuration
@EnableWebMvc
@ComponentScan("com.petehallw.mysocialnetwork.web")
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
我的项目结构有问题吗?如何让它了解我的初始化程序?
我注意到我服务器中对'web.xml'的引用。我如何将其指向我的初始化器?