史上最简单的 Spring MVC 教程(二)

1 前言


在史上最简单的 Spring MVC 教程(一)中,咱们已经成功搭建起 Spring MVC 框架,并且运行成功。在本篇博客中,咱们首先尝试着对前面的程序进行修改,即修改“action-servlet.xml”配置文件的位置和名称,修改后的项目结构图如下:

史上最简单的 Spring MVC 教程(二)_第1张图片
项目结构图

如上图所示,咱们调整“action-servlet.xml”的位置到“src”目录下,并修改其名称为“springmvc-servlet.xml”,接下来,咱们直接重启tomcat服务器是可以重启成功的,这意味着:

  • Spring MVC 不是随着容器启动而启动,它是在第一次访问时进行加载的。

虽然 tomcat 服务器启动成功,但在我们访问 http://localhost:8080/ 的时候就会报错啦!因为 Java web 项目默认的是到“WEB-INF”中寻找配置文件,而我们又调整了配置文件的位置,报错也就是显然的啦!要想解决这个问题,这就需要我们在“web.xml”文件中进行初始化参数的配置:




    
    
        action
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:springmvc-servlet.xml
        
    

    
        action
        *.action
    

     
        index.jsp
    

这样,当我们重新启动 tomcat 服务器,并访问 http://localhost:8080/ 时候,就会访问成功啦!

史上最简单的 Spring MVC 教程(二)_第2张图片
Spring

2 HandlerMapping


接下来,咱们就介绍常见的 handlerMapping,共3种。对于 handlerMapping 的配置,我们将在“springmvc-servlet.xml”中进行配置。

2.1 BeanNameUrlHandlerMapping




    
    
    

    
    

    
    
        
        
    

由于 BeanNameUrlHandlerMapping 为默认配置的 handlerMapping,所以就算我们重新启动 tomcat 服务器,访问的地址及页面也不会出现什么变化,因此作者就不把运行结果贴出来啦!

2.2 SimpleUrlHandlerMapping




    
    
    

    
    
        
            
                homeController
                homeController
                homeController
            
        
    

    
    

    
    
        
        
    

通过 SimpleUrlHandlerMapping,我们可以在 property 标签中 prop 配置多个 key 值,并且通过该 key 值访问页面,即我们可以通过 http://localhost:8080/springmvc/a.action 访问页面,其效果同访问 http://localhost:8080/springmvc/home.action 相同。当然,在这里之前,我们需要在声明的 Controller 中 bean 标签中添加一个 id 的属性,并将其值配置到 prop 标签内,其访问结果如下图所示:

史上最简单的 Spring MVC 教程(二)_第3张图片
spring1
史上最简单的 Spring MVC 教程(二)_第4张图片
spring2

特别注意:当有 BeanNameUrlHandlerMapping 方式和 SimpleUrlHandlerMapping 方式声明冲突时,也就是有同名的URL,这时 Spring MVC 框架如何处理?

  • 首先,配置重名不会引起冲突;
  • 其次,出现同名时,按配置文件的顺序执行,当发现有一个URL满足,就跳出;
  • 最后,Spring MVC 框架支持用户自定义顺序,增加 order 属性即可。

在咱们自定义顺序的时候,需要在 proprety 标签中添加order属性,即:



以上在“springmvc-servlet.xml”中配置的示例如下:



    
    
    
        
    

    
    
        
            
                homeController
                homeController
                homeController
            
        
        
    

    
    

    
    
        
        
    

2.3 ControllerClassNameHandlerMapping




    
    
    
        
    

    
    
        
            
                homeController
                homeController
                homeController
            
        
        
    

    
    

    
    

    
    
        
        
    

控制器类名处理器映射,只需要简单的声明即可使用,值得注意的是其访问的地址为:http://localhost:8080/springmvc/homeController.action

史上最简单的 Spring MVC 教程(二)_第5张图片
spring3

你可能感兴趣的:(史上最简单的 Spring MVC 教程(二))