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;
}