Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
在spring mvc/rest开发中创建控制器时,对以下内容的混淆:ModelAndView、Model、@ResponseBody、@ResponseEntity_Spring_Spring Mvc - Fatal编程技术网

在spring mvc/rest开发中创建控制器时,对以下内容的混淆:ModelAndView、Model、@ResponseBody、@ResponseEntity

在spring mvc/rest开发中创建控制器时,对以下内容的混淆:ModelAndView、Model、@ResponseBody、@ResponseEntity,spring,spring-mvc,Spring,Spring Mvc,我去SpringMVC/rest开发区的时间晚了,所以我正试着了解一下这个概念 我读了这篇stackoverflow文章:它讨论了ModelAndView的优点,并在控制器上使用字符串返回(使用Model作为方法参数)。我正在重新发布代码 @RequestMapping(value = "/list", method = RequestMethod.GET) public ModelAndView list( @UserAuth UserAuth user, ModelAndV

我去SpringMVC/rest开发区的时间晚了,所以我正试着了解一下这个概念

我读了这篇stackoverflow文章:它讨论了ModelAndView的优点,并在控制器上使用字符串返回(使用Model作为方法参数)。我正在重新发布代码

@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(
    @UserAuth UserAuth user, 
    ModelAndView mav) {

    if (!user.isAuthenticated()) {
        mav.setViewName("redirect:http://www.test.com/login.jsp");
        return mav;
    }

    mav.setViewName("list");
    mav.addObject("articles", listService.getLists());

    return mav;
}


@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
    @UserAuth UserAuth user, 
    Model model) {

    if (!user.isAuthenticated()) {
       return "redirect:http://www.test.com/login.jsp";
    }

    model.addAttribute("articles", listService.getLists());

    return "list";
}
这一次,我还发现了另一组spring mvc控制器代码:

控制器定义为:

@RestController
public class EmployeeRESTController
这有一个返回EmployeeListVO的方法

@RequestMapping(value = "/employees")
public EmployeeListVO getAllEmployees()
{
    EmployeeListVO employees = new EmployeeListVO();

    EmployeeVO empOne = new EmployeeVO(1,"Lokesh","Gupta","howtodoinjava@gmail.com");
    EmployeeVO empTwo = new EmployeeVO(2,"Amit","Singhal","asinghal@yahoo.com");
    EmployeeVO empThree = new EmployeeVO(3,"Kirti","Mishra","kmishra@gmail.com");


    employees.getEmployees().add(empOne);
    employees.getEmployees().add(empTwo);
    employees.getEmployees().add(empThree);

    return employees;
}
这次是另一种方法

@RequestMapping(value = "/employees/{id}")
public ResponseEntity<EmployeeVO> getEmployeeById (@PathVariable("id") int id)
{
    if (id <= 3) {
        EmployeeVO employee = new EmployeeVO(1,"Lokesh","Gupta","howtodoinjava@gmail.com");
        return new ResponseEntity<EmployeeVO>(employee, HttpStatus.OK);
    }
    return new ResponseEntity(HttpStatus.NOT_FOUND);
}
@RequestMapping(value=“/employees/{id}”)
公共响应属性getEmployeeById(@PathVariable(“id”)int-id)
{

如果(id
ModelAndView
以及返回字符串(模板名称)在您有web界面(例如网站)的情况下使用,那么您使用的是Spring MVC,您通常会将其与
@Controller
注释一起使用

@ResponseBody
意味着无论您返回什么,都将是响应的主体(响应有其他部分,如标题等)。Spring还将根据给定方法“生成”的内容(这在@RequestMapping中定义,但不仅在那里)。例如,使用
@RestController
意味着无论您在方法中返回什么,都将转换为JSON,除非您另有指定(请注意,@ResponseBody附加到@RestController)

ResponseEntity
是指整个响应(主体为
T
),而不仅仅是
@ResponseBody
中的主体。您可以指定标题、响应代码、响应内容(主体),如文件内容、纯文本等。因此,基本上可以对HTTP响应的每个部分进行建模


您将使用什么取决于您自己,并且只取决于您的需求。

Sry,现在不想写一个完整的答案,但我非常确定您必须阅读文档,并且只是为了确保我了解您发布的内容,特别是在做rest api工作时,并希望通过json完成通信(json比xml更常见),建议使用@ResponseBody/@ResponseEntity,但在开发web应用程序时,比如说使用thymeleaf或jsp作为查看技术的web应用程序,那么使用spring MVC模型/模型和视图更可取?这就是这些工具的用途。只是您没有义务使用其中一种。