【问题标题】:why No mapping found for HTTP request with URI while making webservice? [duplicate]为什么在制作 web 服务时没有找到带有 URI 的 HTTP 请求的映射? [复制]
【发布时间】:2015-03-16 05:50:53
【问题描述】:

我正在尝试在春季制作 json webservice。所以我执行以下步骤

  • 添加以下库

Spring 库

asm-3.3.1.jar
jersey-bundle-1.14.jar
spring-aop-4.1.3.RELEASE-javadoc.jar
spring-aop-4.1.3.RELEASE-sources.jar
spring-aop-4.1.3.RELEASE.jar
spring-aspects-4.1.3.RELEASE-javadoc.jar
spring-aspects-4.1.3.RELEASE-sources.jar
spring-aspects-4.1.3.RELEASE.jar
spring-beans-4.1.3.RELEASE-javadoc.jar
spring-beans-4.1.3.RELEASE-sources.jar
spring-beans-4.1.3.RELEASE.jar
spring-context-4.1.3.RELEASE-javadoc.jar
spring-context-4.1.3.RELEASE-sources.jar
spring-context-4.1.3.RELEASE.jar
spring-context-support-4.1.3.RELEASE-javadoc.jar
spring-context-support-4.1.3.RELEASE-sources.jar
spring-context-support-4.1.3.RELEASE.jar
spring-core-4.1.3.RELEASE-javadoc.jar
spring-core-4.1.3.RELEASE-sources.jar
spring-core-4.1.3.RELEASE.jar
spring-expression-4.1.3.RELEASE-javadoc.jar
spring-expression-4.1.3.RELEASE-sources.jar
spring-expression-4.1.3.RELEASE.jar
spring-instrument-4.1.3.RELEASE-javadoc.jar
spring-instrument-4.1.3.RELEASE-sources.jar
spring-instrument-4.1.3.RELEASE.jar
spring-instrument-tomcat-4.1.3.RELEASE-javadoc.jar
spring-instrument-tomcat-4.1.3.RELEASE-sources.jar
spring-instrument-tomcat-4.1.3.RELEASE.jar
spring-jdbc-4.1.3.RELEASE-javadoc.jar
spring-jdbc-4.1.3.RELEASE-sources.jar
spring-jdbc-4.1.3.RELEASE.jar
spring-jms-4.1.3.RELEASE-javadoc.jar
spring-jms-4.1.3.RELEASE-sources.jar
spring-jms-4.1.3.RELEASE.jar
spring-messaging-4.1.3.RELEASE-javadoc.jar
spring-messaging-4.1.3.RELEASE-sources.jar
spring-messaging-4.1.3.RELEASE.jar
spring-orm-4.1.3.RELEASE-javadoc.jar
spring-orm-4.1.3.RELEASE-sources.jar
spring-orm-4.1.3.RELEASE.jar
spring-oxm-4.1.3.RELEASE-javadoc.jar
spring-oxm-4.1.3.RELEASE-sources.jar
spring-oxm-4.1.3.RELEASE.jar
spring-test-4.1.3.RELEASE-javadoc.jar
spring-test-4.1.3.RELEASE-sources.jar
spring-test-4.1.3.RELEASE.jar
spring-tx-4.1.3.RELEASE-javadoc.jar
spring-tx-4.1.3.RELEASE-sources.jar
spring-tx-4.1.3.RELEASE.jar
spring-web-4.1.3.RELEASE-javadoc.jar
spring-web-4.1.3.RELEASE-sources.jar
spring-web-4.1.3.RELEASE.jar
spring-webmvc-4.1.3.RELEASE-javadoc.jar
spring-webmvc-4.1.3.RELEASE-sources.jar
spring-webmvc-4.1.3.RELEASE.jar
spring-webmvc-portlet-4.1.3.RELEASE-javadoc.jar
spring-webmvc-portlet-4.1.3.RELEASE-sources.jar
spring-webmvc-portlet-4.1.3.RELEASE.jar
spring-websocket-4.1.3.RELEASE-javadoc.jar
spring-websocket-4.1.3.RELEASE-sources.jar
spring-websocket-4.1.3.RELEASE.jar

创建 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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Testspting</display-name>
  <display-name>Spring MVC Application</display-name>

   <servlet>
      <servlet-name>HelloWeb</servlet-name>
      <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>

   <servlet-mapping>
      <servlet-name>HelloWeb</servlet-name>
      <url-pattern>/</url-pattern>
   </servlet-mapping>
</web-app>

创建 HelloWeb-servlet.xml

 <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       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-3.0.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

       <context:component-scan base-package="com.tutorialspoint" />

       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/WEB-INF/jsp/" />
          <property name="suffix" value=".jsp" />
       </bean>

    </beans>

controller.js

@Controller
public class HelloController{

   @RequestMapping(value = "/hel", method = RequestMethod.GET ,consumes = "application/json" )
   public HashMap printHello(ModelMap model) {
       HashMap<String, String> map = new HashMap<String, String>();
       map.put("message", "Hello Spring MVC !");
      return map;
   }

   @GET
   @Path("/json/employees/")
   @Produces("application/json")
   public HashMap listEmployeesJSON(){
       HashMap<String, String> map = new HashMap<String, String>();
       map.put("message", "Hello Spring MVC !");
       return map;
   }

}

当我这样运行我的项目时 http://localhost:8080/Testspting/hel 它给出了“Hello Spring MVC!” .没关系

但是当这样运行时 http://localhost:8080/Testspting/json/employees 服务器日志说 在名为“HelloWeb”的 DispatcherServlet 中找不到带有 URI [/Testspting/json/employees] 的 HTTP 请求的映射

我的预期输出将是当我运行 http://localhost:8080/Testspting/json/employees {"message", "Hello Spring MVC !"}

【问题讨论】:

  • 你不应该试试http://localhost:8080/Testspting/json/employees/ 吗?
  • @AKS 我试过了,但结果相同 在 DispatcherServlet 中找不到带有 URI [/Testspting/json/employees/] 的 HTTP 请求的映射,名称为“HelloWeb”
  • 你能不能把@Path("/json/employees/")改成@Path("/json/employees")再试一次。
  • 在这种情况下,请看这里stackoverflow.com/questions/25543692/…。您正在使用两种不同类型的注解——一种使用@RequestMapping,另一种使用@Path。给定链接的答案解释得很详细。
  • @NamanGala 不工作..还有其他方法可以制作 json

标签: java spring web-services spring-mvc spring-security


【解决方案1】:
 @Controller
 @RequestMapping(value = "/Testspting")
 public class HelloController{
 @GET
 @Path("/json/employees/")
 @Produces("application/json")
 public HashMap listEmployeesJSON(){
           HashMap<String, String> map = new HashMap<String, String>();
           map.put("message", "Hello Spring MVC !");
           return map;
       }
  }

尝试在@controller 之后添加@RequestMapping 注解。

【讨论】:

  • 但如前所述,http://localhost:8080/Testspting/hel 链接之一正在运行。所以,这不可能是原因。
  • 我认为这会给/hel url 带来问题,因为它还包括@RequestMapping。看看this 的例子。
  • 我认为您正在结合 Spring REST 和 Jersey JAX-RS。看到这个technoless.wordpress.com/2013/04/02/…
【解决方案2】:

您可以将@ResponseBody 注释与@RequestMapping 注释一起使用。

看看这个例子。 http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/

例如

@RequestMapping(value = "/json/employees/{pathVariableIfAny}", method = { RequestMethod.GET })
public @ResponseBody
HashMap listEmployeesJSON(@PathVariable("pathVariableIfAny") int pathVariable) {
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("message", "Hello Spring MVC !");
    return map;
}

【讨论】:

  • @user944513,你的问题解决了吗?
猜你喜欢
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多