- 浏览: 301370 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (298)
- Tomcat (3)
- ZooKeeper (1)
- Maven (11)
- opensource (1)
- DataBase (5)
- UML (8)
- linux (87)
- Java (32)
- 算法 (3)
- Redis (1)
- HBase (2)
- 产品 (1)
- 模板引擎 (1)
- Eclipse (10)
- JUnit (5)
- Log4j (8)
- XML (2)
- JSON (1)
- SpringMVC (23)
- Spring (24)
- TCP/IP (4)
- Windows (10)
- Web Service (1)
- 源码版本管理 (1)
- Word (1)
- Test (1)
- Mybatis (7)
- CentOS (2)
- 多线程 (2)
- Web (7)
- Servlet (3)
- JavaWeb (4)
- MySQL (7)
- 汇编语言 (2)
- linux Shell (4)
- GIT (4)
- Python (1)
- 并发 (4)
- 编程通用 (1)
- JavaScript (1)
- 异常 (3)
- 自动化部署 (1)
- 大数据 (1)
- hive (2)
- 文本编辑器 (2)
- MINA (0)
- intellij IDEA (9)
- masm (0)
- blockchain (1)
- docker (2)
- IDEA (0)
- GO (3)
- nginx (1)
- springBoot (3)
- Websocket (2)
- macOS (1)
最新评论
-
woodding2008:
ss –pl 可以查看监听方式启动的端口以及pid
根据端口查PID,根据PID查进程名称 -
masuweng:
恩很试用,也很常用。
linux 常用命令
Ant path 匹配原则
在Spring MVC中经常要用到拦截器,在配置需要要拦截的路径时经常用到<mvc:mapping/>子标签,其有一个path属性,它就是用来指定需要拦截的路径的。例如:
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="com.i360r.platform.webapp.runtime.view.interceptor.GenericInterceptor" />
</mvc:interceptor>
</mvc:interceptor>
根据以上配置,此拦截器会拦截所有的请求。
Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache Ant的样式路径,Apache Ant样式的路径有三种通配符匹配方法(在下面的表格中列出)
这些可以组合出很多种灵活的路径模式
Table Ant Wildcard Characters
Wildcard Description
? 匹配任何单字符
* 匹配0或者任意数量的字符
** 匹配0或者更多的目录
Table Example Ant-Style Path Patterns
Path Description
/app/*.x 匹配(Matches)所有在app路径下的.x文件
/app/p?ttern 匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern
/**/example 匹配(Matches) /app/example, /app/foo/example, 和 /example
/app/**/dir/file. 匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java
/**/*.jsp 匹配(Matches)任何的.jsp 文件
HandlerMapping
一 个WEB应用程序基本上都要依赖于URL与请求处理器之间的映射,spring MVC也是一样,但Spring MVC就像Spring所作的一切一样(译者:灵活,可以配置各种东西,但是也造成了很多复杂性),肯定不会只有一种方法来映射URL和 Controller之间的关系,并且在实际上,允许你自己创建映射规则和实现,而不仅仅依赖URL映射。
Spring提供了URL的映射处理, 并且处理路径模式的顺序和方法并没有限定到任何的接口上。Spring MVC的默认实现org.springframework.web.servlet.handler. AbstractUrlHandlerMapping, 会以最长符合路径模式来匹配一个路径。
例如:给定一个请求是 /app/dir/file.jsp 并且现在存在两个路径匹配模式/**/*.jsp 和/app/dir/*.jsp, 那么,URL会匹配那个模式呢?最后的那个模式/app/dir/*.jsp,会因为最长(has more characters)的原则被匹配,它比/**/*.jsp拥有更多的字符.注意的是,这个原则并没有在任何高级别的接口中指定,但却是一种实现细节。
!!下面看一下默认的两个HandlerMapping
BeanNameUrlHandlerMapping
默 认的映射策略实现是org.springframework.web. servlet.handler.BeanNameUrlHandlerMapping类. 这个类要求任何有可能处理请求的Bean都要起一个以反斜杠(/)字符开头的名称或者别名,这个名称或者别名可以是符合URL Path匹配原则中的任何名字。
Listing A Controller Mapped by a Bean Name
xml 代码
<bean name="/home" class="com.apress.expertspringmvc.flight.web.HomeController">
<property name="flightService" ref="flightService" />
</bean>
■注意:你不能使用id这个属性来指定任何的URL路径,因为在XML规格定中禁止(/)字符来指定XML的id,不过你可以在一个Bean定义中同时拥有id和name属性
BeanNameUrlHandlerMapping 的缺点
它 非常便于使用的同时,也拥有一些缺点。它不能影射一个Prototype的Bean.换句话说,当使用 BeanNameUrlHandlerMapping时, 所有的请求处理类只能是单例的(singletons) . 一般来说,Controllers 都是按照单例建立的,所以这个并不是一个很严重的问题.还有,我会在后面的章节中介绍Controller,只会有很少类型的Controller需要是 prototypes.
■注释: Prototype bean 是一种非单例(non-singleton)的bean. 任何一次调用ApplicationContext的getBean()方法时都会返回一个新的Bean实例.
BeanNameUrlHandlerMapping的另外一个问题存在于在你的应用程序中 应用拦截(interceptor). 因为请求的映射(handler mapping )和Bean(beans imapping)的映射给绑定在一起了,没有分开,这样就不可能在Controller和拦截之间创建复杂的关系。如果有复杂的请求映射需求,你可以用 SimpleUrlHandlerMapping 来代替BeanNameUrlHandlerMapping. SimpleUrlHandlerMapping作为BeanNameUrlHandlerMapping的另外一种选择, SimpleUrlHandlerMapping直指BeanNameUrlHandlerMapping的两大软肋.它可以映射 prototype类型的请求处理器,并且它允许你为处理器(handlers)和拦截器(interceptors)之间创建复杂灵活的映射路径的映射算法与BeanNameUrlHandlerMapping是 使用相同的基础组件,所以这个模式依然是映射URL到请求处理器的(request handler) ,你简单的在ApplicationContext中声明一下,就可以使用SimpleUrlHandlerMapping了. DispatcherServlet会根据类型找到的,并且不会创建默认的映射器了(BeanNameUrlHandlerMapping).意思就是, 如果你想两个都用,那么就要全部声明一下在ApplicationContext里.
■提示 DispatcherServlet会链式处理请求的(译者:依次处理请求,可以参照过滤器和GOF中的责任链模式),这样允许按照你的要求处理映射,映射处理器(Handler mappings )实现了Orderedr接口.
from : http://blog.csdn.net/rj042/article/details/23278337
在Spring MVC中经常要用到拦截器,在配置需要要拦截的路径时经常用到<mvc:mapping/>子标签,其有一个path属性,它就是用来指定需要拦截的路径的。例如:
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="com.i360r.platform.webapp.runtime.view.interceptor.GenericInterceptor" />
</mvc:interceptor>
</mvc:interceptor>
根据以上配置,此拦截器会拦截所有的请求。
Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache Ant的样式路径,Apache Ant样式的路径有三种通配符匹配方法(在下面的表格中列出)
这些可以组合出很多种灵活的路径模式
Table Ant Wildcard Characters
Wildcard Description
? 匹配任何单字符
* 匹配0或者任意数量的字符
** 匹配0或者更多的目录
Table Example Ant-Style Path Patterns
Path Description
/app/*.x 匹配(Matches)所有在app路径下的.x文件
/app/p?ttern 匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern
/**/example 匹配(Matches) /app/example, /app/foo/example, 和 /example
/app/**/dir/file. 匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java
/**/*.jsp 匹配(Matches)任何的.jsp 文件
HandlerMapping
一 个WEB应用程序基本上都要依赖于URL与请求处理器之间的映射,spring MVC也是一样,但Spring MVC就像Spring所作的一切一样(译者:灵活,可以配置各种东西,但是也造成了很多复杂性),肯定不会只有一种方法来映射URL和 Controller之间的关系,并且在实际上,允许你自己创建映射规则和实现,而不仅仅依赖URL映射。
Spring提供了URL的映射处理, 并且处理路径模式的顺序和方法并没有限定到任何的接口上。Spring MVC的默认实现org.springframework.web.servlet.handler. AbstractUrlHandlerMapping, 会以最长符合路径模式来匹配一个路径。
例如:给定一个请求是 /app/dir/file.jsp 并且现在存在两个路径匹配模式/**/*.jsp 和/app/dir/*.jsp, 那么,URL会匹配那个模式呢?最后的那个模式/app/dir/*.jsp,会因为最长(has more characters)的原则被匹配,它比/**/*.jsp拥有更多的字符.注意的是,这个原则并没有在任何高级别的接口中指定,但却是一种实现细节。
!!下面看一下默认的两个HandlerMapping
BeanNameUrlHandlerMapping
默 认的映射策略实现是org.springframework.web. servlet.handler.BeanNameUrlHandlerMapping类. 这个类要求任何有可能处理请求的Bean都要起一个以反斜杠(/)字符开头的名称或者别名,这个名称或者别名可以是符合URL Path匹配原则中的任何名字。
Listing A Controller Mapped by a Bean Name
xml 代码
<bean name="/home" class="com.apress.expertspringmvc.flight.web.HomeController">
<property name="flightService" ref="flightService" />
</bean>
■注意:你不能使用id这个属性来指定任何的URL路径,因为在XML规格定中禁止(/)字符来指定XML的id,不过你可以在一个Bean定义中同时拥有id和name属性
BeanNameUrlHandlerMapping 的缺点
它 非常便于使用的同时,也拥有一些缺点。它不能影射一个Prototype的Bean.换句话说,当使用 BeanNameUrlHandlerMapping时, 所有的请求处理类只能是单例的(singletons) . 一般来说,Controllers 都是按照单例建立的,所以这个并不是一个很严重的问题.还有,我会在后面的章节中介绍Controller,只会有很少类型的Controller需要是 prototypes.
■注释: Prototype bean 是一种非单例(non-singleton)的bean. 任何一次调用ApplicationContext的getBean()方法时都会返回一个新的Bean实例.
BeanNameUrlHandlerMapping的另外一个问题存在于在你的应用程序中 应用拦截(interceptor). 因为请求的映射(handler mapping )和Bean(beans imapping)的映射给绑定在一起了,没有分开,这样就不可能在Controller和拦截之间创建复杂的关系。如果有复杂的请求映射需求,你可以用 SimpleUrlHandlerMapping 来代替BeanNameUrlHandlerMapping. SimpleUrlHandlerMapping作为BeanNameUrlHandlerMapping的另外一种选择, SimpleUrlHandlerMapping直指BeanNameUrlHandlerMapping的两大软肋.它可以映射 prototype类型的请求处理器,并且它允许你为处理器(handlers)和拦截器(interceptors)之间创建复杂灵活的映射路径的映射算法与BeanNameUrlHandlerMapping是 使用相同的基础组件,所以这个模式依然是映射URL到请求处理器的(request handler) ,你简单的在ApplicationContext中声明一下,就可以使用SimpleUrlHandlerMapping了. DispatcherServlet会根据类型找到的,并且不会创建默认的映射器了(BeanNameUrlHandlerMapping).意思就是, 如果你想两个都用,那么就要全部声明一下在ApplicationContext里.
■提示 DispatcherServlet会链式处理请求的(译者:依次处理请求,可以参照过滤器和GOF中的责任链模式),这样允许按照你的要求处理映射,映射处理器(Handler mappings )实现了Orderedr接口.
from : http://blog.csdn.net/rj042/article/details/23278337
发表评论
-
spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void
2017-10-22 22:50 1118http://blog.csdn.net/wm5920 ... -
SpringMVC里的Root/Child WebApplicationContext的继承关系(Listener和servlet加载spring文件的区别)
2017-10-22 21:10 805简述: 在tomcat启动控制台输入如下信息: ... -
Spring 国际化信息
2017-09-12 11:23 459引用 http://stamen.iteye.com/bl ... -
Spring 返回json数据
2017-07-24 15:27 897参考:http://www.cnblog ... -
mybatis与spring集成 对应版本支持查看
2017-07-14 15:59 2375地址:点击打开链接 查看依赖版本 -
SpringMVC源码剖析(一)- 从抽象和接口说起
2017-05-15 21:09 614非本人原创,转自 https ... -
DispatcherServlet 和 ContextLoaderListener 的关系,到底用哪个?
2017-03-14 15:01 822from: http://www.cnblogs.com/ca ... -
Spring ContextLoaderListener与DispatcherServlet所加载的applicationContext的区别
2017-03-14 14:45 1172from: http://blog.csdn.net/madu ... -
applicationContext.xml 和 springmvc-servlet.xml 配置文件加载顺序
2016-12-20 15:32 788applicationContext.xml是随Context ... -
Spring Bean管理
2016-11-02 19:29 603from: http://blog.csdn.net/a9 ... -
标签<context:component-scan/><context:annotation-config/><mvc:annotation-driven/>
2016-11-02 19:24 485from: http://yimengzhu.iteye.co ... -
ContextLoaderListener与DispatcherServlet所加载的applicationContext的区别
2016-11-02 19:16 505本人来自: http://blog.csdn.net/madu ... -
DispatcherServlet 和 ContextLoaderListener 区别
2016-11-02 19:16 753总结一下: Spring的WebApplicationC ... -
spring 3.0.5的<mvc:resources> 标签的使用
2016-11-01 23:59 612from: http://ericxiong.iteye. ... -
Spring加载resource时classpath*:与classpath:的区别
2016-10-19 10:14 975from : http://blog.csdn.net/ ... -
Java web工程web.xml 配置中classpath: 与classpath*:的区别
2016-10-19 10:13 429首先 classpath是指 WEB-INF文件夹下的clas ... -
SpringMVC中Controller的@ResponseBody注解或HttpResponseServlet输出内容
2016-09-29 15:18 1190需求分析:需要 利用 out 对象返回给财付通是否接收 ... -
SpringMVC 的请求参数获取的几种方法
2016-09-28 16:57 590通过@PathVariabl注解获取路径中传递参数JA ... -
SpringMVC的各种参数绑定方式
2016-09-28 16:53 447from: http://www.cnblogs.com/ ... -
Spring MVC DispatcherServlet详解
2016-09-28 13:51 602Spring MVC的特点 Spring M ...
相关推荐
Spring MVC 路径匹配原则详解 Spring MVC 中的路径匹配原则是指在配置拦截器时,使用 `<mvc:mapping/>` 子标签指定需要拦截的路径。该标签的 `path` 属性用来指定需要拦截的路径,例如 `<mvc:interceptor><mvc:...
1. **类型安全的路径变量**:这个版本引入了类型安全的路径变量,允许开发者指定路径变量的预期类型,从而在编译时检查类型匹配,减少运行时错误。 2. **Java配置增强**:Spring 4.2.x系列进一步提升了Java配置的...
还需要配置Web应用服务器,比如Tomcat,并确保Spring Framework的版本与项目需求匹配。 接着,让我们来看看注解的使用。在Spring MVC中,注解大大简化了配置过程。例如,`@Controller`注解标识一个类作为控制器,`@...
#### 路径匹配 (Path Matching) - **消息转换器**:用于处理不同类型的请求体和响应体。 - **使用 MVC Java 编程进行高级定制**:通过 Java 配置类来定制 Spring MVC 的行为。 - **使用 MVC 命名空间进行高级定制**...
### Spring MVC 学习指南详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring 框架的一部分,主要用于构建基于 Model-View-Controller (MVC) 设计模式的 Web 应用程序。它提供了丰富的功能来简化 Web 开发过程,...
- **路径映射**:通过 URL 路径匹配控制器方法。 - **注解映射**:使用 `@RequestMapping` 注解定义 URL 与方法的映射关系。 #### 九、Spring MVC 拦截器 **拦截器** 是一种特殊的组件,可以在请求被控制器处理...
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、高性能和灵活的Web应用程序。这个"spring mvc login demo"项目旨在提供一个基础的登录功能示例,帮助开发者理解如何在Spring MVC环境中实现用户身份验证...
3. **HandlerMapping**:该接口负责将请求与处理器(Controller)进行匹配,Spring MVC 提供了多种实现,如基于注解的 HandlerMapping,可以根据 @RequestMapping 注解将 URL 映射到控制器方法。 4. **...
`Ant Path`是Spring MVC中用于URL路径匹配的一种策略,它借鉴了Apache Ant构建工具的路径匹配规则,提供了高度灵活的路径匹配功能。 1. **Spring MVC 路径匹配** 默认情况下,Spring MVC 使用 `AntPathMatcher` 类...
Spring MVC 支持 RESTful 风格的 URL 设计,可以通过 HTTP 动词(GET、POST、PUT、DELETE 等)和资源路径来区分不同的操作。 ### 8. 异步处理 Spring MVC 提供了异步处理能力,Controller 方法可以返回 `...
在指定的`contextConfigLocation`路径下创建servlet-context.xml文件,定义Spring MVC的上下文配置。包括视图解析器、处理器映射器、拦截器等。例如,可以配置InternalResourceViewResolver作为视图解析器: ```xml...
Spring、Spring MVC和MyBatis是Java EE中最受欢迎的框架之一。这些框架的整合使用广泛用于构建企业级应用。下面将详细介绍这些框架的核心概念、模块组成、实例化Bean的方式以及依赖注入的机制和优势。 Spring框架...
- **支持RESTful风格**: 通过URL路径、HTTP方法和请求头,Spring MVC支持创建符合REST原则的API。 ### 4. Spring MVC的实际应用 在实际开发中,Spring MVC常与其他Spring模块结合使用,如Spring Data用于数据库...
文档还提到了 Spring MVC 启用 MVC Java 编程配置或 MVC 命名空间的默认配置的定制化,转换与格式化、验证拦截器、内容协商视图控制器、视图解析器、资源的服务路径匹配以及消息转换器等方面,这些都是 Spring MVC ...
Spring MVC 是一款强大的Java web应用程序框架,用于构建高效、模块化的Web应用。它基于Spring框架,专注于处理HTTP请求和响应,使得开发者可以更便捷地实现控制器逻辑和视图的分离。在Spring MVC中,注解式开发是其...
可以指定URL路径、HTTP方法(GET、POST等)和其他属性,以匹配特定的请求。 3. `@GetMapping` 和 `@PostMapping`:这是对 `@RequestMapping` 的简化,分别用于处理GET和POST请求。例如,`@GetMapping("/hello")` 会...
部署时,需确保将应用的 `WEB-INF` 目录结构正确设置,包括 `web.xml` 文件(如果使用的是较早的 Spring MVC 版本),以及类路径下的配置文件。 **总结** Spring MVC 提供了一种结构化、可扩展的方式来开发 Web ...
在Spring 3.0中,Spring MVC引入了强大的注解支持,使得开发Web应用程序变得更加简洁高效。本节将深入探讨Spring MVC注解及其在实际应用中的实现方式。 首先,Spring MVC注解允许开发者以声明式的方式配置控制器,...
在IT行业中,Spring MVC是一个广泛使用的Java Web框架,它提供了强大的模型-视图-控制器(MVC)架构来构建Web应用程序。这篇博客“spring-mvc 基础功能之源码debug”似乎深入探讨了Spring MVC的核心功能,并通过源码...
- `@RequestMapping`注解用于映射URL到控制器方法,可以按路径、方法(GET、POST等)进行精确匹配。 5. **模型数据绑定@RequestParam和@ModelAttribute** - `@RequestParam`用于从请求参数中获取数据,绑定到方法...