我在使用 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
<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
的時候,導出了這樣的結構:參考 Tomcat 7.0 Standard Directory Layout,可以發現。
這裡沒有
/WEB-INF/lib
這個資料夾用來包含編譯所需的依賴套件... 專案沒有自動幫你配置好...而且導出的
artfacts
還沒有報錯訊息...自己去
Project Structure
內去改變out_put
的內容,將依賴套件放入Project Structure
内去改变out_put
的内容,将依赖包放入/WEB-INF/lib
下即可...