这篇文章将为大家详细讲解有关在springMVC中controller的返回类型有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1、返回ModelAndView
返回ModelAndView时最常见的一种返回结果。需要在方法结束的时候定义一个ModelAndView对象,并对Model和View分别进行设置。
真实的访问路径=“前缀”+逻辑视图名+“后缀”
注意:如果返回的String代表逻辑视图名的话,那么Model的返回方式如下:
public String testController(Model model){
model.addAttribute(attrName,attrValue);//相当于ModelAndView的addObject方法
return "逻辑视图名";
}
redirect的特点和servlet一样,使用redirect进行重定向那么地址栏中的URL会发生变化,同时不会携带上一次的request
案例:
public String testController(Model model){
return "redirect:path";//path代表重定向的地址
}
通过forward进行转发,地址栏中的URL不会发生改变,同时会将上一次的request携带到写一次请求中去
案例:
public String testController(Model model){
return "forward:path";//path代表转发的地址
}
返回这种结果的时候可以在Controller方法的形参中定义HTTPServletRequest和HTTPServletResponse对象进行请求的接收和响应
request.getRequestDispatcher("转发路径").forward(request,response);
response.sendRedirect("重定向路径");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter.write("json串");
以上三种返回值没有什么重要和不重要的分别,一般来说都会使用到, 只不过有的时候使用的方式会有一些细微的差别
补充:SpringMvc中,Controller方法的多种实现方式(指定返回到哪个页面,指定返回到页面的数据)
@RequestMapping("/list")
public ModelAndView itemsList() throws Exception{
List<Items> list = itmesService.list();
//创建ModelAndView视图
ModelAndView modelAndView = new ModelAndView();
//将list数据添加到试图里
modelAndView.addObject("itemList", list);
modelAndView.setViewName("itemList");//设置视图的名称,即返回到哪个页面
//由于有视图解析器的作用,省去了前缀和后缀,其实访问的页面为("/WEB-INF/jsp/itemList.jsp")
return modelAndView;
}
@RequestMapping("/itemEdit/{id}")
public String itemEdit(@PathVariable("id") Integer id, HttpServletRequest reuqest,
Model model) throws Exception{
//String idStr = reuqest.getParameter("id");
Items items = itmesService.findItemsById(id);
//将items数据加到视图中
model.addAttribute("item", items);
//这里返回editItem,在@Controller的注解下,回自动添加前缀和后缀,实则是返回到页面("/WEB-INF/jsp/editItem.jsp")
return "editItem";
}
public void update(Items items,HttpServletRequest request,HttpServletResponse response)throws Exception{
//返回数据,将items的内容放入items里,jsp页面调用items就行
request.setAttribute("items", items);
//返回指定的页面
//如果是void类型的话,就不会去调用SpringMvc的架构,因此无法自动加载视图解析器,所以跳转的
//网页名称应该为其全路径名称
request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);
}
就不会去调用SpringMvc的架构,因此无法自动加载视图解析器,所以跳转的
//网页名称应该为其全路径名称
request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);
}
举3)中的例子,我在update方法中定义了:
Items items,HttpServletRequest request,以及HttpServletResponse response这三个类型.
但是大家可以发现,其实我在方法中是没有用到response的,因此,可以把其删掉,对于程序来说,并不会
产生影响。
因此,大家在定义方法的时候,可以根据自己的实际需要来定义所需要的类,或者大家怕以后代码需要改麻烦的话,
全部定义上也是可以的。
更新
例:
@RequestMapping("atimynyc/getUser")
@ResponseBody
public User getUser(String id){
User user = new User();
user.setUserName = "Atimynyc";
user.setUserAge = 18;
user.setUserPhone = "123456789";
return User;
}
通过加上ResponseBody,springmvc就知道该接口是返回数据,例,当我们用ajax调用上面的接口url时atimynyc/getUser,就可以获得user这个对象。
关于在springMVC中controller的返回类型有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。