文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在springMVC中controller的返回类型有哪些

2023-06-06 14:53

关注

这篇文章将为大家详细讲解有关在springMVC中controller的返回类型有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1、返回ModelAndView

返回ModelAndView时最常见的一种返回结果。需要在方法结束的时候定义一个ModelAndView对象,并对Model和View分别进行设置。

2、返回String

1):字符串代表逻辑视图名

真实的访问路径=“前缀”+逻辑视图名+“后缀”

注意:如果返回的String代表逻辑视图名的话,那么Model的返回方式如下:

public String testController(Model model){model.addAttribute(attrName,attrValue);//相当于ModelAndView的addObject方法return "逻辑视图名"; }

2):代表redirect重定向

redirect的特点和servlet一样,使用redirect进行重定向那么地址栏中的URL会发生变化,同时不会携带上一次的request

案例:

public String testController(Model model){ return "redirect:path";//path代表重定向的地址 }

3):代表forward转发

通过forward进行转发,地址栏中的URL不会发生改变,同时会将上一次的request携带到写一次请求中去

案例:

 public String testController(Model model){ return "forward:path";//path代表转发的地址 }

3、返回void

返回这种结果的时候可以在Controller方法的形参中定义HTTPServletRequest和HTTPServletResponse对象进行请求的接收和响应

1)使用request转发页面

request.getRequestDispatcher("转发路径").forward(request,response);

2)使用response进行页面重定向

response.sendRedirect("重定向路径");

3)也可以使用response指定响应结果

response.setCharacterEncoding("UTF-8"); response.setContentType("application/json;charset=utf-8");  response.getWriter.write("json串");

以上三种返回值没有什么重要和不重要的分别,一般来说都会使用到, 只不过有的时候使用的方式会有一些细微的差别

补充:SpringMvc中,Controller方法的多种实现方式(指定返回到哪个页面,指定返回到页面的数据)

1)ModelAndView

@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; }

2) String(最常用,最方便,建议)

@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"; }

3) 返回void

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

4)关于方法中所需要的参数定义

举3)中的例子,我在update方法中定义了:

Items items,HttpServletRequest request,以及HttpServletResponse response这三个类型.

但是大家可以发现,其实我在方法中是没有用到response的,因此,可以把其删掉,对于程序来说,并不会

产生影响。

因此,大家在定义方法的时候,可以根据自己的实际需要来定义所需要的类,或者大家怕以后代码需要改麻烦的话,

全部定义上也是可以的。

更新

5)若如果想要接口不是跳转页面,而是返回数据,则需要添加@ResponseBody的注解

例:

@RequestMapping("atimynyc/getUser")@ResponseBodypublic 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的返回类型有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯