首页 > 其他分享 >springmvc核心点(面试题)

springmvc核心点(面试题)

时间:2024-11-26 14:04:52浏览次数:10  
标签:面试题 请求 springmvc 核心 控制器 MVC 处理器 Spring 注解

一,什么是SpringMVC    
SpringMVC是基于Java的实现了MVC设计模式的轻量级Web框架,通过把Model,View,Controller分离,将Web层进行职责解耦
把复杂的Web应用分成逻辑清晰的几部分,简化开发,减少出错,方便开发人员之间的配合

二,什么是MVC
MVC主要的用途就是对组件之间进行隔离分层
M:数据模型
V:视图
C:控制器

三,SpringMVC执行的详细流程
1.用户发送请求至前端控制器DispatcherServlet。
2.前端控制器收到请求后调用HandlerMapping(处理器映射器)
3.处理器映射器根据URL找到具体的Hander(后端控制器),生成处理器对象及处理器拦截器,并将它返回给前端控制器
4.前端控制器调用处理器适配器HandlerAdapter去适配调用Handler(后端控制器);
5.处理器适配器经过适配调用具体的处理器(后端控制器)
6.处理器处理完业务后返回ModelAndView对象,交给处理器适配器                                                 
7.处理器适配器将返回的ModelAndView返回给前端控制器
8.前端控制器将ModelAndView传给ViewReslover(视图解析器)进行解析
9.ViewReslover解析后返回具体的View(视图)
10.前端控制器将View进行渲染视图
1.前端控制器响应给用户

四,SpringMVC的优点
1.可以支持各种视图技术,而不仅仅局限与JSP
2.与Spring框架集成
3.清晰的角色分配:前端控制器,请求到处理器映射,处理器适配器,试图解析器
4.支持各种请求资源的映射策略

五,SpringMVC的主要组件及作用
1.前端控制器【dispatcherServlet】:接受请求,相当于转发器,有了前端控制器就减少了其他组件之间的耦合度
2.处理器映射器【HandlerMapping】:根据请求的URL来查找Handler后端控制器
3.处理器适配器【HandlerAdapter】:调用具体的处理器
4.处理器【Handler】:完成业务层的判断,控制返回结果
5.试图解析器ViewResoler:进行试图的解析,根据试图逻辑名解析成真正的试图(View)
6.试图(View):它的实现类支持不同的试图类型
                                         
六,什么是DispatcherServlet
Spring的MVC框架是围绕DispatcherServlet来设计的,他用来处理所有的HTTP请求和响应

七,什么是SpringMVC框架的控制器?
控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由试图呈现给用户的模型

八,SpringMVC怎么样设置重定向和转发
转发:在返回值前面加forward:就可以让结果转发
重定向:在返回值前面加redirect,就可以实现重定向

九,MVC是什么?MVC设计模式的好处
MVC是一种设计模式,模型(model)视图(view)控制器(controller),三层架构的设计模式。用户实现前端页面的展现与后端业务数据处理的分离
MVC设计模式的好处
1.分层设计,实现了业务系统各个组件之间的解耦,有利于业务系统的可扩展性,可维护性
2.有利于系统的并行开发,提高开发效率

十,注解的原理
注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。

十一,SpringMVC常用的注解有哪些?
@RepquestMapping:用于处理请求url映射的注解,可作用于类上或方法上,用于类上则表示类中的所有响应请求的方法,都是以该地址作为父路径
@RequestBody:接受http请求携带的json数据,并将json数据转为java对象
@ResponseBody:将后端控制器返回的结果,转为json对象响应给用户 
@RequestParam:用户获取http请求中携带的单个或多个值,如果名称一致,可忽略此注解
@PathVariable:用户获取url中携带的值,绑定url中的占位符

十二,SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?
一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@Controller+@RestController

十三、@Controller注解的作用
在SpringMVC中,控制器Controller负责处理由DispatcherServlet分发的请求,@Controller 用于标记在一个类上,使用它标记的类就是一个Spring MVC Controller 对象分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解,单单使用@Controller 标记在一个类上还不能真正意义上的说它就是Spring MVC 的一个控制器类,因为这个时候Spring 还不认识它。这个时候就需要我们把这个控制器类交给Spring 来管理


十四、Spring MVC与Struts2区别
相同点

都是基于mvc的表现层框架,都用于web项目的开发。

不同点
前端控制器不一样。Spring MVC的前端控制器是servlet:DispatcherServlet。struts2的前端控制器是filter:StrutsPreparedAndExcutorFilter。

请求参数的接收方式不一样。Spring MVC是使用方法的形参接收请求的参数,基于方法的开发,线程安全,可以设计为单例或者多例的开发,推荐使用单例模式的开发(执行效率更高),默认就是单例开发模式。struts2是通过类的成员变量接收请求的参数,是基于类的开发,线程不安全,只能设计为多例的开发。

Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,Spring MVC通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。

与spring整合不一样。Spring MVC是spring框架的一部分,不需要整合。在企业项目中,Spring MVC使用更多一些。
 


十五、怎样在方法里面得到Request,或者Session?
答:直接在方法的形参中声明request,Spring MVC就自动把request对象传入。


十六、Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?
答:是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段。

十四,什么叫rest
REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用

作用:从路径中获取参数,使用@PathVariable注解即可
{}中的参数名与@PathVariable中的名称一致

十五,@PathVariable和@RequestParam的区别
相同点:都是用于request中接收请求的,两者都可接收参数
不同点:@PathVariable是从url中获取参数,@RequestParam是从请求里面获取参数
获取参数格式,@PathVariable是从请求中定义一个{}里面是传回来的值名称,而@RequestParam直接总用在参数上即可

标签:面试题,请求,springmvc,核心,控制器,MVC,处理器,Spring,注解
From: https://blog.csdn.net/2301_76592091/article/details/143998417

相关文章

  • 极智嘉嵌入式面试题及参考答案
    对于交叉编译器的理解交叉编译器是一种在一个计算机平台上为另一个不同架构的计算机平台生成可执行代码的编译器。它在嵌入式系统开发中起着关键作用。从其必要性来看,嵌入式系统通常使用的处理器架构与我们日常使用的PC等通用计算机不同,如ARM、MIPS等。而我们开发嵌入......
  • 数据挖掘核心技术-抽样篇
        在统计学中,抽样(Sampling)是一种推论统计方法,是指从目标总体(Population,或称为母体)中抽取一部分个体作为样本(Sample),通过观察样本的某一或某些属性,依据所获得的数据对总体的数量特征得出具有一定可靠性的估计判断,从而达到对总体的认识。概率抽样方法简单随机抽样......
  • 挑战1000道前端面试题之判断对象是否存在循环引用(15)
    循环引用循环引用是指两个或多个对象之间相互引用,形成一个闭环。这种引用关系会导致垃圾回收机制无法正常工作,因为这些对象始终被认为是“可达”的,即使它们不再被其他部分的代码使用。具体实现functionisCyclic(obj){letseenObjects=newWeakSet();function......
  • SpringAop--Java面试题
    目录Spring的事务隔离级别?Spring的事务传播行为?1>概念2>事务传播的配置什么是AoP?AoP与ooP有何区别?1>Aop的概念2>Aop和OOp的区别什么是连接点、切点和增强(或通知)?连接点切点增强什么是织入?有哪些织入方式?1>织入概念2>织入方式什么是切面?SpringAoP如何定义一个切面?1>切......
  • 高级java每日一道面试题-2024年11月23日-JVM篇-什么时候会出发FullGC?
    如果有遗漏,评论区告诉我进行补充面试官:什么时候会出发FullGC?我回答:在Java高级面试中,FullGC(全局垃圾回收)是一个重要的考点。FullGC是一种垃圾回收机制,用于回收整个堆内存中的所有的未使用的对象,包括年轻代(新生代)、老年代和永久代(元空间,Java8及以后)中的对象。Full......
  • 高级java每日一道面试题-2024年11月24日-JVM篇-说说对象分配规则?
    如果有遗漏,评论区告诉我进行补充面试官:说说对象分配规则?我回答:在Java高级面试中,对象分配规则是一个核心考点,它涉及到JVM的内存管理、对象的创建和初始化等多个方面。以下是对Java对象分配规则的详细解释:一、内存分配区域Java中的对象主要在堆(Heap)和栈(Stack)中分配......
  • VUE|学习笔记②(Vue3核心语法)
     目录OptionsAPI与CompositionAPIsetup概述setup的返回值setup与OptionsAPIsetup语法糖expor报错:应为声明或语句。ts(1128)ref创建:基本类型的响应式数据reactive创建:对象类型的响应式数据ref创建:对象类型的响应式数据ref对比reactivetoRefs与toRef computed......
  • 探索dsssvc.dll的作用与解析:Windows系统文件夹中不可或缺的核心组件
    在Windows操作系统的复杂架构中,dll文件扮演着举足轻重的角色。它们如同操作系统的基石,为各类应用程序提供必要的代码和数据支持。今天,我们要深入探讨的是dsssvc.dll文件,这个位于Windows系统文件夹中的重要组件,它的作用不可或缺,对于系统的正常运行至关重要。一、dsssvc.dll的......
  • 5大核心技术详解:AI视频监控系统背后的工作原理
    随着人工智能的发展,AI视频监控技术成为当前视频监控行业的一大革新。传统监控系统往往依赖人工实时查看,效率低且容易遗漏,而AI赋能的视频监控系统可以通过图像识别、深度学习等技术实现自动化、智能化。本文将从技术层面对AI视频监控的五大核心组成部分进行详细解析。高效数据处......
  • JavaScript核心语法(3)
    前两篇文章大概把JavaScript的基础语法讲了一下,这篇文章主要讲讲ES6的核心语法。ES6的核心语法说实话其实有点多,我重点挑一些经常在项目中用到的来讲,其他一些我没怎么见过的就不讲了。目录1.变量和常量变量(let 和 var)varlet常量(const)总结2.箭头函数语法示例特性和......