Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @PathVariable在spring中不工作_Java_Spring_Rest - Fatal编程技术网

Java @PathVariable在spring中不工作

Java @PathVariable在spring中不工作,java,spring,rest,Java,Spring,Rest,我有PersonController如下: @Controller @RequestMapping("person") public class PersonController { @RequestMapping(value= "/{personId}", method = RequestMethod.GET, produces={"application/json"}) public @ResponseBody Map<String, Object> getPerson(@Pa

我有
PersonController
如下:

@Controller
@RequestMapping("person")
public class PersonController {

@RequestMapping(value= "/{personId}", method = RequestMethod.GET, produces={"application/json"})
public @ResponseBody Map<String, Object> getPerson(@PathVariable("personId") Integer personId) { 
    // code to get person
}
在web.xml中

<servlet>
  <servlet-name>app</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!--init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/servlet-context.xml</param-value>
  </init-param-->
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>app</servlet-name>
  <url-pattern>/sample/*</url-pattern>
 </servlet-mapping>

应用程序
org.springframework.web.servlet.DispatcherServlet
1.
应用程序
/样品/*

我复制/粘贴了你的PersonController类,它在这里工作得很好

所以我检查了你的web.xml,你的应用程序servlet正在映射模式“/sample/*”

如果我是正确的,我怀疑您的项目在Eclipse中被称为“示例”。在这种情况下,您必须按如下方式访问您的站点:

http://localhost:8080/sample/sample/person/1
<servlet-mapping>
     <servlet-name>app</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
web.xml中的映射总是从根上下文开始,这就是为什么会出现404错误

如果您希望从根域访问控制器(在本例中,默认情况下它是您的实际Eclipse项目名称,但也可以进行配置),您可以使用servlet映射,如下所示:

http://localhost:8080/sample/sample/person/1
<servlet-mapping>
     <servlet-name>app</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

应用程序
/*
我建议您使用/rest/*或其他标记,因为它可以更好地扩展其他类型的内容


让我知道它是否工作。

配置如何?请发布您的Spring配置?您的accept标头是否包含application/json?尝试放置日志文件…当服务器启动时,如果启用了log4j,则应显示所有映射的控制器…如果您没有看到该文件中列出的PersonController…那么我我猜你必须检查你的spring配置。你能在那里找到其他地址吗?你在地图上试过斜杠吗?您的请求中是否有内容类型?