精华内容
下载资源
问答
  • springmvc工作流程面试题有哪些?springmvc工作流程面试题分享
    2022-03-17 16:29:53

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,它能够很好的解决开发人员的开发负担,使开发简便化,因此在企业中得到广泛的使用,并且在面试中也常常会问到这方面的问题,那springmvc工作流程面试题有哪些?下面来我们就来给大家讲解一下。

    1.SpringMVC的流程?

    (1)用户发送请求被前端DispatcherServlet捕获;

    (2)DispatcherServlet捕获到请求后,调用HandlerMapping处理映射器,请求获取Handle;

    (3)处理器映射器跟据请求url找到具体的处理器,生成处理器对象及处理器拦截器并返回给DispatcherServlet;

    (4)DispatcherServlet调用HandlerAdapter处理器适配器;

    (5)HandlerAdapter经过适配调用handler;

    (6)Handler执行完成返回ModelAndView;

    (7)HandlerApdater将Handler执行结果ModelAndView返回给DispatcherServlet;(8)DispatcherServlet讲讲ModelAndView传给ViewResolver视图解析器进行解析;(9)ViewResolver解析后返回具体View;在此我向大家推荐一个架构学习交流圈。交流学习伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

    (10)DispatcherServlet对View进行视图渲染(即将模型数据充至视图中)然后DispatcherServlet响应用户。

    2.Springmvc如何做异常处理?

    可以将异常抛给Spring框架,由Spring框架来处理,自定义实现spring的全局异常解析器HandlerExceptionResolver,在异常处理器中添视图页面即可。

    3.Springmvc 中对于文件的上传有哪些需要注意的?

    在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析;在springmvc.xml中配置multipart类型解析器;方法中使用:MultipartFile attach (单个文件上传) 或者 MultipartFile[] attachs (多个文件上传)

    4.SpringMVC重要组件有哪些?

    前端控制器(DispatcherServlet):接收请求,响应结果,可以理解为电脑的CPU。

    处理器映射器(HandlerMapping):根据URL去查找处理器。

    处理器适配器(HandlerAdapter) :它调用后端处理器中的方法,返回逻辑视图 ModelAndView 对象。

    处理器(Handler):对用户具体请求进行处理,也就是程序猿编写代码处理逻辑的, 类似于Controller 类。

    视图解析器(ViewResovler):进行视图解析,将 ModelAndView 逻辑视图解析为具体的视图(如JSP)。在此我向大家推荐一个架构学习交流圈。交流学习伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

    5.Spring MVC怎么样设定重定向和转发的?

    (1)转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4"

    (2)重定向:在返回值前面加"redirect:",譬如"redirect:/hello.do"

    6.SpringMvc的控制器是否是单例模式,若是是,有什么问题,怎么解决?

    是单例模式,因此在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段。

    其实面试SpringMvc相关问题的时候,我们只要将这方面知识都掌握了,那么在面试中就不会紧张了!因此我们可以多看SpringMvc这方面的面试题哦!最后大家如果想要了解更多[Java面试题]知识,敬请关注。

    更多相关内容
  • SpringMVC工作流程

    2021-07-22 23:40:30
    SpringMVC工作流程 说到SpringMVC,面试过程中经常问到的面试题,下面来分析一下SpringMVC工作流程: 1.用户通过浏览器发送请求到前端控制器DispatcherServlet. 2.前端控制器直接将请求转发给处理器映射器...

    SpringMVC工作流程

    说到SpringMVC,面试过程中经常问到的面试题,下面来分析一下SpringMVC的工作流程:
    在这里插入图片描述
    1.用户通过浏览器发送请求到前端控制器DispatcherServlet.
    2.前端控制器直接将请求转发给处理器映射器HandlerMapping.
    3.处理器映射器HandlerMapping会根据请求,找到负责处理该请求的处理器,并将其封装为处理器执行链HandlerExecutionChina后返回给前端控制器DispatchererServlet.
    4.前端控制器DispatcherServlet根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器HandlerAdaptor
    5.处理器适配器HandlerAdaptor调用执行处理器Controller.
    6.处理器Controller将处理结果及要跳转的视图封装到一个对象ModelView中,并将其返回给处理器适配器HandlerAdaptor
    7.处理器适配器直接将结果返回给前端控制器DispatcherServlet.
    8.前端控制器调用视图解析器,将ModelAndView中的视图封装成视图对象.
    9.视图解析器ViewResolver将封装的视图View对象返回给前端控制器DispatcherServlet.
    10.前端控制器DispatcherServlet调用视图对象,让其进行渲染,即进行数据填充,形成响应对象.
    11.前端控制器响应浏览器.

    注意:一定要理解这张图,而不是盲目的背面试题,理解其工作流程才是正确的!

    展开全文
  • springmvc工作流程

    2021-07-08 12:09:32
    springmvc工作原理图 一、SpringMVC的组件介绍 前端控制器(DisatcherServlet) 接收请求,响应结果,返回可以是json,String等数据类型,也可以是页面(Model) 处理器映射器(HandlerMapping) 根据URL去查找...

    springmvc工作原理图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    一、SpringMVC的组件介绍

    前端控制器(DisatcherServlet)

    接收请求,响应结果,返回可以是json,String等数据类型,也可以是页面(Model)

    处理器映射器(HandlerMapping)

    根据URL去查找处理器,一般通过xml配置或者注解进行查找

    处理器(Handler)

    就是我们常说的controller控制器啦,由程序员编写。

    处理器适配器(HandlerAdapter)

    可以将处理器包装成适配器,这样就可以支持多种类型的处理器

    视图解析器(ViewResovler)

    进行视图解析,返回view对象(常见的有JSP,FreeMark等)

    二、执行流程

    1、用户发送请求到前端控制器(DispatcherServlet),也叫中央处理器

    <!--
    	index.jsp
    	请求:/hello
    	/:会触发servlet中 <url-pattern>/</url-pattern> 配置 ,调用 DispatcherServlet
    	hello:会根据@RequestMapping("/hello")找到具体controller中的具体方法
    -->
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    
        <a href="/hello">入门程序</a>
    
    </body>
    </html>
    

    根据servlet映射web.xml,激活DispatcherServlet

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
    
    <!--  springmvc必须先配置前端控制器 DisPatcherServlet,任何请求都会经过servlet-->
      <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--    将 springmvc.xml 文件交给servlet加载后才可生效-->
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    <!--    服务器启动就会创建 DispatcherServlet 类-->
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
    </web-app>
    

    2、前端控制器请求处理器映射器(HandlerMapping)去查找处理器(Handler)

    3、找到以后处理器映射器(HandlerMappering)向前端控制器返回执行链(HandlerExecutionChain)

    根据请求路径 /hello,找到具体的controller中的具体方法,并将方法sayHello返回给DispatcherServlet

    /**
     * 1、想要让一个类的方法执行,需要让这个类变为对象
     * 2、前端控制器DispatcherServlet执行流程:
     * load-on-startup配置让服务器启动就创建DispatcherServlet类
     * DispatcherServelet就会用init-param加载springmvc.xml
     * springmvc.xml 就会用 context:component-scan 开启注解扫描
     * 注解扫描就会使 @Controller 注解生效,且spring注解controller自动创建bean实体类<bean id= class=></bean>
     */
    @Controller
    public class HelloController {
    
        @RequestMapping("/hello")
        public String sayHello(){
            System.out.println("hello");
            return "success";
        }
    }
    

    4、前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)

    5、处理器适配器去执行Handler

    6、处理器执行完给处理器适配器返回ModelAndView

    7、处理器适配器向前端控制器返回ModelAndView

    根据 sayHello 方法找到 success.jsp的页面路径

    <!--
    	return "success"; 控制层返回success.jsp页面
    	success.jsp,路径在 WEB-INF/pages/ 
    -->
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h1>成功页面</h1>
    </body>
    </html>
    

    8、前端控制器请求视图解析器(ViewResolver)去进行视图解析

    9、视图解析器向前端控制器返回View

    springmvc.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--    开启注解扫描,可扫描到此包下带有注解的类,将实体类交给spring的ioc容器管理,将其注入spring容器中-->
        <context:component-scan base-package="com.lian.springmvc"/>
    
    <!--    配置试图解析器对象,使返回的success找到success.jsp页面的路径-->
        <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/pages/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
    <!--    开启springmvc的框架注解支持,默认会开启处理器适配器和处理器映射器,@RequestMapping就是springmvc的注解-->
        <mvc:annotation-driven/>
    
    </beans>
    

    10、前端控制器对视图进行渲染

    11、前端控制器向用户响应结果

    在这里插入图片描述

    展开全文
  • SpringMVC工作流程 -- 详解

    千次阅读 多人点赞 2021-03-06 22:16:51
    SpringMVC一,SpringMVC简介二,SpringMVC工作原理图执行流程三,SpringMVC核心组件前端控制器DispatcherServlet处理器映射器HandlerMapping处理器适配器HandlerAdapter处理器Handler视图解析器ViewResolver ...

    一,SpringMVC简介

    MVC:是一种架构模式,将业务逻辑和页面展示分离,使程序分层、分工合作,既相互独立,又协同合作。

    MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范

    Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或 JavaBean组件,不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。

    View(视图):负责进行模型的展示,将逻辑视图解析成物理视图并渲染。

    Controller(控制器):接收用户请求,委托给模型进行处理,处理完毕后把返回的模型数据返回给视图,由视图负责展示。起调度作用。

    二,SpringMVC的工作原理图

    在这里插入图片描述

    SpringMVC注解详解

    SpringMVC注解详解

    执行流程

    1、 用户发送http请求至前端控制器DispatcherServlet,中途会有过滤器Filter进行数据过滤。DispatcherServlet执行doService方法经过数据灌入后调用doDispatch方法,得到请求资源标识符(URI)

    用户发起http请求后,Filter过滤器会拦截客户的HttpServletRequest,主要用于对HttpServletRequest进行预处理,根据需要检查HttpServletRequest权限 ,也可以修改HttpServletRequest 头和数据或记录日志等操作。

    2、 DispatcherServlet收到请求后调用HandlerMapping处理器映射器。HandlerMapping找到具体的Handler处理器(可以根据xml配置、注解进行查找)。将生成的Handler(处理器对象)及HandlerInterceptor(处理器拦截器)一并返回给DispatcherServlet。

    DispatcherServlet会去遍历所有的HandlerMapping,寻找一个可以处理该HTTP请求的Handler。匹配成功的HandlerMapping会向DispatcherServlet返回一个HandlerExecutionChain类型的处理器执行链,里面封装了一个Handler和一堆HandlerInterceptor处理器拦截器。之后会调用getHandlerAdapter方法,遍历所有已注入的HandlerAdapter(处理器适配器),依次使用HandlerAdapter中的supports方法寻找一个适合这个Handler的适配器子类。

    初始化HandlerMapping流程图:

    在这里插入图片描述

    HandlerMapping执行过程:

    DispatcherServlet在选用HandlerMapping的过程中,将根据我们指定的一系列HandlerMapping中选择优先级最高的。
    可以通过AbstractHandlerMapping的setOrder()方法提高优先级。
    使用SimpleUrlHandlerMapping对HandlerMapping进行初始化操作。

    1)从配置文件(DispatcherServlet.properties) 中确定了需要初始化的HandlerMapping接口,并通过继承的ApplicationObjectSupport抽象类中的initApplicationContext()方法实现初始化的一些工作。

    2)通过SimpleUrlHandlerMapping中的initApplicationContext()方法, 先初始化SpringMVC容器,然后再对Handler进行注册。

    3)通过AbstractHandlerMapping中的detectMappingInterceptors()方法探测ApplicationContext中已经解析过的MappedInterceptor,通过initInterceptors()方法来初始化拦截器。

    4)调用initInterceptors()方法将SimpleUrlHandlerMapping中定义的interceptors包装成HandlerInterceptor对象保存在名为adaptedInterceptors的List中。

    5)调用SimpleUrlHandlerMapping中的registerHandler(url,handler)方法,对urlMap中的key值进行处理urlMap就是在配置文件中SimpleUrlHandlerMapping通过mappings属性注入的的内容。key是url的某个字段,value是bean的id。value值通过getBean()方法得到bean对象,同时将url的某个字段作为key值。

    目的:
    这样就达到url的某个字段对应到具体的controller了的目的,当遇到有请求访问服务器的时候,就可以根据url找到具体的controller控制层去执行这个请求了。

    6)调用DispatchServlet中的getHandler方法,事实上调用对应的AbstractHandlerMapping实现类的getHandler方法,通过urlMap拿到对应的Handler。

    7)将获取到的Handler和一堆HandlerInterceptor封装到HandlerExecutionChain对象中,并返回给DispatcherServlet。

    8)通过获取到的handler,调用getHandlerAdapter方法,这个方法会遍历所有注入的HandlerAdapter,依次使用supports方法寻找适合这个handler的适配器子类。

    3,将封装好的HandlerExecutionChain类型的Handler处理器执行链和适合这个Handler的HandlerAdapter(里面定义了执行Handler的特定规则)返回给DispatcherServlet。

    4,通过获取到适合的HandlerAdapter执行HandlerAdapter中的 handle方法(这个handle只是处理器适配器中的一个方法而已),方法调用Handler里对应的bean,执行该bean对应的Controller类。

    DispatcherServlet将控制权交给处HandlerAdapter,处理器适配器将HTTP请求HttpServletRequest和HTTP响应HttpServletResponse传递给Handler(或者说控制器Controller),Controller调用Service业务层对数据逻辑进行处理(交给Mybatis框架),控制器完成请求处理后,返回带有数据模型和逻辑视图的ModelAndView对象传给HandlerAdapter,最终由HandlerAdapte返回给DispatcherServlet。

    5, 最终将执行结果封装成ModelAndView对象返回给DispatcherServlet。

    6, DispatcherServlet将ModelAndView传给ViewReslover视图解析器,并根据View进行渲染视图(即将模型数据填充至视图中)

    SpringMVC中处理视图最终要的两个接口就是ViewResolver和View ViewResolver的作用是将逻辑视图解析成物理视图
    View的主要作用是调用其render()方法将物理视图进行渲染。
    根据返回的ModelAndView,通过配置中定义的ViewResolver解析(必须是已经注册到Spring容器中的)结合Model和View,来渲染视图

    7,将处理过后的ModelAndView视图交给DispatcherServlet,并由DispatcherServlet响应给客户端(展示画面)。

    可以通过Filter对HttpServletResponse 进行后处理。

    三,SpringMVC核心组件

    前端控制器DispatcherServlet

    接收请求,响应结果,相当于转发器,中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

    处理器映射器HandlerMapping

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

    处理器适配器HandlerAdapter

    按照特定规则(HandlerAdapter要求的规则)去执行Handler通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler通过扩展适配器可以对更多类型的处理器进行执行。

    处理器Handler

    Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler。

    视图解析器ViewResolver

    进行视图解析,根据逻辑视图名解析成真正的视图(view)
    ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。 springmvc框架提供了很多的View视图类型,包括:jstl View、freemarker View、pdf View等。

    展开全文
  • SpringMvc工作流程

    千次阅读 2018-11-29 08:59:56
    (1) 用户发送请求至前端控制器DispatcherServlet ⑵ DispatcherServlet收到请求调用HandlerMapping处理器映射器。 ⑶ 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)...
  • 图解SpringMVC工作流程

    2022-04-27 22:11:09
    图解SpringMVC工作流程,让你短时间了解SpringMVC工作原理
  • SpringMVC工作流程(详-小白版)

    千次阅读 多人点赞 2022-04-09 10:39:52
    除此之外还是整个流程控制的中心,由DispatcherServlet来调用其他组件,处理用户的请求 2)HandlerMapping 翻译为:处理器映射器(也可理解为“处理程序映射的一段代码”),由框架提供。 作用:根据请求的url、...
  • 本篇文章给大家带来的内容是关于SpringMVC工作流程的详细介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。SpringMVC 工作流程:详细图:SpringMVC工作流程描述1.用户向服务器发送请求...
  • SpringMVC工作流程分析 用户通过浏览器发送请求到前端控制器DispatcherServlet。 前端控制器直接将请求转给处理器映射器HandleMapping。 处理器映射器HandleMapping会根据请求,找到负责处理该请求的处理器,并将...
  • springmvc工作流程面试题(附答案)

    千次阅读 2021-03-08 23:56:23
    下面整理了10道springmvc工作流程面试题,可以作为有面试需要朋友们的学习准备资料。1、请简单说一下Spring MVC的工作原理?答:(1)用户向服务器发送请求,请求被 springMVC前端控制器捕获;...
  • SpringMVC 工作流程

    2021-01-09 16:42:29
    SpringMVC 工作流程: 客户端请求被 DisptacherServlet 接收。 根据 HandlerMapping 映射到 Handler。 ⽣成 Handler 和 HandlerInterceptor。 Handler 和 HandlerInterceptor 以 HandlerExecutionChain 的...
  • 一、什么是SpringMVC? pring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数...
  • DispactherServlet:SpringMVC 的心脏,所有的请求从这里进入,也从这里出去 HandlerAdapter:请求处理器 HandlerMapping:请求和处理对象间的映射关系,可以理解为 地址 /api 对应 @RequestMapping("/...
  • SpringMVC工作流程.vsdx

    2020-08-11 10:53:53
    该资源主要是SpringMVC工作流程,各个组件(DispatcherServlet、HandlerMapping、ViewResolver、Handler)的说明以及工作流程的文字说明等等。
  • springMVC工作流程

    2021-03-04 16:40:35
    2. SpringMVC工作流程 1、 用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。 2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由...
  • 1.SpringMVC工作流程图: 2.SpringMVC工作流程描述: (1)用户端将请求统一提交到DispatcherServlet; (2)DispatcherServlet会将请求交给HandlerMapping进行请求映射,匹配该请求的Handler; (3)...
  • springmvc流程

    2018-06-07 19:09:00
    Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一 • Spring3.0后全面超越Struts2,成为最优秀的MVC框架 • Spring MVC通过一套MVC注解,让POJO成为处理请求的控制器,而无须实现...
  • 【面试篇】SpringMVC工作流程

    千次阅读 多人点赞 2020-07-07 09:31:57
    SpringMVC主要是通过前端控制器controller中的注解来完成请求处理的。 前段请求从web.xml中servlet的配置开始,根据servlet拦截的url-parttern,来进行请求转发控制。 处理请求的流程 首先用户发送请求————>...
  • SpringMVC概述(MVC设计模式,SpringMVC工作流程) 一,MVC设计模式 MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责模块。 模型:用于存储数据以及处理用户请求的业务逻辑。 视图:...
  • 目录DispatherServlet类分析resolveViewName方法:getCandidateViews方法AbstractUrlBasedView 类FreeMarkerView类getBestView方法详细SpringMVC工作流程图 DispatherServlet类分析 首先,我们看DispatherServlet类...
  • springmvc的常见流程,让初学者简单容易理解明白,更深层次再看源码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,514
精华内容 50,605
关键字:

springmvc工作流程

spring 订阅