springmvc框架温习

SpringMVC是Spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合,是基于mvc的web框架
一、步骤描述及图解
在这里插入图片描述
SpringMVC图解
在这里插入图片描述
第1步 浏览器发送请求到前端控制器DispatchServlet
第2步 前端控制器请求HandlerMapping查找Handler,可以根据xml配置、注解进行查找
第3步 处理映射器HandlerMapping前端控制器返回Handler
第4步 前端控制器请求处理器适配器(HandlerAdapter)执行Handler
第5步 处理器适配器调用Handler
第6步 处理器(Handler)处理器适配器返回ModelAndView(是spring框架的一个底层对象)
第7步 处理器适配器前端控制器返回ModelAndView
第8步 前端控制器请求视图解析器(viewResolver)进行视图解析,根据逻辑视图名解析成真正的视图(如jsp页面)
第9步 视图解析器向前端控制器返回view
第10步 前端控制器进行视图渲染,将模型数据(在ModelAndView对象中)填充到request域
第11步 前端控制器向用户响应结果
组件解释:
1、前端控制器 DispatchServlet(框架提供)接收请求、响应结果,相当于转发器(中央处理器),减少了其它组件之间的耦合
2、处理器映射器 HandlerMapping(框架提供),根据请求的url查找Handler
3、处理器适配器 HandlerAdapter 按照HandlerAdapter 要求的规则去执行Handler
4、处理器Handler(需要开发)编写时按照HandlerAdapter的要求,这样适配器才能正确执行Handler
5、视图解析器ViewResolver(框架提供)进行视图解析,根据视图名解析成真正的视图(view)
6、视图 view(需要开发)是一个接口,实现类支持不同的view类型(jsp、freemarke…)
二、编码部分
web.xml配置前端控制器DispatchServlet

<!-- springMvc前端控制器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	
  	<!-- contextConfigLocation配置springmvc加载的配置文件(其中配置处理器映射器,适配器等)
  		如果不配置contextConfigLocation,默认加载的是WEB-INF/servlet名称-servlet.xml(即springmvc-servlet.xml)
  	 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:spring-mvc.xml</param-value>
  	</init-param>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<!-- 
  		1、匹配顺序
		该标签处理客户端请求的顺序为:
		(1)完全匹配
		<url-pattern>/test/userList.action</url-pattern>
		完全匹配就是等值匹配,它是最先被匹配到的客户端请求。
		
		(2)路径匹配
		<url-pattern>/*</url-pattern> 匹配根路径下的全部请求
		路径匹配类似于模糊匹配,对于/list、listInfo.do、checkInfo.action、index.jsp、abc.css、my.js等等url请求,都可以被匹配到。这种匹配的顺序排在完全匹配后面。
		(3)扩展名匹配
		<url-pattern>*.action</url-pattern>匹配全部action 结尾的请求
		<url-pattern>*.css</url-pattern> 匹配全部 css结尾的请求
		<url-pattern>*</url-pattern> 不能用 * ,否则报错
		说明:这种匹配匹配在开发中用的比较多,但不能使用*代替,否则会报错。
		结论:容器会首先查找完全匹配,如果找不到,再查找目录匹配,如果也找不到,就查找扩展名匹配。
		
		(1)<url-pattern>/</url-pattern>
		会匹配到 /toIndex 这种类型的 url ,不会匹配到模式为 *.jsp 这样的后缀型 url。
		(2)<url-pattern>/*</url-pattern>
		会匹配所有路径型的和后缀型的url。
  	 -->
  	<!--配置方式 
  		第一种:*.action  访问以.ation结尾的路径 由DispatcherServlet进行解析
  		第二种:/  所有访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet解析
  				使用此种方式可以实现RESTful风格的url
  		第三种:/*  这样配置错误,使用这种配置最终要转发一个jsp页面时仍然会使用DispatcherServlet解析jsp地址,不能根据jsp页面找到Handler会报错
  	 -->
  	<url-pattern>*.action</url-pattern>
  </servlet-mapping>

spring-mvc.xml配置
配置处理器适配器

<!-- 处理器适配器  所有处理器适配器都实现了HandlerAdapter -->
<bean id="simpleControllerHandlerAdapter" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

此接口实现了controller的Handler接口在这里插入图片描述
配置处理器映射器

<!-- 处理器映射器 简单url映射
	将bean的name作为url进行查找,需要配置Handler时指定beanname(即url)
-->
<bean id="beanNameUrlHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

配置视图解析器

<!-- 视图解析器 解析jsp视图,默认使用jstl标签,classpath下得有jstl的包 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

配置Handler

<!-- 配置Handler 这里的后缀对应web.xml中url-pattern的配置 -->
<bean id="itemsController" name="/queryList.action" class="com.idea.controller.ItemsController"></bean>

简单的url映射

<bean id="simpleControllerHandlerAdapter" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
	<property name="mappings">
		<props>
			<!-- 对controller进行url映射 填写controller bean标签的id,同一个bean可以有多个url -->
			<prop key="/query1.action">itemsController</prop>
		</props>
	</property>
</bean>

多个映射器可以并存,前端控制器会判断url符合规则的都可以
关于spring注解配置
前端控制器从/org/springframework/web/servlet/DispatcherServlet.properties文件中加载处理器映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,则使用默认加载
在spring版本3.1前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器
在这里插入图片描述
在spring版本3.1后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器
在这里插入图片描述
在spring版本3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解适配器
在这里插入图片描述
在spring版本3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器
在这里插入图片描述
通过springmvc源码分析执行过程
第一步:前端控制器接收请求
调用 doDispatch方法在这里插入图片描述
第二步:doDispatch方法会执行getHandler方法 返回HandlerExecutionChain
在这里插入图片描述
第三步:调用处理器适配器处理Handler,返回ModelAndView
在这里插入图片描述
第四步:调用视图解析器得到view
视图解析器
视图渲染 将model数据填充到Request域
在这里插入图片描述
视图解析器配置,可配置jsp页面前后缀

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值