一、初识Spring MVC
初次看到Spring MVC这个IP,不禁想起那月黑风高的一晚,醉里挑灯看剑...咳咳咳,不禁想起Spring和MVC设计模式,经过一番学海遨游,果不其然,Spring为支持Web开发,提供了构建Web应用程序的MVC模块。
位置:Web层
同行:Struts2
二、工作流程
1、客户端发送一个HTTP请求,Web应用服务器接收到这个请求,如果匹配(在web.xml中指定)DispatcherServlet的请求映射路径,Web容器将改请求转交给DispatcherServlet处理。
2、DispatcherServlet接收到这个请求后,将请求的信息以及Handler Mapping的配置找到处理请求的处理器(Handle)。
注:Spring MVC中并没有定义一个Handler接口,实际上任何一个Object都可以成为请求处理器。
3、当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。
注:HandlerAdapter是Spring MVC的框架级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用。
4、处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息。
5、ModelAndView中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由ViewResolver完成逻辑视图名到真实视图对象的解析工作。
6、当得到真实的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。
7、最后响应给客户端。
三、注解
@RequestMapping :蹩脚翻译,请求映射,也就是请求地址映射,有两个参数
1、value:指定请求的实际地址;
2、method: 指定请求的method类型,GET、 PUT、POST、DELETE等
@RequestMapping("/testGet")
@RequestMapping(value = "/testPut/{id}", method = RequestMethod.PUT)
@RequestMapping(value = "/testPost/{id}", method = RequestMethod.POST)
@RequestMapping(value = "/testDelete/{id}", method = RequestMethod.DELETE)
@PathVariable :路径变量?此处敲黑板,这个注解是将请求URL中的变量映射到方法参数上,举个栗子(=.=),请求URL为: http://host:port/project/test/deleteById/id
@RequestMapping(value = "/deleteById/{id}",method = RequestMethod.DELETE)
public String deleteById(@PathVariable("id") Integer id){
//......
return null;
}
这里要区分一下 @RequestParam
@RequestParam:请求参数
举个栗子(=.=),请求URL为:http://.../test?param1=user¶m2=123
@RequestMapping(value = "/test",method = RequestMethod.GET)
public String testMethod(@RequestParam("param1") String name,@RequestParam("param2") String pwd){
//......
return null;
}
@CookieValue: 获取Cookie中的值
@SessionAttributes: 将值放到session中,写在类上面
@ResponseBody:返回某种格式数据(json等)