SpringMVC到SpringREST教程

SpringMVC到SpringREST教程,spring,model-view-controller,rest,Spring,Model View Controller,Rest,我已经开发了一个SpringMVC-Hibernate应用程序 现在,我正试图修改这段代码以创建一个REST应用程序 我已将Jackson库添加到类路径,并添加了@XmlRootElement @XmlRootElement(name = "persons") public class Person implements Serializable { 但是如果我做了一个application/json请求,那么我仍然会得到html代码 我做错了什么/忘了做什么? 我的控制器: @Req

我已经开发了一个SpringMVC-Hibernate应用程序

现在,我正试图修改这段代码以创建一个REST应用程序

我已将
Jackson
库添加到类路径,并添加了
@XmlRootElement

@XmlRootElement(name = "persons")
public class Person implements Serializable {
但是如果我做了一个
application/json
请求,那么我仍然会得到
html
代码

我做错了什么/忘了做什么?

我的控制器:

    @RequestMapping(value = "/persons", method = RequestMethod.GET)
    @ResponseBody
    public String getPersons(Model model) {

        logger.info("Received request to show all persons");

        // Retrieve all persons by delegating the call to PersonService
        List<Person> persons = personService.getAll();
        model.addAttribute("persons", persons);

        return "personspage";
    }

您的spring配置中可能缺少和messageConverter。

您的控制器应如下所示:

@RequestMapping(value = "/persons/{id}", method = RequestMethod.GET)
@ResponseBody
public Person getPerson(@PathVariable int id) {
    Person person = personService.getPersonById(id);
    return person;
}

如果要返回
Person
对象的列表,需要一个额外的包装器对象,请参阅:。

向我们展示您的控制器方法。您是否从方法返回
Person
对象,并且在控制器方法上也有
@ResponseBody
注释?我添加了一个@pathVariable,但得到一个错误,类型为Status report message/Buddies/WEB-INF/jsp/main/persons/1.jsp描述请求的资源(/Buddies/WEB-INF/jsp/main/persons/1.jsp)不可用。@鲍勃:在
web.xml
中,哪些路径映射到
DispatcherServlet
?还有一个问题:application/xml请求成功,我看到了所有数据,但application/json失败。有什么问题吗?@Bob:如果您发送的是
application/json
(?)并且
jackson.jar
在类路径上,那么这两种方法都应该透明地工作。
@RequestMapping(value = "/persons/{id}", method = RequestMethod.GET)
@ResponseBody
public Person getPerson(@PathVariable int id) {
    Person person = personService.getPersonById(id);
    return person;
}