SpringMVC之Controller方法返回值

一、返回ModelAndView

通过ModelAndView,可以使用addObject()设置需要返回的值,也可以通过setViewName()方法跳转到指定的页面

    @RequestMapping("/showItemInfo_noSecurity")
    public ModelAndView showItemInfo(HttpSession session,Item item){
        List<Item> list = new ArrayList<>();
        list = getFromDB();
	// 创建ModelAndView,用来存放数据和视图
	ModelAndView modelAndView = new ModelAndView();
	// 设置数据到模型中
	modelAndView.addObject("list", list);
	// 设置视图jsp,需要设置视图的物理地址
	modelAndView.setViewName("itemList");
 
	return modelAndView;
 
	}

二、返回String

1.逻辑视图名

返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址,通过Model存放数据

    @RequestMapping("/showItemInfo_noSecurity")
    public String showItemInfo(HttpSession session,Model model){
        List<Item> list = new ArrayList<>();
        list = getFromDB();
	 // 通过Model来存放数据
        model.addAttribute("itemList",list);
	
        //返回视图地址
	return "itemList"; //WEB-INF/jsp/itemList
 
	}

2.Redirect重定向

@RequestMapping(value="/updateitem",method={RequestMethod.POST,RequestMethod.GET})
public String updateItems(Items items) {
    itemService.updateItem(items);
    // '/'是不包含工程名的根目录,即http://localhost:8080/springmvc-web/item/itemList.action
    return "redirect:/item/itemList.action";
}

redirect方式相当于“response.sendRedirect()”,转发后浏览器的地址栏变为转发后的地址,因为转发即执行了一个新的request和response。由于新发起一个request,原来的参数在转发时就不能传递到下一个url,如果要传参数可以在/item/itemList.action后边加参数,如下:

return "redirect:/item/itemList.action?id=xxx&name=xxx";

3. forward转发

forward方式相当于“request.getRequestDispatcher().forward(request,response)”,转发后浏览器地址栏还是原来的地址。转发并没有执行新的request和response,而是和转发前的请求共用一个request和response。所以转发前请求的参数在转发后仍然可以读取到

@RequestMapping(value="/updateitem",method={RequestMethod.POST,RequestMethod.GET})
public String updateItems(Items items) throws UnsupportedEncodingException {
    itemService.updateItem(items);
    return "forward:/item/itemList.action";
}

三、返回void  

使用request或response指定响应结果,通过request域存放数据

1.使用request转向页面

@RequestMapping("/itemList")
public void itmeList(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // 查询商品列表
    List<Items> itemList = itemService.getItemList();
    // 向页面传递参数
    request.setAttribute("itemList", itemList);
    // 如果使用原始的方式做页面跳转,必须给的是jsp的完整路径
    request.getRequestDispatcher("/WEB-INF/jsp/itemList.jsp").forward(request, response);
}

2.通过response实现页面重定向

response.sendRedirect("url");

3.通过response指定响应结果

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值