我去SpringMVC/rest开发区的时间晚了,所以我正试着了解一下这个概念。
我读了这篇stackoverflow文章:哪个更好,在spring3控制器上返回“ModelAndView”或“String”,这篇文章讨论了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);
}
我找了一些关于@responseboody和@ResponseEntity优点的帖子,像这样的帖子ResponseEntity之间有什么区别
我现在的问题是,因为我在这个领域是一个新手,浏览示例代码让我搞不清楚应该采取什么方法,应该朝哪个方向走?我相信ModelAndView和Model在返回字符串时可能是一种旧方法?也许历史记录或从ModelAndView到@ResponseBody/@ResponseEntity的转换会有所帮助?这是因为spring版本吗?
为了给我的问题添加上下文,在我目前的工作中,我们使用的是Spring4,但在代码中我看到了代码库中所有这些方法的混合(不同的开发人员已经在代码库中工作了x年)。
我希望mods不会关闭这个,并将其视为基于意见的。我想我可以在这个网站上向经验丰富的开发者寻求指导。
ModelAndView
以及返回字符串(模板名称)用于具有web界面(例如网站)的情况,因此您使用的是Spring MVC,通常与@Controller
注释一起使用。
@ResponseBody
意味着无论你在重复什么,都将是响应的主体(响应有其他部分,如标题等)。Spring还将根据给定的方法“生成”的内容(在@RequestMapping中定义,但不仅在这里定义),尝试将其自动转换为适当的形式。例如,使用@RestController
意味着无论您在方法中返回什么,都将转换为JSON,除非您另有指定(注意@ResponseBody附加到@RestController)。
响应性
您将使用什么取决于您自己,并且只取决于您的需求。
问题内容: 在一个WebAPI项目中,我有一个控制器,可以根据用户输入的值来检查产品的状态。 假设他们输入“ 123”,响应应该是“状态”:1,以及产品列表。如果输入“ 321”,则“状态”为0,并列出产品。 我的问题是,如何在WebAPI控制器中构建正确的字符串。 另外,此输出/响应是否被视为有效? 问题答案: 因此,这是您的帖子的更改: 首先,您应该在传递请求时让api默认返回Json (这是
问题内容: 我正在编辑内置的表单。 我在对话框中显示该表单,然后提交。 数据已正确输入数据库。 但是我不知道是否需要将一些寄回。其实我对事情有点困惑。 假设我在表中使用``jQuery添加了一行,当我提交表单时,然后在提交数据之后,我想发回那些行数据,以便我可以动态添加表行以显示添加的数据。 我很困惑如何获取这些数据。 这是我当前的代码: 这只是带有成功消息的模板。 问题答案: Symfony 2
我有一个方法,调用一个endpoint来发布客户我怎么才能只得到消息"EMAIL ALREADY EXISTS"从响应体的Rest模板,以便在FacesContext中显示它 这是回应机构
问题内容: XlsxWriter对象另存为http响应以在Django中创建下载? 问题答案: 我想你是在询问如何使用创建内存中的excel文件并通过返回。这是一个例子: 希望能有所帮助。
@覆盖 公共列表getOrder(String orderNo){ StoredProcedureQuery=EntityManager.createstoredProcedureQuery(“xx.xxx.get_order_details”);query.RegisterStoredProcedureParameter(1,String.class,parametermode.in);quer
问题内容: 我的代码中有一个ajax调用。我想通过通话实现的效果很好。我想从数据库中删除一些记录,当通过ajax调用该方法时,该记录实际上被删除了,但是就像在symfony方法中,它必须返回一个响应,这就是为什么当执行该方法时会给我错误 我的Ajax电话是 而执行的方法是 我如何从该方法成功返回?有任何想法吗?谢谢 问题答案: 替换为。也不要忘记在顶部写。