SpringMVC-方法的返回值类型(4种)

SpringMVC在java框架中有着独特的地位,关于方法的返回值类型,你知道几种呢?

1.ModelAndView

ModelAndView可以返回数据和视图,

@RequestMapping(value="/test")
	public ModelAndView login1(User user) {
		//创建视图模型对象 该对象中既包含了模型数据 又包含了视图名称
		ModelAndView mv = new ModelAndView();
		mv.setViewName("success");//设置相应视图的名字
		///添加模型数据, 各种类型都可以
		mv.addObject(user);
		mv.addObject("hello", "你好");
		
		return mv; //返回视图模型对象
	}
 
----jsp页面
 
<body>
	访问成功<br>
	${hello }, ${user.username }<br>
	${user }
</body>

2.String

两种情况:

1>return "user":将请求转发到user视图

2>return "redirect:user":将请求重定向到user地址

需要注意的是:WEB-INF下的文件是受保护的,重定向无法访问(包404)。

//指定逻辑视图名,经过视图解析器解析为jsp物理路径:/WEB-INF/jsp/itemList.jsp
return "itemList";

@RequestMapping("updateItem")
public String updateItemById(Item item) {
    // 更新商品
    this.itemService.updateItemById(item);
 
    // 修改商品成功后,重定向到商品编辑页面
    // 重定向后浏览器地址栏变更为重定向的地址,
    // 重定向相当于执行了新的request和response,所以之前的请求参数都会丢失
    // 如果要指定请求参数,需要在重定向的url后面添加 ?itemId=1 这样的请求参数
    return "redirect:/itemEdit.action?itemId=" + item.getId();
}


@RequestMapping("updateItem")
public String updateItemById(Item item) {
    // 更新商品
    this.itemService.updateItemById(item); 
    // 修改商品成功后,继续执行另一个方法
    // 使用转发的方式实现。转发后浏览器地址栏还是原来的请求地址,
    // 转发并没有执行新的request和response,所以之前的请求参数都存在
    return "forward:/itemEdit.action";
 
}

3.Object

返回对象,一般用于json数据的返回。需要在方法前或方法返回值前添加@ResponseBody注解

​
/*查询所有商品*/
@RequestMapping("/prodects")
@ResponseBody
public Object getprodect(){
    List<Product> products = userService.getproduct();
    return products;
}

​

4.Void

返回其他的MIME类型时,通常需要将方法定义为void。

//在Controller方法形参上可以定义request和response,使用request或response指定响应结果

1、使用request转发页面,如下:
request.getRequestDispatcher("页面路径").forward(request, response);
request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);
 
2、可以通过response页面重定向:
response.sendRedirect("url")
response.sendRedirect("/springmvc-web2/itemEdit.action");
 
3、可以通过response指定响应结果,例如响应json数据如下:
response.getWriter().print("{\"abc\":123}");

在使用时根据情况选择最适合的返回值类型。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值