Spring MVC笔记

Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet是Spring MVC的心脏,它负责截获请求并将其分派给相应的处理器处理。Spring MVC框架包括注解驱动控制器、请求及响应的信息处理、视图解析、本地化解析、上传文件解析、异常处理以及表单标签绑定等。

Spring MVC能过一个@Controller注解即可将一个PoJo转化为处理请求的控制器,通过@RequestMapping为控制器指定处理哪些URL的请求。

使用@RequestMapping映射请求
将请求映射到控制器处理方法的工作包含一系的映射规则,这些规则是根据请求中的各种信息制定的,具体包括请求url、请求参数、请求方法、请求头这4个方面的信息项。

通过@PathVariable可以将url中的占位符参数绑定到控制器处理方法的入参中。
@RequestMapping("/{userId}")
public ModelAndView showDetail(@PathVariable("userId")String userId){
 ...
}

//使用请求方法及请求参数映射请求
@RequestMapping(value="/delete",method=RequestMethod.POST,params="userId")
public String test(@RequestParam("userId")String userId){
 ...
}

//使用命令/表单对象绑定请求参数值
@RequestMapping(value="handle")
public String handle(User user){
 ...
}
则如下的url请求,其请求参数将正确地填充到User对象中。
/handle.html?userName=tom&dept.deptId=123&dept.address.tel=102

一般情况下,处理方法的返回值类型为ModelAndView或String,前者包含模型和逻辑视图名,而后者仅代表一个逻辑视图名。

 

Spring MVC提供了多种途径输出模型数据:
1.ModelAndView
2.@ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中。
3.Map及Model
4.@SessionAttribute:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性。
Spring MVC在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute的方法。
Spring MVC在调用方法前会创建一个隐含的模型对象,作为模型数据的存储容器,我们称之为“隐含模型”。如果处理方法的入参为Map或Model类型,Spring MVC会将隐含模型的引用传递给这些入参。

一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图处理。但是如果字符串带“forward:”或“redirect:”前缀时,Spring MVC将对它们进行特殊处理:将forward:或redirect:当成指示符,其后的字符作为url处理。

你可能感兴趣的:(JavaEE)