我正在学习Spring MVC,并且我有一个使用xml的简单Web应用程序。该应用程序运行完美。之后,我尝试仅使用Java代码(无xml)来做相同的应用程序。因此,我创建了一个新的Web应用程序,删除了web.xml
和另一个xml文件,并添加了2个用于配置的类。
这是第一类配置:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.dgs.springdemo")
public class DemoAppConfig {
// define a bean for ViewResolver
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
第二堂课
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class MySpringMvcDispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { DemoAppConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
如果我运行该应用程序,则会出现以下错误:“本地主机上的Server Tomcat v9.0 Server无法启动。”
然后我在控制台中收到此消息:
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring-mvc-java-code]]
...
Caused by: java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found. This is not legal with relative ordering. See section 8.2.2 2c of the Servlet specification for details. Consider using absolute ordering.
我已经在线搜索了解决方案,我发现需要在<absolute-ordering/>
中添加web.xml
。但是我没有web.xml
,因为我只使用Java代码(没有xml)。另外我不使用Maven。请帮我。任何反馈将不胜感激。