最近的教学任务太过沉重,也就没有时间完成省下的内容。最近刚好能轻松些,希望能有时间把Spring MVC部分的内容写完。
通过上一节简单的例子,大家已经基本可以感受到Spring MVC的工作过程。今天我们主要看看DispatcherServlet是怎么把请求映射到对应的处理器上的。
Spring MVC中的DispatcherServlet收到一个请求后经过HandlerMapping会得到一个处理器链(HandlerExecutionChain)对象。它包括了处理这个请求的处理器和若干个对请求进行拦截处理的拦截器(HandlerInterceptor)。处理器链的工作原理如下图:
通过图示我们可以发现,处理器链在处理请求的时候首先要经过所有的拦截器,然后通过HandlerAdapter来执行处理器。
HandlerExecutionChain定义了如下的两个接口方法:
Object getHandler():返回处理请求的处理器对象。
HandlerInterceptor[] getInterceptors():返回处理器调用前后的拦截器数组。
拦截器HandlerInterceptor接口定义了如下3个方法:
boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler):在请求到达Handler之前,先执行这个前置方法。
void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView):在请求被处理器执行后执行。
void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex):在相应被渲染后执行。
HandlerAdapter接口定义如下:
ModelAndView handle(HttpServletRequest request,HttpServletResponse response,Object handler):使用处理器处理请求。
boolean supports(Object handler):判断处理器适配器是否支持这个Handler类型。
下面我们回过头来再来了解一下HandlerMapping。HandlerMapping的作用就是根据请求产生一个HandlerExecutionChain。具有如下几个属性:
interceptors:拦截器列表。
defaultHandler:默认处理器。
order:处理器的优先级。
alwaysUseFullPath:boolean类型,用于设定映射是绝对路径还是相对路径。默认值为false,相对路径。
urlPathHelper:指定分析URL时的UrlPathhelper。
下面我们简单看一下Spring中提供的常见的HandlerMapping类型:
BeanNameUrlHandlerMapping:这是最简单的处理器映射类,使用处理器的名字和URL相同的方法。比如:http://127.0.0.1:8080/soccerleague/main.html,对应的就映射到一个名字为"/main.html"的处理器上。一般我们不建议谁用这种处理器映射。
SimpleUrlHandlerMapping:这是最常用的HandlerMapping。通过一个properties类型的参数来指定URL如何和处理器进行映射。如:
xml 代码
- <bean
- class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="mappings">
- <props>
- <prop key="/main.html">main</prop>
- <prop key="/showProducts.html">showProducts</prop>
- <prop key="/register1.html">registerSelectLeague</prop>
- <prop key="/register2.html">registerEnterPlayer</prop>
- <prop key="/register3.html">
- registerSelectDivision
- </prop>
- <prop key="/admin/registerLeague.html">
- registerLeague
- </prop>
- </props>
- </property>
- </bean>
<bean>
一个应用中也可以配置多个映射器,通过指定order属性的不同来改善他们的优先级。
这部分的附件,是我在SpringMVC部分教学的一个案例。案例的题材来自于我的教学中的一个例子。完全采用了Spring来实现的功能。只是在页面的装配上使用了sitemesh,来完成页面的重用。数据库为MySQL,在项目的src下有完整的数据库备份。可以用来学习了解Spring MVC。项目中没有注释,因为这个工作我一般都是要求学生自己做
。下面的内容我将结合这个案例讲解。</bean>
分享到:
相关推荐
spring mvc2-1spring mvc2-1spring mvc2-1spring mvc2-1spring mvc2-1spring mvc2-1
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...
spring mvc2-1
2. **DispatcherServlet**:Spring MVC的入口点,它是一个前端控制器,接收所有HTTP请求,并根据配置的HandlerMapping转发到相应的Controller。 3. **Controller**:Controller是处理用户请求的组件,通常使用注解...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...
Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护和模块化的Web应用程序。它作为Spring框架的一部分,提供了一种优雅的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不是底层实现。在这...
2. **Java配置增强**:Spring 4.2.x系列进一步提升了Java配置的支持,使得在没有XML配置的情况下也能轻松地配置Spring MVC。 3. **RESTful支持**:Spring MVC提供了对RESTful风格的HTTP方法(如GET、POST、PUT、...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个教程“Spring MVC - A Tutorial”旨在帮助开发者深入理解和掌握Spring MVC的核心概念和...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在Spring MVC 4.0版本中,它引入了许多改进和新特性,以提升开发效率和应用程序的性能。 1. **依赖注入**:Spring ...
Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...
这是一个基于Spring MVC、Mybatis和Spring框架实现的个人博客系统,涵盖了Web开发中的后端架构设计、数据库管理和前端展示等多个方面。以下将详细介绍这个系统的关键知识点: **1. Spring MVC** Spring MVC是Spring...
2. **Spring MVC 模块**:`spring-webmvc.jar` 是 Spring MVC 的核心组件,它实现了 MVC 设计模式,提供请求处理、视图解析等功能。这个 jar 包是构建基于 Spring 的 Web 应用必不可少的。 3. **Spring Web 模块**...
Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...
相较于Struts2,Spring MVC避免了一些可能导致性能下降的特性,如值栈、OGNL表达式等。 二、Spring MVC核心类与接口:Spring MVC架构中包含许多核心组件,如DispatcherServlet、HandlerMapping、Controller、...
Spring MVC是Spring框架的一个核心模块,专用于构建Web应用程序。这个"Spring MVC使用Demo"提供了实践操作,帮助开发者深入理解Spring MVC的开发环境配置、注解的使用以及工作原理。 首先,Spring MVC的设计模式...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。Spring MVC的设计目标是提供一个清晰的组件化架构,使得开发者可以独立地开发和测试控制器、...
2. **Spring Security**: - **认证与授权**:Spring Security提供了一套完整的认证和授权机制。在这个无数据库的登录示例中,可能使用内存中的UserDetails和UserDetailsService实现认证。 - **配置**:可以使用...