SimpleUrlHandlerMapping类的功能简介说明
下文笔者将讲述SimpleUrlHandlerMapping类的功能简介说明,如下所示:
SimpleUrlHandlerMapping的功能: 使用一组URL Pattern到处理器的映射而实现的 它使用配置的映射中的URL Pattern匹配请求中的URL 当匹配成功,则使用匹配URL Pattern映射的Bean作为处理器返回
SimpleUrlHandlerMapping源码
public class SimpleUrlHandlerMapping extends AbstractUrlHandlerMapping { private final Map urlMap = new HashMap(); // 通过属性配置URL到Bean名的映射 public void setMappings(Properties mappings) { CollectionUtils.mergePropertiesIntoMap(mappings, this.urlMap); } // 配置URL到Bean的映射 public void setUrlMap(Map urlMap) { this.urlMap.putAll(urlMap); } public Map getUrlMap() { return this.urlMap; } @Override public void initApplicationContext() throws BeansException { super.initApplicationContext(); // 初始化的时候注册处理器 registerHandlers(this.urlMap); } protected void registerHandlers(Map urlMap) throws BeansException { // 如果配置的处理器映射为空,则警告 if (urlMap.isEmpty()) { logger.warn("Neither 'urlMap' nor 'mappings' set on SimpleUrlHandlerMapping"); } else { // 对于没一个配置的URL到处理器的映射,如果URL不是以斜线(/)开头,则追加斜线开头,则注册处理器 for (Map.Entry entry : urlMap.entrySet()) { String url = entry.getKey(); Object handler = entry.getValue(); // Prepend with slash if not already present. if (!url.startsWith("/")) { url = "/" + url; } // Remove whitespace from handler bean name. if (handler instanceof String) { handler = ((String) handler).trim(); } registerHandler(url, handler); } } } }
SimpleUrlHandlerMapping如何声明呢?
声明方式1:
prop key方式,key是URL模式,属性值是Handler的ID或者名字。<beans ...> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/welcome.htm">welcomeController</prop> <prop key="/*/welcome.htm">welcomeController</prop> <prop key="/helloGuest.htm">helloGuestController</prop> </props> </property> </bean> <bean id="welcomeController" class="com.java265.controller.WelcomeController" /> <bean id="helloGuestController" class="com.java265.controller.HelloGuestController" /> </beans>
声明方式2:等号
<beans ...> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <value> /welcome.htm=welcomeController /*/welcome.htm=welcomeController /helloGuest.htm=helloGuestController </value> </property> </bean> <bean id="welcomeController" class="com.java265.controller.WelcomeController" /> <bean id="helloGuestController" class="com.java265.controller.HelloGuestController" /> </beans>
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。