1、BeanNameUrlHandlerMapping:默认的映射器,表示将 bean 标签的 name 属性作为 url 请求;
action 控制器类:
public class UserAction implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception {
System.out.println("操作用户");
ModelAndView modelAndView = new ModelAndView();
// 封装数据
modelAndView.addObject("message", "操作用户成功!");
// 封装路径
modelAndView.setViewName("/index.jsp");
return modelAndView;
}
}
springmvc.xml 配置文件:
<!-- 注册 action(必须添加到 spring ioc 容器中,不可省略) -->
<bean name="/add.action" class="com.springmvc.user.UserAction"></bean>
<!-- 配置映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
在浏览器地址栏输入:http://localhost:8080/springmvc01/add.action,会进入 UserAction 处理业务请求,然后跳转到 jsp 页面;
现在,如果有一个需求:要求多个请求都交于同一个 action 处理,使用 BeanNameUrlHandlerMapping 映射器实现:
action 控制器类不变,springmvc.xml 配置文件如下:
<!-- 注册 action(必须添加到 spring ioc 容器中,不可省略) -->
<bean name="/add.action" class="com.springmvc.user.UserAction"></bean>
<bean name="/delete.action" class="com.springmvc.user.UserAction"></bean>
<bean name="/update.action" class="com.springmvc.user.UserAction"></bean>
<bean name="/find.action" class="com.springmvc.user.UserAction"></bean>
<!-- 配置映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
因为 BeanNameUrlHandlerMapping 是将 bean 标签的 name 属性作为 url 请求,所以每一个请求都必须有一个 bean 标签;
但是如果交给同一个 action 处理的请求比较多,那就要写很多个 bean 标签,比较麻烦;
此时可以使用 SimpleUrlHandlerMapping 实现;
2、SimpleUrlHandlerMapping:适用于将多个请求交给同一个 action 处理的情况;
action 控制器类不变,springmvc.xml 配置文件如下:
<!-- 注册 action,指定一个 id -->
<bean id="userActionId" class="com.springmvc.user.UserAction"></bean>
<!-- 配置映射器:SimpleUrlHandlerMapping 适用于将多个请求交给同一个 action 处理的情况 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!--
key:表示请求的路径;
userActionId:表示处理请求的 action;
即将 下面四个业务请求 全部交给 UserAction 处理;
-->
<prop key="/add.action">userActionId</prop>
<prop key="/delete.action">userActionId</prop>
<prop key="/update.action">userActionId</prop>
<prop key="/find.action">userActionId</prop>
</props>
</property>
</bean>