`
喧嚣求静
  • 浏览: 551028 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring mvc handerMapping 映射找到Controller

阅读更多
HandlerMapping   
顶级接口getHandler()根据HttpServletRequest获取Handler

AbstractHandlerMapping
定义了拦截器

AbstractUrlHandlerMapping
提供PathVar的解析,及Controller Register的统一入口,至此整个HandlerMapping的框架已经搭起来了,只要将handlerMap填充相应的数据就可以使用了,继承树下的所有子类都是提供了不同的填充方式。

SimpleUrlHandlerMapping
HandlerMapping的一个最简单的实现,提供一个定义了url=beanName映射规则的Properties或Map来填充handlerMap。

AbstractDetectingUrlHandlerMapping
提供了自动扫描ApplicationContext中的所有bean,查找映射规则的功能。

DefaultAnnotationHandlerMapping(Default)
扫描bean,查找@RequestMapping,构建映射规则

BeanNameUrlHandlerMapping(Default)
扫描bean,将以”/”开头的bean的名称或别名(alias)注册为可以处理的url

AbstractControllerUrlHandlerMapping
提供了使用Controller beanName或class进行convention配置的抽象,提供了excludesPackage,及是否是合法Controller(继承自Controller或有@Controller)的判断。

ControllerClassNameHandlerMapping
通过Controller类名,包名建立映射关系,可以附加前缀。

ControllerBeanNameHandlerMapping
类似BeanNameUrlHandlerMapping的注册方式,不同的是这个类将所有继承自Controller或标有Controller的bean根据beanName以包名及指定的前缀,后缀自动生成映射关系。

spring 3.1.0以后就没必要配置上面的HandlerMapping beans,因为有了RequestMappingHandlerMapping ,它会自动查找在所有@Controller中使用了@requestMapping 注解的bean,同时也可以自定义一些属性行为:
interceptors
interceptor列表

defaultHandler
默认的handler,当不能找到合适的handler时使用。

order 用于排序,即使用优先级

alwaysUseFullPath
若为true,将使用全路径上下文(/testing/*)匹配查找(/testing/view.jsp),为false则使用当前路径(/view.jsp)。

urlDecode
默认为true,
使用interceptor例子
<beans>
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<ref bean="officeHoursInterceptor"/>
</list>
</property>
</bean>
<bean id="officeHoursInterceptor"
class="samples.TimeBasedAccessInterceptor">
<property name="openingTime" value="9"/>
<property name="closingTime" value="18"/>
</bean>
<beans>

/**
Interceptors located in the handler mapping must implement HandlerInterceptor from the
org.springframework.web.servlet package. This interface defines three methods:
preHandle(..) is called before the actual handler is executed; postHandle(..) is called after the
handler is executed; and afterCompletion(..) is called after the complete request has finished.
These three methods should provide enough flexibility to do all kinds of preprocessing and
postprocessing.
*/
package samples;
public class TimeBasedAccessInterceptor extends HandlerInterceptorAdapter {
private int openingTime;
private int closingTime;
public void setOpeningTime(int openingTime) {
this.openingTime = openingTime;
}
public void setClosingTime(int closingTime) {
this.closingTime = closingTime;
}
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
Calendar cal = Calendar.getInstance();
int hour = cal.get(HOUR_OF_DAY);
if (openingTime <= hour < closingTime) {
return true;
} else {
response.sendRedirect("http://host.com/outsideOfficeHours.html");
return false;
}
}
}

扩展阅读:
Spring MVC 全面学习
Spring MVC 全面学习2
自定义用于“基于Annotation的Controller ”的HandlerMapping
分享到:
评论

相关推荐

    Spring MVC 入门实例

    9 import org.springframework.web.servlet.mvc.Controller; 10 import org.springframework.web.servlet.ModelAndView; 11 12 import javax.servlet.http.HttpServletRequest; 13 import javax.servlet....

    全面掌握Spring MVC:从基础到高级的实践指南

    处理器映射器(HandlerMapping)和处理器适配器(HandlerAdapter)是核心组件,负责找到和调用适当的处理器(Controller)。 Spring MVC的一个关键特性是它的灵活性,支持多种类型的控制器和视图技术。它还提供了...

    使用Spring MVC和JSP构建的全栈RSS阅读器Web应用程序(95分以上课程大作业).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    spring mvc 3.2 参考文档

    Spring Web model-view-controller (MVC)框架是围绕 DispatcherServlet 设计的,并分发请求到处理程序(handler),Spring MVC支持可配置的处理程序映射(handler mapping),视图解析(view resolution)、 区域设置...

    详解Spring mvc ant path的使用方法

    任何一个WEB都需要解决URL与请求处理器之间的映射,spring MVC也是一样,但Spring MVC就像Spring所作的一切一样(灵活,可以配置各种东西,但是也造成了很多复杂性),肯定不会只有一种方法来映射URL和 Controller之间...

    spring mvc 思维导图

    Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。...

    springmvc demo

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发...

    spring-mvc-showcase:演示Spring MVC Web框架的功能

    Spring MVC展示柜 通过小而简单的示例演示Spring MVC Web框架的功能。 在回顾了这个展示之后,您应该对Spring MVC可以做什么有一个很好的了解,并了解它的易用性。 包括项目代码以及支持的幻灯片显示和屏幕投射。 ...

    Java之Spring Boot详解

    接下来我们比较一下Spring mvc和 Spring Boot的开发过程 Spring mvc (1)导入 spring mvc 的相关依赖包 (2)在 web.xml 文件中配置 Spring mvc 的前端控制器 (3)创建一个 spring mvc 的配置文件 (4)在 spring...

    Spring-MVC技术体系介绍(三)

    中文叫做一次性控制器,也就像一次性筷子那样用完即丢 并不在Spring的Controller继承架构中,而是一个独立的接口定义 当映射的不是一个model 对象时很有用 Bean的作用域必须是prototype ,他们本身不是线程安全的

    spring_MVC源码

    -- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --&gt; 14. &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt; 15. 16. &lt;!-- 对模型视图名称的解析...

    高级Spring Boot和Spring Cloud微服务示例 Zuul上的API Swagger2

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    Spring Boot ( Jetty )、Spring Cloud库、Netflix OSS工具、Docker

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    使用Spring in Guice和Guice in Spring的工具(高分项目).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    java、spring-boot、spring-tool-suite、maven、restful-api

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    用于将所有Spring xml配置转换为基于Spring java的配置的工具(高分毕设).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    Spring Boot Migrator (SBM)是一种用于自动代码迁移以升级或迁移到Spring Boot的工具

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    SpringMVC教程

    即有Spring2.5的 Controller接口的老版本 也包含新版Spring3.0,3.1 基于注解的MVC配置方法 总之绝对值得下载 学习 并以后查阅 目录 第一章 Web MVC简介.pdf 第二章 Spring MVC入门 .pdf 第三章 DispatcherServlet...

    Starter webapp Spring Boot + Angular 2

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    基于 Spring Cloud 组件构建的分布式服务架构

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

Global site tag (gtag.js) - Google Analytics