Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从web.xml迁移到JavaConfig_Java_Xml_Spring_Spring Mvc_Servlet 3.0 - Fatal编程技术网

从web.xml迁移到JavaConfig

从web.xml迁移到JavaConfig,java,xml,spring,spring-mvc,servlet-3.0,Java,Xml,Spring,Spring Mvc,Servlet 3.0,我正在启动一个新的SpringMVC项目,我想用注释完成所有配置。我认为我遇到的问题是将web.xml迁移到AppInitializer,因为当我进行更改并使用新配置部署应用程序时,我得到了404的url,该url在更改之前工作正常 我当前的web.xml是: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://ww

我正在启动一个新的SpringMVC项目,我想用注释完成所有配置。我认为我遇到的问题是将web.xml迁移到AppInitializer,因为当我进行更改并使用新配置部署应用程序时,我得到了404的url,该url在更改之前工作正常

我当前的web.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <servlet>
        <servlet-name>sample</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextClass</param-name>
            <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
        </init-param>

        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>ar.com.orangebit.springMvcQuickstart.config</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>sample</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
在上面的类中,当我创建一个
gradlejettyrunwar
并输入
localhost:8080
时,我看到的是META-INF和WEB-INF目录,而不是webapp的主页


如果您想查看项目的其余部分,当前的代码是打开的

只有在您使用jetty插件时才会出现问题。如果您使用Tomcat在IDE中运行应用程序,或者将其打包到war中并将其部署到Tomcat,那么它就可以正常工作

我猜jetty插件与Servlet3初始值设定项不能很好地配合使用

看看你的代码,我看到你使用了Spring4,因此我建议你看看


如果您使用它,您将能够删除大多数Spring配置文件,并且它内置了对嵌入式Tomcat和Jetty的支持(我实际上没有使用这个选项)这在IDE和Maven和Gradle等构建工具中都能完美地工作。

AppInitializer中的addMapping应该是“/”唯一正确的,而不是“/*@KaribasappaGC我刚刚尝试过,但结果是一样的
public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext)
            throws ServletException {
        WebApplicationContext context = getContext();
        servletContext.addListener(new ContextLoaderListener(context));
        ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
                "DispatcherServlet", new DispatcherServlet(context));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/*");
    }

    private AnnotationConfigWebApplicationContext getContext() {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.setConfigLocation("ar.com.orangebit.springMvcQuickstart.config");
        return context;
    }

}