非注解的处理器映射器:
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
另外一个SImpleURLHandlerMapping:
<!-- 简单url映射 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- 对itemsController进行url映射 url是/queryItems.action -->
<prop key="/queryItems1.action">itemsController</prop>
<prop key="/queryItems2.action">itemsController</prop>
</props>
</property>
</bean>
结论: 多个映射器可以并存,映射到同一个handler处理。前端控制器判断url能让哪个映射器处理,就让正确的映射器处理。
非注解处理器适配器:
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
要求编写的Handler实现Controller接口。
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
要求编写的Handler实现HttpRequestHandler接口,实现:
public class ItemsController2 implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
//调用service查询数据库,查询商品列表,这里使用静态数据模拟
List<Items> itemsList = new ArrayList<Items>();
//向List中填充静态数据
Items items1 = new Items();
items1.setName("苹果笔记本");
items1.setPrice(6000.0);
items1.setDetail("iMac");
Items items2 = new Items();
items2.setName("小米手机");
items2.setPrice(2499.0);
items2.setDetail("小米 mix");
itemsList.add(items1);
itemsList.add(items2);
//设置模型数据
httpServletRequest.setAttribute("itemsList",itemsList);
//设置转发视图
httpServletRequest.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(httpServletRequest,httpServletResponse);
}
}