三、映射处理器Handler Mapping
1.简析映射处理器
在spring mvc中,使用映射处理器可以把web请求映射到正确的处理器上,spring内置了很多映射处理器,而且我们也可以自定义映射处理器。下面的实例展示spring中最常用的两个映射处理器:BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping。在正式开始前有必要了解以下相关要点:
(1)映射处理器都能把请求传递到处理器执行链接(HandlerExecutionChain)上,并且处理器执行链接必须包含能处理该请求的处理器(实质就是处理器链上动态添加了了此处理器,可以结合filter工作原理理解),而且处理器链接也能包含一系列拦截器。
(2)上面列举的spring最常用的两种处理器都是继承自AbstractHandlerMapping类,因而它们具备父类的属性。
2.实例:BeanNameUrlHandlerMapping
建立springMVC_03_handlerMappingsweb项目,并导入相关jar包。
步骤一:建立后端控制器MessageController.java,代码如下:
package com.asm;
//...省略导入的相关类
public class MessageController implements Controller {
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
ModelAndView mav = new ModelAndView("message");
mav.addObject("message", "您好!spring MVC");
return mav;
}
}
步骤二:配置web.xml,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>spmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
步骤三:配置spmvc-servlet.xml,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
<bean name="/message.do" class="com.asm.MessageController"></bean>
</beans>
步骤四:在WEB-INF/page目录下建立message.jsp,主要代码如下:
<body>
Message:${message}
</body>
步骤五:启动服务器,输入…/message.do访问测试。
简析执行过程
(1)启动服务器后,当我们向服务器发送message.do请求时,首先被在web.xml中配置的前端控制器DispatcherServlet拦截到。
(2)前端控制器把此请求转交给后端控制器,下面分析转交过程:当在spmvc-servlet.xml中查找能执行message.do请求的映射处理器时,发现没有能处理此请求的映射处理器,这时便使用默认的映射处理器BeanNameUrlHandlerMapping
:
This is the default implementation used by the DispatcherServlet
, along with DefaultAnnotationHandlerMapping
(on Java 5 and higher). 我们还需注意:这种后端控制器的bean Name必须以“/”开头,并且要结合DispatcherServlet的映射配置。同时beanName支持通配符配置。比如如果配置:<bean name="/m*.do" class="com.asm.MessageController" /> 时,当访问messasge.do时也可以成功访问到MessageController类。
(3)BeanNameUrlHandlerMapping
处理器,会查找在spring容器中是否在名为“message.do”的bean实例。当查找到此实例后,则把此bean作为处理此请求的后端控制器。同时把自身加到映射处理器链上,并向处理器链传递此请求。
(4)后端控制器进行处理,并返回视图。
分享到:
相关推荐
"spring-mvc-test"是一个基础的Spring MVC入门示例,旨在帮助开发者快速了解Spring MVC框架的工作原理和使用方法。通过这个项目,我们可以学习到如何配置和运行Spring MVC项目,以及如何利用Jetty作为开发和测试环境...
在本入门示例中,我们将深入理解 Spring MVC 的核心概念和关键组件,以便初学者能够快速上手。 1. **MVC 模式** MVC 模式是一种软件设计模式,用于分离应用程序的数据模型、用户界面和业务逻辑。Model(模型)处理...
本资源"Spring MVC step-by-step 源码"是针对初学者准备的入门教程,通过实际项目"springapp"来帮助理解Spring MVC的工作原理。 在MyEclipse环境下开发的"springapp"项目,涵盖了Spring MVC的基础配置和核心组件。...
这个名为"spring-mvc.rar_spring mvc"的压缩包可能是为了帮助初学者理解和入门Spring MVC,解决他们在开发过程中可能遇到的问题。下面将详细阐述Spring MVC的核心概念和关键组件。 1. **DispatcherServlet**:它是...
`web.xml`配置了DispatcherServlet,而`spring-servlet.xml`则包含了Spring MVC的详细配置,如处理器映射器、视图解析器、以及bean的定义。 3. **Controller**: 控制器是处理用户请求的核心组件,通常用@...
这个"spring-mvc-study"项目可能是为了帮助初学者理解SpringMVC的工作原理和配置过程。 在SpringMVC中,"Hello World!"的实现通常涉及以下几个关键组件: 1. **DispatcherServlet**:这是SpringMVC的核心组件,...
Spring Web MVC允许开发者将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种模式的主要目的是实现Web层的职责分离,从而提高应用程序的可维护性和可扩展性。 在Spring Web MVC中,...
Spring MVC Webflow是一个基于Spring框架的强大力量,用于构建高度交互式的Web应用程序。它将Spring MVC的功能与一种称为Webflow的流程管理概念相结合,帮助开发者更好地组织和控制用户会话的生命周期。在这个教程中...
1. **DispatcherServlet**:这是Spring MVC的前端控制器,负责接收HTTP请求,然后根据请求映射信息转发给相应的处理器。 2. **Controller**:控制器是处理请求并返回视图模型的类。开发者通常会定义一系列处理方法,...
总结一下,Spring MVC入门涉及的关键概念有: 1. `DispatcherServlet`:作为请求分发器。 2. XML配置:定义组件,如视图解析器、处理器映射器和处理器适配器。 3. 注解配置:使用`@Controller`、`@RequestMapping`等...
2. DispatcherServlet(前端控制器)捕获请求,它是Spring MVC的核心组件,负责调度请求到合适的处理器。 3. HandlerMapping(处理器映射器)根据请求的URL查找对应的Handler(控制器方法)。 4. HandlerAdapter...
《Spring MVC 入门详解》 Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)架构。在这个入门项目中,我们将深入探讨 Spring MVC 的核心概念、配置以及实际应用。...
- 控制器配置:配置DispatcherServlet,这是Spring MVC的核心组件,用于将请求映射到对应的处理器上。 4. 视图解析与控制器工作原理 - 请求处理流程:通过DispatcherServlet,理解Spring MVC如何接收请求、处理...
这标志着你的Spring MVC入门程序已经成功运行。 在这个过程中,你学到了如何配置Spring MVC项目,包括Maven依赖、DispatcherServlet、servlet-context.xml配置、控制器编写以及视图渲染。这些都是Spring MVC开发的...
**Spring MVC 入门实例详解** Spring MVC 是 Spring 框架的一个重要模块,用于构建 Web 应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者将业务逻辑、数据处理和用户界面分离,实现更加清晰的代码结构。...
这个经典入门案例将引导你逐步了解并掌握 Spring MVC 的基本概念、配置以及实际应用。 1. **Spring MVC 概述** Spring MVC 是一个模型-视图-控制器(MVC)架构模式的实现,它简化了Java Web 应用的开发,提供了一...
在实际项目中,"spring-mvc基础入门"可能包括创建一个简单的Spring MVC项目,配置web.xml和Spring的Context配置,编写第一个Controller,处理GET和POST请求,学习如何注入Service层,理解模型数据的传递,以及如何...
如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用...
**Spring3 MVC 入门Hello World源码解析** Spring3 MVC是Spring框架的重要组成部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)框架。本篇将深入探讨Spring3 MVC的基础知识,通过"Hello World"实例来...