为什么在进行webservice时没有为带有URI的HTTP请求找到映射?

时间:2015-03-16 05:50:53

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

我想在春天制作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!” .it很好

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

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

2 个答案:

答案 0 :(得分:0)

您可以使用@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;
}

答案 1 :(得分:0)

 @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注释。