2015-06-21 224 views
0

我已經在SO中看到了很多這樣的問題,並且我嘗試了他們的解決方案,但他們沒有爲我工作,所以我會發布這一個。基本上我只是建立一個項目,並試圖讓我的RequestMapping工作,只是爲了返回一個字符串。所以這是我的代碼Maven - Spring請求映射404錯誤

的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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>ve.com</groupId> 
    <artifactId>mavenDWP</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

<properties> 
    <spring.version>4.1.6.RELEASE</spring.version> 
</properties> 

<dependencies> 
    <!-- Spring --> 
    <dependency> 
<groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>${spring.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId> 
    <version>${spring.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-web</artifactId> 
    <version>${spring.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-beans</artifactId> 
    <version>${spring.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-jpa</artifactId> 
    <version>1.8.0.RELEASE</version> 
</dependency> 

<!-- CGLIB is required to process @Configuration classes --> 
<dependency> 
    <groupId>cglib</groupId> 
    <artifactId>cglib</artifactId> 
    <version>2.2.2</version> 
</dependency> 

<!-- Servlet API, JSTL --> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1.0</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet.jsp</groupId> 
    <artifactId>javax.servlet.jsp-api</artifactId> 
    <version>2.3.1</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>jstl</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
</dependency> 
<dependency> 
    <groupId>cglib</groupId> 
    <artifactId>cglib</artifactId> 
    <version>2.2.2</version> 
</dependency> 

<!-- Jackson --> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.5.4</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.5.4</version> 
</dependency> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.9.13</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-hibernate4</artifactId> 
    <version>2.5.4</version> 
</dependency> 

<!-- MySQL --> 
<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.35</version> 
</dependency> 

<!-- Hibernate --> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>4.3.10.Final</version> 
</dependency> 

<!-- JSONDoc --> 
<dependency> 
    <groupId>org.jsondoc</groupId> 
    <artifactId>jsondoc-core</artifactId> 
    <version>1.1.15</version> 
</dependency> 
    <dependency> 
    <groupId>org.jsondoc</groupId> 
    <artifactId>jsondoc-springmvc</artifactId> 
    <version>1.1.15</version> 
</dependency> 
    <dependency> 
    <groupId>org.jsondoc</groupId> 
    <artifactId>jsondoc-ui-webjar</artifactId> 
    <version>1.1.15</version> 
</dependency> 


</dependencies> 

<build> 
<plugins> 
    <plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
    </plugin> 
    <plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.4</version> 
    </plugin> 
</plugins> 

的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>AngularSpring</display-name> 
    <servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/api/*</url-pattern> 
    </servlet-mapping> 
    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
</web-app> 

調度-servlet.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 
<context:component-scan base-package="ve.com" use-default-filters="false"> 
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 
</context:component-scan> 

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
      <property name="objectMapper"> 
       <bean class="ve.com.HibernateAwareObjectMapper" /> 
      </property> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

<bean id="documentationController" class="org.jsondoc.springmvc.controller.JSONDocController"> 
    <constructor-arg name="version" value="1.0"/> 
    <constructor-arg name="basePath" value="http://localhost:4848/mavenDWP/api"/> 
    <constructor-arg name="packages"> 
    <list> 
    <value>ve.com</value> 
    </list> 
    </constructor-arg> 
</bean> 

LinkController

package ve.com.controller; 

import org.jsondoc.core.annotation.ApiMethod; 
import org.jsondoc.core.annotation.ApiResponseObject; 
import org.jsondoc.core.annotation.ApiVersion; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RestController; 

@Controller 
@ApiVersion(since="1.0") 
@RequestMapping("/show") 
public class LinkController { 

    @Autowired 
    private StockService stockService; 

    @RequestMapping(method = RequestMethod.GET, value="/hello") 
    public String showHello() { 
     return "hello"; 
    }   
} 

好基本上這就是我的代碼..不過我瀏覽到http://localhost:4848/mavenDWP/api/show/hello,我只是得到一個404錯誤。有任何想法嗎?

+1

削減你的榜樣一直到尺寸。沒有人想穿過100行的pom.xml。 – Teepeemm

+0

如果刪除'jasondoc',問題是否會持續存在? –

+0

仍然無法解決它。我無法刪除jsondoc,因爲我需要它來做一些註釋 – arrigonfr

回答

1

添加@ResponseBody註釋。每次當你返回一些不是類內部構建的東西,比如ModelAndView,你需要使用這個註解。見docs

作爲建議,即使您有少量數據要發送到客戶端,也要嘗試使用地圖。地圖將被轉換爲JSON並且可以輕鬆地進行交流。

0

一切都很好,嘗試僅僅指剛在web.xml中刪除空格beteween 的servlet類和org.springframework.web.servlet.DispatcherServlet

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 

好運