Spring MVC 笔记
监听器 》过滤器 》 DispatcherSevlet 》
【前端控制器】负责分发调度 === Spring Web Mvc 里面的 DispatcherServlet
【控制器】业务数据抽取,传递 Model 。
【视图解析器】页面呈现
【模型】 model modelAndView Map
DispatcherServlet 怎么发现 @Controller ?
原理是 适配器模式,使用 HandlerAdapter。
HandlerIntercepter 拦截器 (貌似是代理模式)
HandlerMapping 这样Dispatcher就能根据 @RequestMapping 使用正确的 Controller
HandlerExecutionChain pre controller的方法 post*
【web.xml配置 DispatcherServlet 启动顺序】
【dispatcher-servlet.xml 配置】
<web-app>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 默认为/WEB-INF/$servlet-name$-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
<beans>
<context:annotation-config />
<!-- 配置只扫描 @Controller -->
<context:component-scan base-package="com.imooc">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- 打开mvc的注解 数据绑定、 -->
<mvc:annotation-driven />
<!-- 静态资源处理 -->
<mvc:resources mapping="/resources/**" location="/resources/" />
<bean class="org.springframwork.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/view/jsps/" />
<property name="suffix" value="*.jsp"/>
</bean>
</beans>
spring容器 applicationContext.xml
<beans>
<context:annotation-config />
<context:component-scan base-package="com.imooc">
<context:exclude-fliter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
</beans>
======================= Controller ============================
数据绑定 @RequestParam @PathVariable @ModelAndAttribute
文件上传 MultipartFile

浙公网安备 33010602011771号