Springmvc 的HandlerMapping(处理器映射器)

DispatchServlet (前端控制器)拦截用户输入的URL,然后就会去找处理器映射器(根据是否实现了HandlerMapping接口去识别是不是映射器),而映射器会帮助找到用户请求的handler(Controller)

一、BeanNameUrlHandlerMapping

这个映射器的映射规则是,让DispatchServlet找bean的name与URL相对应的handler
在springmvc.xml文件中配置
http://localhost:8080/springmvc1110/itemList.action

<bean id="itemController1" name="/itemList.action"
		class="cn.itcast.springmvc.first.ItemController1" />
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

二、SimpleUrlHandlerMapping

这个映射器的规则是,让DispatchServlet去找bean的id与URL相对应的handler
在springmvc.xml文件中配置
http://localhost:8080/springmvc1110/itemsTest1.action

<bean id="itemController1" name="/itemList.action"
		class="cn.itcast.springmvc.first.ItemController1" />
<bean id="itemController2" class="cn.itcast.springmvc.first.ItemController2"></bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/itemsTest1.action">itemController1</prop>
				<prop key="/itemsTest2.action">itemController2</prop>
			</props>
		</property>
	</bean>

三、RequestMappingHandlerMapping

这个映射器主要是在Controller类中配置
首先在springmvc中配置(注解映射器应该和注解适配器成对使用)

<!-- 注解处理器映射器 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<!-- 注解适配器 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" 

在control中应该配置

public class ItemController3 {
	//商品列表,@RequestMapping中url建议和方法名一致,方便开发维护
	@RequestMapping("/queryItems")
	public ModelAndView queryItems(){
		
		// 使用静态数据将商品信息列表显示在jsp页面
		// 商品列表
		List<Items> itemsList = new ArrayList<Items>();

		Items items_1 = new Items();
		items_1.setName("联想笔记本");
		items_1.setPrice(6000f);
		items_1.setCreatetime(new Date());
		items_1.setDetail("ThinkPad T430 联想笔记本电脑!");

		Items items_2 = new Items();
		items_2.setName("苹果手机");
		items_2.setPrice(5000f);
		items_2.setDetail("iphone6苹果手机!");

		itemsList.add(items_1);
		itemsList.add(items_2);
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("itemsList", itemsList);
		//指定逻辑视图名
		modelAndView.setViewName("itemsList");

		return modelAndView;
	}

版权声明:本文为m0_38120426原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。