2016-06-09 53 views
0

为了得到我的基本的REST的API(只得到)的工作,我创造了这个设置:春天 - RestController调度

的web.xml:

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

    <display-name>app</display-name> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
     <servlet-name>app</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

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

</web-app> 

下一个我有这个API控制器:

package packagename.controller.api; 

import java.util.concurrent.atomic.AtomicLong; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.RestController; 

import packagename.model.Home; 

@RestController 
public class HomeApiController { 

    @RequestMapping("/api/home") 
    public Home greeting() { 
     return new Home(1, "asdas"); 
    } 

} 

和实际的家庭模式:

package packagename.model; 

public class Home { 

    private final long id; 
    private final String content; 

    public Home(long id, String content) { 
     this.id = id; 
     this.content = content; 
    } 

    public long getId() { 
     return id; 
    } 

    public String getContent() { 
     return content; 
    } 
} 

当我创建war文件并将其放入我的tomcat服务器的webapps文件夹中时,我打开“localhost:8080/webappname/api/home”。

接下来我得到404错误,但我不知道为什么。

任何人都可以帮助我这个设置? 感谢和问候!

+1

您已将Spring Boot与传统Web应用程序混合使用。 RestController已经足够了,不需要指定web.xml。你需要的是去除web.xml并添加依赖项'spring-boot-starter-tomcat'并将其标记为'provided'并将'packaging'更改为'war'并且配置war插件不需要web.xml即可继续。 –

+1

是的,你可以。在servlet设置中,请使用'/ **'而不是'/'作为你的'url-pattern'。 –

+0

我增加了这个改变,但仍然404剩下.. –

回答

0

您已将Spring Boot与传统Web应用程序混合使用。

RestController已经足够了,不需要指定web.xml。

你需要的是删除web.xml和添加依赖spring-boot-starter-tomcat并将其标记为provided,改变packagingwar和配置战争插件什么情况下继续一个web.xml。

而文档http://docs.spring.io/spring-boot/docs/1.4.0.BUILD-SNAPSHOT/reference/htmlsingle/#build-tool-plugins-maven-packaging可能有帮助。

如果有任何问题,请让我知道。

+0

嘿谢谢你的回答,但有一个web应用程序以及需要web.xml ...有没有任何可能,所以他们都可以(网络应用程序和RestApi)共存?问候 –

+0

是的,你可以。请在这个项目上有一个掠夺:https://github.com/soiff-spring/spring-mvc-example。 –

+0

你为什么认为这里涉及的启动?他们已经明确表示,他们创建了一场战争并部署到了tomcat。 –