2016-11-09 203 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