SpringMVC的@RequestMapping注解和Controller方法返回值

@RequestMapping注解是每一个SpringMVC控制层的方法必须带有的注解,配置该注解可帮助SpringMVC映射器找到相应的执行方法。在@RequestMapping注解中有以下几个属性:

value:该属性指定了URL路径映射,可以配置到方法上,也可以配置到类上,当配置到类上时,URL路径为 类上的value+具体某个方法上的value。当一个类中所有方法都URL路径都有共同路径时可以把这段共同路径配置到类上。

method:该属性指定了客户端请求的方法,如@RequestMapping(method = RequestMethod.POST)(限定post请求方法访问)。如果通过GET访问则报错:HTTP Status 405 - Request method 'GET' not supported。

 

Controller方法返回值

1.void类型:大多用于ajax请求,因为ajax不用服务器跳转页面,只需要数据,我们只需通过在参数上绑定默认的response参数调用getwrite方法返回数据即可。也可用request和response实现页面跳转和转发。

2.String类型:controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。我们还可以在返回值中设定转发和重定向

重定向

@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,所以之前的请求参数都会丢失
	// 如果要指定请求参数,需要在重定向的url后面添加 ?itemId=1 这样的请求参数
	// return "redirect:/itemEdit.action?itemId=" + item.getId();

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

}

3.ModelAndView:类中封装了request域和显示页面的物理地址,直接返回ModelAndView类对象,Spring可以从中解析数据和显示界面物理地址。缺点是把数据和页面放到了一起,耦合性较大。

	@RequestMapping("/find.action")
	public ModelAndView finduser(String username, HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException {
		//从service层获取数据
		User u = ud.finduser(username);
		ModelAndView mav = new ModelAndView();
		//把数据添加到request域
		mav.addObject("user",u);
		//设置转发页面
		mav.setViewName("/WEB-INF/displayuser.jsp");
		
		return mav;
	}

猜你喜欢

转载自blog.csdn.net/yan245294305/article/details/81417462