springmvc url处理映射的三种方式集合

目录
  • 一、springMVC简介
  • 二、工作流程与介绍
  • 三、代码截图
    • 以下组件通常使用框架提供实现:
      • 1、DispatcherServlet:前端控制器
      • 2、HandlerMapping:处理器映射器
      • 3、Handler:处理器
      • 4、HandlAdapter:处理器适配器
      • 5、 ViewResolver:视图解析器
      • 6、View:视图
  • 四、适配器作用

    一、springmvc简介

    SpringMVC是一种基于Spring实现了WEB MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象的生命周期,为简化日常开发,提供了很大便利。

    SpringMVC提供了总开关DispatcherServlet;请求处理映射器(Handler Mapping)和处理适配器(Handler Adapter),视图解析器(View Resolver)进行视图管理;动作处理器Controller接口(包含ModelAndView,以及处理请求响应对象request和response),配置灵活,支持文件上传,数据简单转化等强大功能。

    二、工作流程与介绍

    (1)客户端通过url发送请求

    (2-3)核心控制器Dispatcher Servlet接收到请求,通过系统或自定义的映射器配置找到对应的handler,并将url映射的控制器controller返回给核心控制器。

    (4)通过核心控制器找到系统或默认的适配器

    (5-7)由找到的适配器,调用实现对应接口的处理器,并将结果返回给适配器,结果中包含数据模型和视图对象,再由适配器返回给核心控制器

    (8-9)核心控制器将获取的数据和视图结合的对象传递给视图解析器,获取解析得到的结果,并由视图解析器响应给核心控制器

    (10)核心控制器将结果返回给客户端

    三、代码截图

    web.xml:

    
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="Http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
             version="3.0">
      <!-- 配置:所有请求由SpringMVC管理-->
      <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
    </web-app>

    DispatcherServlet-servlet.xml:

    url处理映射的三种方式:[通过访问路径找到对应的控制器]

    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
     <!-- DispatcherServlet拦截所有请求  ->  通过访问url路径找到对应的控制器 -> 通过适配器调用控制器的方法
          ->    控制器里面的方法处理业务  ->  通过视图解析器返回数据到页面 -> 形成视图                   -->
        <!-- 1.配置url处理映射
        url处理映射的三种方式:[通过访问路径找到对应的控制器]
        1.BeanNameUrlHandlerMapping:通过url名字找到对应的bean的name控制器
        2.SimpleUrlHandlerMapping:[简单的url处理映射]通过key找到bean的id的控制器
        3.ControllerClassNameHandlerMapping:[控制器的类名处理映射]-不用配置访问路径,
                默认的访问路径就是类名,首字母大写变小写,加.do ->userController.do
        -->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
        <!--<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">-->
            <!--<property name="mappings">-->
                <!--<props>-->
                    <!--<prop key="/user1.do">userController</prop>-->
                    <!--<prop key="/user2.do">userController</prop>-->
                    <!--<prop key="/user3.do">userController</prop>-->
                <!--</props>-->
            <!--</property>-->
        <!--</bean>-->
        <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
        <!-- 2.配置控制器处理适配器[配置如何调用控制器的方法]
            两种方式:(返回值不同)
                第一种:SimpleControllerHandlerAdapter
                    功能:执行controller,调用controller里面的方法,返回modelAndView
        -->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
        <!-- 第二种:HttpRequestHandlerAdapter
                    功能:执行controller,调用controller里面的方法,返回null
        -->
        <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
        <!-- 3.配置控制器-->
        <!--<bean name="/user.do" class="com.lg.controller.UserController"></bean>-->
        <!--<bean id="userController" class="com.lg.controller.UserController"></bean>-->
        <bean class="com.lg.controller.UserController"></bean>
        <bean name="/http.do" class="com.lg.controller.HttpController"></bean>
        <!-- 4.配置资源解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    </beans>

    UserController:

    
    package com.lg.controller;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    import javax.servlet.http.httpservletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class UserController implements Controller {
        @Override
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            ModelAndView mav=new ModelAndView("/user/usrelist");
            mav.addObject("name","liu");
            return mav;
        }
    }

    以下组件通常使用框架提供实现:

    1、DispatcherServlet:前端控制器

    用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

    2、HandlerMapping:处理器映射器

    HandlerMapping负责根据用户请求url找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

    3、Handler:处理器

    Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

    由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

    4、HandlAdapter:处理器适配器

    通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

    5、 ViewResolver:视图解析器

    View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

    6、View:视图

    springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。

    一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

    说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。

    四、适配器作用

    SpringMVC涉及的映射器,视图解析器的作用不难理解,映射器负责将前端请求的url映射到配置的处理器,视图解析器将最终的结果进行解析,但中间为什么要经过一层适配器呢,为什么不经映射器找到controller后直接执行返回呢?

    那是因为SpringMVC为业务处理器提供了多种接口实现(例如实现了Controller接口),而适配器就是用来根据处理器实现了什么接口,最终选择与已经注册好的不同类型的Handler Adapter进行匹配,并最终执行,例如,SimpleControllerHandlerAdapter是支持实现了controller接口的控制器,如果自己写的控制器实现了controller接口,那么SimpleControllerHandlerAdapter就会去执行自己写的控制器中的具体方法来完成请求。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程界。

    --结束END--

    本文标题: springmvc url处理映射的三种方式集合

    本文链接: https://www.lsjlt.com/news/63.html (转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢

    • springmvc常用注解

      推荐教程:Spring教程一、组件型注解:1、@Component 在类定义之前添加@Component注解,他会被spring容器识别,并转为bean。2、@Repository 对Dao实现类进行注解 (特殊的@Component)3、@Service 用
      阅读数:151 java教程 java spring
    • springmvc经典教程(2)

      springmvc教程系列springmvc史上最好教程(2)springmvc史上最好教程(1)springmvc史上最好教程(3)springmvc史上最好教程(4)一、整合mybatis为了更好的学习 springmvc和mybati
      阅读数:220 springmvc sprin prin
    • SpringMVC + MyBatis整合【转】

      环境:spring3.1.1+mybatis3.2.8+mybatis-spring1.2.3网络上关于这个架构的搭建文章,实在是太多了,本文是对于本人初次搭建时的一些注意点的整理。主要是一些配置文件的内容和架构的目录。0. project
      阅读数:596 dubbo zookeeper batis
    • SpringMVC入门实例分析

      今天小编给大家分享一下SpringMVC入门实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Spring MVC属于S
      阅读数:385 springmvc
    • 如何理解SpringMVC

      Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发
      阅读数:617 Spring MVC MVC 架构
    • SpringMVC核心技术

      这篇文章主要介绍了SpringMVC入门实例,在springmvc入门教程里算是比较不错的,结构也比较完整,需要的朋友可以参考。希望可以帮助到你
      阅读数:927 SpringMVC Spring核心技术
    • springMVC详细介绍

      下面小编就为大家带来一篇基于Spring MVC 详细介绍。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    • springMVC盗链接详解

      这篇文章主要为大家详细介绍了SpringMVC盗链接详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
    • SpringMVC @RequestMapping注解详解

      本文主要介绍了SpringMVC @RequestMapping注解详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      阅读数:620 SpringMVC @RequestMapping
    • SpringMVC视图作用详解

      这篇文章主要介绍了springMVC中的视图与视图解析器,springMVC视图的种类很多,默认有转发视图和重定向视图,本文就每一种视图给大家详细介绍,需要的朋友可以参考下
    • SpringMVC使用Redis共享session

      在使用之前,请确认项目已经整合了Redis一、加入依赖org.springframework.sessionspring-session-data-redis二、加入注解在加了@SpringBootApplication注解的类加上以下注解@EnableRed
    • springmvc常用5种注解

      推荐教程:Spring教程一、组件型注解:1、@Component 在类定义之前添加@Component注解,他会被spring容器识别,并转为bean。2、@Repository 对Dao实现类进行注解 (特殊的@Component)3、@Service 用
      阅读数:268 java教程 java spring
    • SpringMVC工作流程

      SpringMVC工作流程一、SpringMVC简介SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象的生命周期,为简化日常开发,提供
    • SpringMVC post请求的处理

      今天小编就为大家分享一篇解决SpringMVC接收不到ajaxPOST参数的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
      阅读数:707 SpringMVC post
    • SpringMVC拦截器详解

      本篇文章主要介绍了SpringMVC拦截器配置及使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    • SpringMVC 整合SSM框架详解

      这篇文章主要介绍了SpringMVC 整合SSM框架详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    • Java SpringMVC自学自讲

      本篇文章主要介绍了java SpringMVC——如何获取请求参数详解,详细的介绍了每种参数注解的用法及其实例。感兴趣的小伙伴们可以参考一下
    • springMvc全局异常的实现

      大家好,本篇文章主要讲的是springMvc全局异常的实现,感兴趣的同学赶紧来看一看吧,对你有帮助的话记得收藏一下
    • SpringMVC使用注解配置方式

      这篇文章主要为大家介绍了SpringMVC使用注解配置方式,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    • Springmvc @PathVariable的用法解析

      这篇文章主要介绍了Springmvc @PathVariable的用法解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
      阅读数:420 Springmvc @PathVariable