最近在看spring实战的第五章springmvc,了解到了在使用springmvc时,我们原来的做法是需要将dispatcherservlet配置在xml中,而如今我们可以舍弃这种做法而选择配置在java类中(即完全不需要xml了)。但我在实现的时候按照书上的源码打,最后想在web页面中验证springmvc却开不开jsp动态网页,报404错误(是不是哪里地方需要启动这个java类而我却没有启动呢)。求高手指点,下面将po出我的源码
//这个类替代了原先的dispatcherservlet
public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return new Class<?>[]{RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class<?>[]{WebConfig.class};
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[]{"/"};
}
}
//这个类是由dispatcherservlet加载应用上下文
@Configuration
@EnableWebMvc
@ComponentScan("spittr.web")
public class WebConfig extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver=new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){
configurer.enable();
}
}
//这个类是由ContextLoaderListener加载应用上下文
@Configuration
@ComponentScan(basePackages={"spittr"},excludeFilters={@Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)})
public class RootConfig {
}
配置完这三个类之后我就在项目目录WEB-INF下面创建了index页面,然而却打不开这个页面,报404,去掉之前那三个类就可以正常运行这个页面。希望高手指出错误在哪里
本人也正在学习中。。。
加了Controller了吗??
之前有点忙,今天上了csdn看了这个帖子才想起来忘记回复。
上面的配置完完全全可以实现无XML的配置,之前的错误是因为关于jdk的版本,不知道为何我用1.8的版本会报错,换了1.7之后框架就跑了起来。
这个帖子也正好可以给一些朋友们作为参考!
我之前也是遇到类似的问题,Spring4支持JDK1.8, 当时我用的是Spring3所以所以挂了。
检查你的lib目录下是不是已经添加spring相关jar包。ps:不是添加在Libraries