我的简单Spring Web服务出了什么问题?

时间:2017-02-13 20:43:38

标签: java spring spring-mvc spring-web

我构建了一个简单的Spring Web应用程序。我有一个简单的@Controller和@RequestMapping,但是当我运行它时我无法点击URL:

http://localhost:8080/labutil/all

我做错了什么?

package com.mycompany.ion.labutil.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.nokia.ion.labutil.service.LabService;

@Controller
public class LabController {

    @Autowired
    private LabService labService;

    @RequestMapping(value = "/all", method = RequestMethod.GET)
    public String getAll() throws Exception {
        List<String> list = labService.getAll();

        // build fake little json formatted data
        StringBuffer sb = new StringBuffer("{");
        for (String s : list) {
            sb.append("{ "+s+" }, ");
        }
        sb.append("}");

        return sb.toString();
    }


}

1 个答案:

答案 0 :(得分:1)

您必须将控制器注释为@RestController或将@ResponseBody注释添加到您的方法中。这样你告诉Spring这个方法将对象作为HTTP body响应返回。 @RestController是一个便利注释,注释了@Controller和@ResponseBody注释。

Here您应该使用此注释的答案。

@RequestMapping(value = "/all", method = RequestMethod.GET)
@ResponseBody
public String getAll() throws Exception {
    List<String> list = labService.getAll();

    // build fake little json formatted data
    StringBuffer sb = new StringBuffer("{");
    for (String s : list) {
        sb.append("{ "+s+" }, ");
    }
    sb.append("}");

    return sb.toString();
}

另一方面,您应该返回一个对象,而不是解析的String Json,添加一些像Jackson或Gson这样的Json库,并使用相应的库视图实现配置View。