上面的是springMVC的工作原理图:
1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。
3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。
5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。
6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。
7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。
---------------------------------------------------------------------
在web.xml配置中
<url-pattern>/url-pattern>拦截的是客户端发送过来的请求,“/”表示拦截除了jsp中的所有的,“/*”表示“.jsp”请求也会被拦截。
请求拦截之后,控制权被DispatcherServlet获取,然后DispatcherServlet将拦截到到的请求交与@Controller注解下与@RequestMapping注解进行匹配,使得@RequestMapping注解下的方法对请求进行处理。
Controller下的方法处理完之后,return的返回值默认为视图对象,
Controller下的方法处理完之后,return的返回值默认为视图对象
Controller下的方法处理完之后,return的返回值默认为视图对象,
,通过XXX-servlet.xml中配置的和添加上下文之后,在相应路径中寻找视图文件。
当然,也可以通过重定向return "redirect:/ XXX";,使得另一个Controller对请求XXX继续进行处理。