三、Springmvc之Controller层方法返回值

本文详细介绍了在Spring MVC框架中,控制器方法如何通过不同的返回类型(如String、ModelAndView和void)来处理请求并返回视图。包括逻辑视图名、请求重定向和转发的使用场景及具体实现。

ItemController

@Controller
public class ItemController {

	@Autowired
	private ItemService itemService;
	
	/**
	 * 1.ModelAndView 无敌的,带着数据,返回视图路径
	 * 2.String 返回视图路径,model带数据
	 * 3.void  无法返回视图,不能用来显示数据。 ajax 请求合适   json格式数据(response 异步请求使用)
	 * @return
	 * @throws IOException 
	 * @throws ServletException 
	 */
	
	/**
	 * void-
	 */
	@RequestMapping(value="/item/itemList.action")
	public void itemList(Model model,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
		List<Items> list = itemService.selectItemList();
		model.addAttribute("itemList", list);
		request.getRequestDispatcher("/itemList").forward(request, response);
	}
	
	/**
	 * String
	 */
/*	@RequestMapping(value="/item/itemList.action")
	public String itemList(Model model){
		List<Items> list = itemService.selectItemList();
		model.addAttribute("itemList", list);
		return "itemList";
	}*/
	
	/**
	 * ModelAndView
	 */
	//显示所有商品
/*	@RequestMapping(value="/item/itemList.action")
	public ModelAndView itemList(){
		
		//从Mysql查询数据
		List<Items> list = itemService.selectItemList();
		System.out.println(list);
		
		ModelAndView mv = new ModelAndView();
		//添加数据
		mv.addObject("itemList", list);
		mv.setViewName("itemList");
		return mv;
	}*/
}

 

返回字符串类型可分为:

1、逻辑视图名

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

2、Request重定向

/**
 * 更新商品
 * 
 * @param item
 * @return
 */
@RequestMapping("updateItem")
public String updateItemById(Item item) {
	// 更新商品
	this.itemService.updateItemById(item);

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

3、forward转发

/**
 * 更新商品
 * 
 * @param item
 * @return
 */
@RequestMapping("updateItem")
public String updateItemById(Item item) {
	// 更新商品
	this.itemService.updateItemById(item);

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

}
//结果转发到editItem.action,request可以带过去
return "forward: /itemEdit.action";

  

  

  

  

转载于:https://www.cnblogs.com/syj1993/p/9908445.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值