2016-11-09 372 views
1

我試圖遵循一個基本的教程,讓我的應用程序啓動和運行,一個在這裏找到:http://websystique.com/springmvc/spring-4-mvc-rest-service-example-using-restcontroller/HTTP狀態404

目前,我有以下類:

AppConfig.java:

package com.cgi.miam.config; 

import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 

@Configuration 
@ComponentScan("com.cgi.miam") 
@EnableWebMvc 
public class AppConfig extends WebMvcConfigurerAdapter { 

} 

WebAppInitializer.java:

package com.cgi.miam.config; 

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; 

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class[] getRootConfigClasses() { 
     return new Class[] { AppConfig.class }; 
    } 

    @Override 
    protected Class[] getServletConfigClasses() { 
     return null; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/*" }; 
    } 
} 

個MemberController.java:

package com.cgi.miam.controller; 

import org.springframework.http.HttpStatus; 
import org.springframework.http.ResponseEntity; 
import org.springframework.web.bind.annotation.GetMapping; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 

@RestController 
public class MemberController { 

    @RequestMapping("/") 
    public String welcome() {// Welcome page, non-rest 
     return "Welcome to RestTemplate Example."; 
    } 

    @GetMapping("/person/{id}") 
    public ResponseEntity getCustomer(@PathVariable("id") Integer id) { 

     return new ResponseEntity("test", HttpStatus.OK); 
    } 
} 

而且我的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.cgi.miam</groupId> 
    <artifactId>miamWebApp</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>miamWebApp Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.3.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.3.3.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>4.3.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>4.3.3.RELEASE</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>4.0.0-b01</version> 
     </dependency> 

     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.8.4</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.dataformat</groupId> 
      <artifactId>jackson-dataformat-xml</artifactId> 
      <version>2.8.4</version> 
     </dependency> 

    </dependencies> 
    <build> 
     <finalName>SpringRest</finalName> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.2</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-war-plugin</artifactId> 
        <version>2.4</version> 
        <configuration> 
         <warSourceDirectory>src/main/webapp</warSourceDirectory> 
         <warName>MemberInformation</warName> 
         <failOnMissingWebXml>false</failOnMissingWebXml> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 

</project> 

我已經部署在Tomcat中9.0在Eclipse中,它成功地啓動。但是,如果我轉到http://localhost:8080/MemberInformation/http://localhost:8080/MemberInformation/personhttp://localhost:8080/MemberInformation/person/2,我總是會找到404。看起來,所有的教程都可以在這時開始並獲取信息,但在這裏看起來似乎不起作用。當我瀏覽到http://localhost:8080/manager時,'MemberInformation'應用程序似乎已被部署。有小費嗎?

+0

爲什麼'/ MemberInformation/...'? – jonrsharpe

+0

您是否在WARM中部署WAR文件? –

+0

@jonrsharpe我用我的pom更新了我的問題。 – Joetjah

回答

0

看來,我的問題是在我部署web服務的方式。在pom.xml以下部分:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <warSourceDirectory>src/main/webapp</warSourceDirectory> 
     <warName>MemberInformation</warName> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
    </configuration> 
</plugin> 

引發的戰爭文件部署到該位置,即使該應用程序被添加到Eclipse中Tomcat服務器,它沒有部署。解決方案是註釋掉這部分的pom,或將生成的war文件傳輸到Tomcat Webapps文件夾。

0

問題似乎是Spring無法找到您的RestController。在您的@Configuration中,請注意您需要如何指定基礎包。試試這個:

@ComponentScan(basePackages = "com.cgi.miam") //will look into com.cgi.miam.controller as well 

,而不是..

@ComponentScan("com.cgi.miam") 
+0

我想到了這一點,因爲其他一些答案指出,你會看到Tomcat登錄啓動時發生的事情,而我卻沒有。但是,根據你的建議改變它不幸的是沒有工作。 – Joetjah

+0

你在瀏覽器的網絡選項卡中看到的是什麼? – Mechkov

+0

這是紅色的,404響應/ MemberInformation / – Joetjah