springmvc中常见的非注解开发的处理器映射器

本文介绍了Spring MVC中两种常见的处理器映射器:BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping。详细解释了这两种映射器的工作原理及配置方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

处理器映射器:根据请求URL查找对应的Handler(处理器)

处理器适配器:根据请求URL执行对应的Handler(处理器)

一、常见的处理器映射器(非注解类)

1、BeanNameUrlHandlerMapping(org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping)

查看源码:

public class BeanNameUrlHandlerMapping extends AbstractDetectingUrlHandlerMapping {

	/**
	 * Checks name and aliases of the given bean for URLs, starting with "/".
	 */
	@Override
	protected String[] determineUrlsForHandler(String beanName) {
		List<String> urls = new ArrayList<String>();
		if (beanName.startsWith("/")) {
			urls.add(beanName);
		}
		String[] aliases = getApplicationContext().getAliases(beanName);
		for (String alias : aliases) {
			if (alias.startsWith("/")) {
				urls.add(alias);
			}
		}
		return StringUtils.toStringArray(urls);
	}

}

可见,该映射器是解析handler bean的name属性,跟URL进行匹配。

该映射器的配置:

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

使用:

使用该映射器的时候,handler的配置如下:

<bean id="itemHandler01" name="/itemlist.action" class="com.js.springmvc01.ItemController01"/>

bean的name属性为请求的URL,匹配的URL请求将会被DispatcherServlet请求适配器去调用class属性所指向的handler去处理。

2、SimpleUrlHandlerMapping(org.springframework.web.servlet.handler.SimpleUrlHandlerMapping)

查看源码:

public class SimpleUrlHandlerMapping extends AbstractUrlHandlerMapping {
	
	private final Map<String, Object> urlMap = new HashMap<String, Object>();


	/**
	 * Map URL paths to handler bean names.
	 * This is the typical way of configuring this HandlerMapping.
	 * <p>Supports direct URL matches and Ant-style pattern matches. For syntax
	 * details, see the {@link org.springframework.util.AntPathMatcher} javadoc.
	 * @param mappings properties with URLs as keys and bean names as values
	 * @see #setUrlMap
	 */
	public void setMappings(Properties mappings) {
		CollectionUtils.mergePropertiesIntoMap(mappings, this.urlMap);
	}

	/**
	 * Set a Map with URL paths as keys and handler beans (or handler bean names)
	 * as values. Convenient for population with bean references.
	 * <p>Supports direct URL matches and Ant-style pattern matches. For syntax
	 * details, see the {@link org.springframework.util.AntPathMatcher} javadoc.
	 * @param urlMap map with URLs as keys and beans as values
	 * @see #setMappings
	 */
	public void setUrlMap(Map<String, ?> urlMap) {
		this.urlMap.putAll(urlMap);
	}

可见,该映射器需要注入mapping属性,该变量就是handler bean的id与URL的对应关系,类似于键值对。

该映射器的配置:

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/itemlist01.action">itemHandler01</prop>
				<prop key="/itemlist02.action">itemHandler02</prop>
				
			</props>
		</property>
	</bean>

使用:

使用该映射器的时候,handler的配置如下:

<bean id="itemHandler02" class="com.js.springmvc01.ItemController02"/>

访问key值指向的URL,则会由id值与value值相等的handler去处理该请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值