2016-06-09 55 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。 –