SpringMVC运行原理
1.首先用户发起请求
2.请求到达前端控制器DispatchterServlet
3.前端控制器转发给组件HandlendMapping,该组件进行url与后端映射关系解析,返回给前端控制器
4.前端控制器将HandlendMapping传来的内容发送给,handleAdapter处理适配组件,组件将请求发送给对饮的controller层
5.controller调用了对应的业务service层或则dao层,且通过依赖注入pojo,返回数据和模型给前端控制器(此步骤不属于spring-mvc,属于ssm)
6.前端控制器将数据和模型经过ViewResolver视图解析器,解析后再次回传到前端控制器
7.通过前端控制器将数据和视图,以JSP的页面形式呈现给用户
xml配置:
<!-- 配置SpringMVC -->
<!-- 1.开启SpringMVC注解驱动 -->
<mvc:annotation-driven />
<!-- 2.静态资源默认servlet配置-->
<mvc:default-servlet-handler/>
<!-- 3.配置jsp 显示ViewResolver视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 4.扫描web相关的bean -->
<context:component-scan base-package="com.kuang.controller" />
文件上传:
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">
<property name="maxUploadSize" value="10485760" />
<property name="maxInMemorySize" value="40960" />
<property name="defaultEncoding" value="utf-8" />
</bean>
springmvc过滤器:
<!-- 拦截器 -->
<mvc:interceptors>
<!-- 对所有请求都拦截,公共拦截器可以有多个 -->
<bean name="baseInterceptor" class="cn.zifangsky.interceptor.BaseInterceptor" />
<!-- <bean name="testInterceptor" class="cn.zifangsky.interceptor.TestInterceptor" /> -->
<mvc:interceptor>
<!-- 对/test.html进行拦截 -->
<mvc:mapping path="/test.html"/>
<!-- 特定请求的拦截器只能有一个 -->
<bean class="cn.zifangsky.interceptor.TestInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
springmvc拦截器和过滤器:主要是使用和aop一样的原理采用代理模式处理,而web.xml配置过滤器更多是反射来实现