SpringMVC 中 WebApplicationInitializer 没有被加载

我在使用 SpringMVC 中的 AbstractAnnotationConfigDispatcherServletInitializer 来实现使用 java 配置 servlet。

我在访问 localhost:8080/ 出现的是 404 错误,下面是相关代码

WebAppInitializer

public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override

protected Class<?>[] getServletConfigClasses() {

return new Class<?>[]{ WebConfig.class };

}

@Override

protected Class<?>[] getRootConfigClasses() {

return new Class<?>[]{ RootConfig.class };

}

@Override

protected String[] getServletMappings() {

return new String[]{"/"};

}

}

WebConfig

@Configuration

@EnableWebMvc

@ComponentScan("spittr.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();

}

}

HomeController

@Controller

public class HomeController {

@RequestMapping(value = "/",method = GET)

public String home(){

return "home";

}

}

home.jsp 文件在 WEB-INF/views/

project-structure

Maven

 <dependencies>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.1.0</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version> 4.1.5.RELEASE</version>

<exclusions>

<exclusion>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

</exclusion>

</exclusions>

</dependency>

...

</dependencies>

请问一下,为什么我在访问 `localhost:8080/` 出现的是 404 错误

回答:

找到答案了... Intellij IDEA 在导出 artfacts 的时候,导出了这样的结构:

artfacts/

--/ META-INF

--/ WEB-INF

--/ veiws

--/ home.jsp

--/ classes

--/(class文件)

参照 Tomcat 7.0 Standard Directory Layout,可以发现。

这里没有 /WEB-INF/lib 这个文件夹用来包含编译所需的依赖包... 项目没有自动帮你配置好...

而且导出的 artfacts 还没有报错信息...

自己去 Project Structure 内去改变 out_put 的内容,将依赖包放入 /WEB-INF/lib 下即可...

以上是 SpringMVC 中 WebApplicationInitializer 没有被加载 的全部内容, 来源链接: utcz.com/p/177904.html

回到顶部