我在使用 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/
下
Maven
javax.servlet javax.servlet-api 3.1.0 provided ... org.springframework spring-webmvc 4.1.5.RELEASE commons-logging commons-logging
请问一下,为什么我在访问 `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
下即可...