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>
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


