Spring MVC的原理

执键写春秋
• 阅读 1710

Spring MVC的原理

Spring MVC的工作流程:
(1)客户端发起HTTP请求:客户端将请求提交到DisPatcherServlet(前端控制器)【所有的请求都有经过它来统一分发,在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。】。       ---控制配置详见位置1
(2)寻找处理器:由DisPatcherServlet控制器查询一个或多个HandlerMapping【完成客户请求到Controller映射】,找到处理该请求的Controller。   --处理配置器详见位置2
(3)调用处理器:DisPatcherServlet将请求提交到Controller。    --Controller扫描配置详见位置3
(4)调用业务逻辑并返回结果:Controller调用业务处理逻辑后,返回ModelAndView【模型(Model)和视图(View)】。
(5)处理视图映射并返回模型:由DisPatcherServlet控制器查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。     --视图解析配置详见位置4
(6)HTTP响应:视图负责将结果在客户端浏览器上渲染和展示。
位置 1【配置于web.xml】
<!-- spring-mvc核心控制器配置 -->
<servlet>
    <servlet-name>springmvc</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <!-- contextConfigLocation:指定spring-mvc配置的加载位置 -->
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc_context.xml</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <!-- url-pattern:*.action的请交给DispatcherServlet处理,对请求URL进行解析,得到请求资源标识符(URI),判断请求URI对应的映射 -->
    <url-pattern>*.action</url-pattern>
</servlet-mapping>

位置 2【配置于springmvc_context.xml】
<!-- 这两个类用来启动基于Spring MVC的注解功能,将控制器与方法映射加入到容器中 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
也等同于
<!-- 自动注册 HandlerMapping(实现为 RequestMappingHandlerMapping) 和 HandlerAdapter(实现为 RequestMappingHandlerAdapter) 两个类型的 Bean-->
<mvc:annotation-driven />和

位置 3【配置于springmvc_context.xml】
<!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 ,context:component-scan 的作用是扫描对应的 base-package,将 base-package 及其子包中被 @Component、@Controller、@Service、@Repository 等注解的类,注册到为 Spring Context,即在上下文环境中注册一个这样的 Bean-->
<context:component-scan base-package="com.xsc.controller" />

位置 4【配置于springmvc_context.xml】
<!-- 这个类用于Spring MVC视图解析,将ModelAndView及字符串解析为具体的页面 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- prefix指定在视图逻辑名前所添加的前缀 -->
    <property name="prefix" value="/WEB-INF/pages/" />
<!-- suffix指定在视图逻辑名后所添加的后缀 -->
    <property name="suffix" value=".jsp" />
</bean>
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
SpringMVC处理静态文件源码分析
SpringMVC处理静态资源,主要是两个标签,mvc:resources和mvc:defaultservlethandler。在详细说明他们的原理之前,需要先简单说明下SpringMVC中请求处理机制:HandlerMapping和HandlerAdapter。1HandlerMapping和HandlerAdapter的来由用过pytho
Easter79 Easter79
3年前
SpringMVC从认识到细化了解
\TOC\首发日期:20181101SpringMVC的介绍<br介绍:SpringMVC是一个Web层的MVC框架SpringMVC是基于servlet来处理web请求的,所有的请求都是先经过核心servlet再转交给对应的控制器。它与spring同属
Easter79 Easter79
3年前
SpringMVC第一天HelloWorld
1,普通Servlet的流程是通过配置<servlet</servlet和<servletmapping</servletmapping来拦截请求交给对应的Servlet来处理使用SpringMVC需要配置一个SpringMVC自带的Servlet,DispatcherServlet,使用他来拦截请求交给SpringMVC处理 we
Easter79 Easter79
3年前
SpringMVC中url映射到Controller
SpringMVC也是一种基于请求驱动的WEB框架,并且使用了前端控制器的设计模式。前端控制器就是DispatcherServlet控制器,只要满足web.xml文件中的【urlpattern】的规则,这个请求就会交给这个前端控制器(DispatcherServlet),然而前端控制器在收到请求后自己不进行任何处理,根据相应的【URL的映射规则】委托给其他
Easter79 Easter79
3年前
SpringMVC的工作原理图
SpringMVC的工作原理图:!(https://oscimg.oschina.net/oscnet/7ec9d18341c77418d09131858910f45ec97.jpg)SpringMVC流程1、 用户发送请求至前端控制器DispatcherServlet。2、 DispatcherServlet收到请求调用Ha
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
Java面试题总结
1)用过哪些设计模式,手写一个(除单例); 工厂模式,门面模式(个人有点像service层),代理模式2)springmvc的核心是什么,请求的流程是怎么处理的,控制反转怎么实现的; 1,用户发送请求至前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器