SimpleUrlHandlerMapping类的功能简介说明

java-教程王 SpringMVC 发布时间:2021-12-16 10:11:45 阅读数:3698 1
下文笔者将讲述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>
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringMVC/202112/2096.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者