SpringMVC前端控制器的配置理解

本文介绍了SpringMVC框架的工作流程,重点讲解了前端控制器DispatcherServlet的角色和配置。内容包括DispatcherServlet如何转发请求,处理器映射器、处理器适配器、视图解析器在流程中的作用,以及在web-xml和applicationContext-mvc.xml中配置前端控制器的细节,特别是解决静态资源文件被拦截的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、SpringMVC

SpringMVC是一个基于MVC模式的web/表现层框架,是spring的的一部分。

二、SpringMVC的工作流程

1.前端控制器(DispacherServlet):负责转发请求,接受用户的请求,申请处理后,将响应返回给客户

2.处理器映射器(HandlerMapping):前端控制器把请求转发给处理器映射器。处理器映射器根据请求中的URL,找到对应的Handler(相当于struts2的Action),返回给前端控制器。

3.处理器适配器(HandlerAdapter):前端控制器知道要执行哪个Handler,但是它只是把信息转发给处理器适配器,处理器适配器调用程序写好的Handler,Handler执行完,返回一个ModelAndView对象给适配器,处理器适配器再把这个对象返回给前端控制器

4.视图解析器(View resolver):前端控制器会把逻辑视图发送给视图解析器请求解析,视图解析器处理后返图物理视图(view)给前端控制器

5.前端控制器把视图响应返回给用户.

三.前端控制器

由SpringMVC的工作流程可以看出,前端控制器起到一个核心的作用,所有的请求响应都要经过前端控制器,那么前端控制器的配置是如何的?在web-xml中配置前端控制器

<!-- 配置前端控制器 :统一接收请求,然后分配-->
	<servlet>
		<servlet-name>DispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!--加载springmvc核心配置文件  -->
		<!-- 如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-servlet.xml -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:applicationContext-mvc.xml</param-value>
		</init-param>
		<!-- 启动就加载 -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	 <!-- 第一种 *.action 访问以.action结尾的DispatcherServlet进行解析-->限制性太强,范围太小
          第二种/,不会拦截jsp,但是会拦截除了jsp之外所有静态资源,
          第三种/*,拦截所有静态资源包括jsp,会出现访问jsp视图时被Spring的DispatcherServlet拦截,导致找不到请求资源引入的404错误
     -->
	<servlet-mapping>
		<servlet-name>DispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

以上配置中servlet-mapping中url的路径配置仅仅不会拦截jsp,其他的静态资源文件还是会被拦截,如何解决?
在applicationContext-mvc.xml中配置

       <!-- 开启注解扫描 -->
       <context:component-scan base-package="cn.itsource"></context:component-scan>
       <!-- 放行静态资源html等 -->
       <mvc:default-servlet-handler/>
       <!-- 使注解生效 -->
       <mvc:annotation-driven></mvc:annotation-driven>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值