springMVC
Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和响应。
工作原理
第1步:浏览器发送指定的请求都会交给DispatcherServlet,他会委托其他模块进行真正的业务和数据处理 第2步:DispatcherServlet会查找到HandleMapping,根据浏览器的请求找到对应的Controller,并将请求交给目标Controller 第3步:目标Controller处理完业务后,返回一个ModelAndView给DispatcherServlet 第4步:DispatcherServlet通过ViewResolver视图解析器找到对应的视图对象View 第5步:视图对象View负责渲染,并返回到浏览器
启动流程
当tmocat启动后,会自动的读取xml配置文件。首先读DispatcherServlet,还有其他配置的位置。
在spring MVC中的启动类会执行:读取xml,用DOM操作读取自定义标签,这里面有controller的那个扫描范围。当读取到扫描范围之后,他就会去所有包下面扫描所有文件,把那个.class文件拿出来,根据路径进行反射,获取到每个类的信息,然后挑出带有controller注解的类的信息,然后挑带有requestmapping的,将这两个的value进行拼接成一个url,然后获取那个类和方法的实例,然后再把url为key,方法实例当作value存入到hashmap中。
请求流程
tomcat收到请求后,是没办法给controller的,所以会先发给DispatcherServlet,DispatcherServlet会提取那个url,根据提取的url和hashmap进行匹配,匹配成功的话,就拿出实例,进行代理去执行对应的Method方法。
DispatcherServlet作用
在使用springMVC的时候,和前台对接的是controller,但是tomcat它并不会识别controller,也就没有办法和前台对接,所以需要DispatcherServlet当作一个中转的。
controller入参的可以是对象类型,httprequest参数是如何转化为对象的?
借助java的反射,将参数对象进行反射,然后和请求的参数进行匹配,key一样就把请求参数赋值给对象的域的值。