SimpleUrlHandlerMapping类的功能简介说明

转自:

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值