Spring MVC控制器的开发
在类上方中标注@Controller并标注@ReqeustMapping("/project")表示为MVC的请求控制器,路径为/项目名称/请求路径,之后在方法中标注@RequestMapping("/index“),则表示请求的路径是前面的/项目名称/请求路径/请求的控制器index,返回的是ModelAndView视图对象,可设置视图名称mv.setViewName("index")和前面的MVC前缀"/web-inf/jsp/"+返回的视图名称+后缀名".jsp"一起生成的一个完整 的请求路径。
@RequestMapping("xxxx",xx)有其配置项。
接收获取的请求参数方法。
在控制 器的方法中使用@RequestParam("xxx"),并有其配置项request等,Xxx表求url请求中的参数名称。
@SessionAttribute("xxx"),并有配置项,xxx表示在session中的键值项,
接收普通的参数,在控制器的方法里,和普通的方法相同,并不要在参数前加@注解,只要形参名称和请求中传的参数名称一致就可以获取到值。getxxx(string username,string password).................
如果参数太多,可有使用类作为接收的形参。public xxx getXxx(Role role){}
还有符合Restful风格的类的xxx/getRole/1这种,可在控制 器方法中标注@RequestMapping("/xxx/getRole/{id}",用花括号{id}表示其中请求的参数名称,在方法的形参前用@PathVariable("id") lonng id)...来获取值。
如果请求的参数值是参数体,一个json字符串的值,没有请求参数名称,那么在控制 器的请求方法中的形参前标注@RequestBody Role role)....spring mvc会自动会把JSON字符串反序列化为相应的类,数组,集合类似。
重定向只要控制器方法返回return "redirect:xxxxx.xxx.xdo"就行了。重定向并带参数,可以在方法中增加Model形参,并model.addAttribute(key,value),或者ModelAndView形参并.addObject(key,value),mv.setViewName("redirect:xxxxx);return mv;复杂的json数据,mv.setView(new MappingJackson2JsonView());mv.addObject(key,value);return mv;
以上都是传递简单的参数,是以字符串的形式传递的。如果要以对象的方法传递,则可以用xxx(RedirectAttribute ra,xxx),ra.addFlashAttribute(key,对象);return "redirect:xxxxx";其原理是mvc把对象存到了session中,在重定向的页面取值后就从Session中删除了对象。