java - Maven - Spring RequestMapping 404 错误

标签 java spring hibernate maven spring-mvc

我在 SO 中看到了很多这样的问题,并且我尝试了他们的解决方案,但它们对我不起作用,所以我将发布这个问题。基本上我只是设置一个项目并尝试让我的 RequestMapping 工作,只是为了返回一个字符串。这是我的代码

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>

链接 Controller

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 错误。有什么想法吗?

最佳答案

添加@ResponseBody注释。每次当您返回不是类中构建的内容(例如 ModelAndView)时,您都需要使用此注释。请参阅docs

作为建议,即使您有少量数据要发送给客户端,也请尝试使用 map 。 map 将转换为 JSON 并且可以轻松访问。

关于java - Maven - Spring RequestMapping 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30968853/

相关文章:

java - java.lang.NoSuchMethodError:org.apache.hadoop.hive.metastore.HiveMetaStoreClient.alter_table

java - 如何稍后在调用 save() 的同一方法中使用 Jpa 存储库 save() 中的结果对象?

spring - 我需要为哪些实体创建 Spring Data 存储库?

hibernate - Spring中的LazyInitializationException

java - 在 hibernate 查询中给出条件以获取开始日期为上个月日期的值,即当前月份减 1

java - 使用 Java 和 AMQP 1.0 连接到 Windows Server (1.1) 上的服务总线

java - 在代码中删除XML文件中的内容

java - Hibernate : org. hibernate.QueryParameterException:无法找到命名参数

java - 如何为我的 Spring 3/Hibernate 4 LocalSessionFactoryBean 设置事件监听器?

Java反射-寻找具有特定注释的方法及其注释元素