springMVC--4种映射处理器handlerMapping

如何根据http请求选择合适的controller是MVC中一项十分关键的功能,在spring MVC中,
HandlerMapping接口是这一活动的抽象。

4种映射处理器handlerMapping:

1. 根据controller的name名称来映射寻找controller
BeanNameUrlHandlerMapping  (默认)

1.1开启该映射:默认是开启的
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
1.2定义bean的name属性:
<bean id="helloController" name="/hello1.do" class="com.controller.HelloController"></bean>
1.3界面访问URL:与bean的name属性值一致

http://localhost:5080/springmvc/hello1.do


2.根据URL来映射寻找controller:推荐使用
SimpleUrlHandlerMapping

2.1开启该映射:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello2.do">HelloController</prop>
</props>
</property>
</bean>
2.2定义bean:
<bean id="helloController" class="com.controller.HelloController"></bean>
2.3界面URL访问:与prop的key属性值一致
http://localhost:5080/springmvc/hello2.do

优点:将controller定义与映射分离开,耦合性低。


3.根据controller的类名来映射寻找controller:
ControllerClassNameHandlerMapping 

3.1开启类名映射处理器:
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
3.2定义bean
<bean id="hello3Controller" class="com.controller.Hello2Controller"></bean>
3.3界面URL访问:与bean的id属性值无关。
http://localhost:5080/springmvc/hello2.do   正确
http://localhost:5080/springmvc/hello2Controller.do  正确
http://localhost:5080/springmvc/hello21111.do  正确
http://localhost:5080/springmvc/hello3.do 错误
注意点:使用类名来访问一个Controller,

类名首字符要小写,后面要加.do (不建议使用)


4.使用注解来映射寻找controller:
DefaultAnnotationHandlerMapping

DefaultAnnotationHandlerMapping和RequestMappingHandlerMapping都是处理requestMapping的注解,
前者以废弃,不建议使用,后者用来代替前者


1.开启注解扫描组件:
作用:当我加载配置文件时,到我们指定的包下扫描(读取)Java文件,
寻找标注注解的地方(接口,类,方法或者其他),进行完成初始化。
<beans>
<!--配置扫描使用注解的包路径  -->
<context:component-scan base-package="com"></context:component-scan>
<!--开启springMVC注解  -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>  
</beans>


2.在类上标记:@Controller 声明该类是一个springMVC Controller
3.在方法上使用:@RequestMapping("/login") 声明该方法处理哪一个请求
eg:
@Controller
public class Login {
@RequestMapping("/login")
public ModelAndView login(){
ModelAndView mv = new ModelAndView();
mv.setViewName("login");
return mv;
}
}

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