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配置。你能在那里找到其他地址吗?你在地图上试过斜杠吗?您的请求中是否有内容类型?