SpringMVC学习1

发现可以在springmvc的配置文件中注释掉处理器映射器和处理器适配器的配置(可省略不配置映射器和适配器),重新测试发现依然可以正确的访问Controller,得到预期的内容。


问题:为什么可以省略?
因为SpringMVC具有默认的配置。

在spring-webmvc/org.springframework.web.servlet/DispatcherServlt.properties配置文件中,已经配置好了SpringMVC的默认配置,通过查看该配置文件可以发现如下内容:

        




基于注解的SpringMVC配置:

AnnotationController.java

package com.its.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * 基于注解的SpringMVC Controller。 
 * 使用注解,自定义的Controller不需要继承指定的类或者实现指定的接口
 */
@Controller    // 标记为SpringMVC的Handler对象
@RequestMapping("/its")
public class AnnotaionController {

    @RequestMapping("/hello")
    public ModelAndView show(){
        ModelAndView mv = new ModelAndView("hello2");
        mv.addObject("msg", "我的第一个基于注解的SpringMVC应用");
        return mv;
    }
}

springmvc-servlet.xml



hello2.jsp视图页面






简化在springmvc配置文件中添加Controller的bean的操作:使用标签扫描包










问题:查看SpringMVC源码,发现默认的映射器和适配器都已经过期了,不推荐使用。

根据源码中注释的内容中可以发现,官方推荐使用其它代替的映射器和适配器,分别是:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

将以上两个推荐使用的映射器和适配器配置到springmvc的配置文件中(保留扫描包的配置), 再次执行hello.action,查看dubug日志,发现新配置映射器和适配器都已经生效。

注解驱动:


 使用了注解启动之后,使用的注解的映射器和适配器都是推荐使用的映射器和适配器。可以理解为:SpringMVC默认配置的升级版。

 使用了<mvc:annotation-driven />之后,就可以不用配置映射器和适配器了。







猜你喜欢

转载自blog.csdn.net/mayor125/article/details/52439985