浅谈springMVC中controller的几种返回类型

简介: 浅谈springMVC中controller的几种返回类型

这篇文章主要介绍了浅谈springMVC中controller的几种返回类型,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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")
@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这个对象。

相关文章
|
6月前
SpringMVC-5种类型参数传递
SpringMVC-5种类型参数传递
51 0
|
Java 测试技术 数据库
测试用例的基本要素 && properties配置文件 && 测试用例的基本要素 && SpringMVC背景知识 && 按照开发阶段划分测试类型
测试用例的基本要素 && properties配置文件 && 测试用例的基本要素 && SpringMVC背景知识 && 按照开发阶段划分测试类型
61 0
|
应用服务中间件 数据库
46SpringMVC - 参数绑定(绑定pojo类型)
46SpringMVC - 参数绑定(绑定pojo类型)
75 0
45SpringMVC - 参数绑定(绑定简单类型)
45SpringMVC - 参数绑定(绑定简单类型)
59 0
|
6月前
|
JSON 数据格式
SpringMVC-接收请求中的json数据及日期类型参数传递
SpringMVC-接收请求中的json数据及日期类型参数传递
146 0
|
6月前
|
前端开发 Java API
Spring Boot之Spring MVC基于注解的控制器(RequestMapping注解类型 重定向与转发 依赖注入)
Spring Boot之Spring MVC基于注解的控制器(RequestMapping注解类型 重定向与转发 依赖注入)
76 0
|
3月前
|
前端开发 Java Spring
SpringMVC种通过追踪源码查看是哪种类型的视图渲染器(一般流程方法)
这篇文章通过示例代码展示了如何在Spring MVC中编写和注册拦截器,以及如何在拦截器的不同阶段添加业务逻辑。
SpringMVC种通过追踪源码查看是哪种类型的视图渲染器(一般流程方法)
|
Java Spring
SpringMVC中请求传输的各种类型参数分析
SpringMVC中请求传输的各种类型参数分析
61 0
43SpringMVC - 参数绑定(默认支持的参数类型)
43SpringMVC - 参数绑定(默认支持的参数类型)
52 0
|
JSON 前端开发 Java
SpringMVC 方法三种类型返回值总结,你用过几种?
SpringMVC 方法三种类型返回值总结,你用过几种?