2017-02-13 30 views
-1

Я создал простое приложение Spring Web. У меня есть этот простой @Controller с @RequestMapping, но когда я запускаю его я не могу ударить URL:Что случилось с моей простой веб-службой Spring?

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(); 
    } 


} 
+2

вы также можете попробовать http: // localhost: 8080/all? это похоже на проблему с URL. – Kael53

+0

Не могли бы вы разместить файл application-context.xml. – SachinSarawgi

+0

Вы не устанавливаете '/ labutil' нигде в контроллере. @ Предложение Kael53 должно работать (возможно, добавление контекста приложения в URL) – Alfabravo

ответ

1

Вы должны аннотировать контроллер в качестве @RestController или добавить к вашей методе @ResponseBody аннотаций. Таким образом, вы сообщаете Spring, что этот метод возвращает объект как ответ тела HTTP. @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(); 
} 

С другой стороны, вы должны вернуть объект, а не обработанный Струнный JSon, добавить JSon библиотеку, как Джексон или Gson и настроить вид с соответствующей реализацией просмотра библиотеки.