JavaWeb编程面试题——Spring Web MVC

这篇具有很好参考价值的文章主要介绍了JavaWeb编程面试题——Spring Web MVC。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

面试题==知识点,这里所记录的面试题并不针对于面试者,而是将这些面试题作为技能知识点来看待。不以刷题进大厂为目的,而是以学习为目的。这里的知识点会持续更新,目录也会随时进行调整。

关注公众号:编程火箭车。在【粉丝福利】中点击【面题大全】,其中的Java面试题在线实时更新、查看。


一、面试题导航

点这里进入JavaWeb编程面试题——导航

面试题持续更新中…...

二、面试题目

1.Spring MVC是什么?

Spring MVC 是 Spring Framework 中的一个模块,它是一个基于 Java 的 Web 框架,用于创建 Web 应用程序。也是一个基于 MVC 设计模式的请求驱动类型的轻量级 Web 框架,通过把 Model,View,Controller 分离,将 Web 层进行职责解耦,把复杂的 Web 应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

2.Spring MVC有哪些优点?

  • 灵活性:Spring MVC 可以很好地与其他 Spring 框架组件集成,也可以与其他框架和技术进行集成。

  • 易于测试:Spring MVC 通过依赖注入的机制轻松实现了针对控制器的单元测试,使开发人员随时可以测试自己的代码。

  • 高可维护性:Spring MVC 采用了 MVC 设计模式,将应用程序划分为Model、View和Controller三个部分,这使得应用程序的各个部分之间的耦合性较低,使得应用程序高可维护性受益。

  • 支持多种视图技术:Spring MVC 支持多种视图技术,如 JSP、FreeMarker、Velocity、Thymeleaf 等。开发人员可以根据自己的需求和技能选择最适合自己的视图技术。

  • 支持注解:Spring MVC 支持使用注解进行配置,并采用了统一的注解方式,简化了配置过程。

  • 安全性:Spring MVC 可以集成 Spring Security 框架,提供了安全的访问控制和身份验证。

  • 可定制性:Spring MVC 框架中的各个组件都可以通过继承、接口实现、AOP 等方式进行个性化定制,定制出符合自己需求的框架。

  • RESTful支持:Spring MVC 内置对 RESTful 架构支持很好,是构建 RESTful Web 服务的首选框架之一。

总之,Spring MVC 具有高度的灵活性和定制性,使得开发人员可以根据自己的业务需求来选择最适合自己的配置和设计方式。此外,Spring MVC 还具有高性能、安全、可维护、易于测试等诸多优点,这使得它在 Web 应用程序开发中得到了广泛的应用。

3.Spring MVC有哪些组件?

Spring MVC 的核心组件:

  • DispatcherServlet:中央控制器,将请求转发到具体的控制类。

  • Controller:具体处理请求的控制器。

  • HandlerMapping:映射处理器,负责映射中央处理器转发给 Controller 时的映射策略。

  • ModelAndView:服务层返回的数据和视图层的封装类。

  • ViewResolver:视图解析器,解析具体的视图。

  • Interceptors:拦截器,负责拦截我们定义的请求然后做处理工作。

4.请简单说一下SpringMVC的请求处理过程?

(1)发起请求到前端控制器(DispatcherServlet)。

(2)前端控制器请求 HandlerMapping 查找 Handler,可以根据 xml 配置、注解进行查找。

(3)处理器映射器 HandlerMapping 向前端控制器返回 Handler。

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

(5)处理器适配器去执行 Handler。

(6)Handler 执行完成给适配器返回 ModelAndView。

(7)处理器适配器向前端控制器返回 ModelAndView,ModelAndView 是SpringMVC 框架的一个底层对象,包括 Model 和 view。

(8)前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)。

(9)视图解析器向前端控制器返回 View。

(10)前端控制器进行视图渲染,视图渲染将模型数据(在 ModelAndView 对象中)填充到 request 域。

(11)前端控制器向用户响应结果。

5.Spring 和 Spring MVC 的关系?

最开始只有 Spring,提供 IOC 和 AOP 核心功能,后来出现了 MVC、Security、Boot 等。原来的 Spring 就变成了现在的 Spring Core。

Spring MVC 就是一个 MVC 框架,其实大范围上来说属于 Spring,Spring MVC 是一个类似于 Struts 的 MVC 模式的 Web 开发框架,Spring MVC 是基于 Spring 功能之上添加的 Web 框架,Spring 跟 SpringMVC 可以理解为父子容器的关系,想用 Spring MVC 必须先依赖 Spring。

Spring MVC 是控制层,用来接收前台传值,调用 service 层和持久层,返回数据再通过 Spring MVC 把数据返回前台。

6.Spring MVC 和 Struts2 的区别有哪些?

  • Spring MVC 的入口是一个 servlet 即前端控制器,而 struts2 入口是一个 filter 过虑器。

  • Spring MVC 是基于方法开发(一个 url 对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2 是基于类开发,传递参数是通过类的属性,只能设计为多例。

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

7.SpringMVC怎么样设置重定向和转发?

  • 在返回值前面加 forward: 就可以让结果转发,如:"forward:user?name=admin"

  • 在返回值前面加 redirect: 就可以让返回值重定向,如:"redirect:http://www.baidu.com"

8.SpringMVC返回JSON数据的注解?

@ResponseBody

9.SpringMVC还有什么方式返回JSON数据?

使用 JSON 工具将对象序列化成 JSON,常用工具 Jacksonfastjsongson
利用 HttpServletResponse,然后获取 response.getOutputStream()response.getWriter()

10.SpringMVC Controller中的常用注解?

@Controller @RequestMapping @GetMapping @PostMapping @Autowired @ResponseBody @RequestBody @RequestParam @PathVariable @Validated

11.SpringMVC常用注解都有哪些?

  • @requestMapping:用于请求 url 映射。

  • @RequestBody:注解实现接收 http 请求的 json 数据,将 json 数据转换为 java 对象。

  • @ResponseBody :注解实现将 controller 方法返回对象转化为 json 响应给客户。

  • @Controller:控制器的注解,表示是表现层,不能用用别的注解代替。

12.SpringMVC 是线程安全的么?

  • SpringMVC 是线程安全的,因为 SpringMVC 是基于方法拦截处理请求,参数的变量全部是局部变量,并且 Spring 容器中的 Bean 默认也是单例模式,所以一般情况下不会产生线程安全问题。

  • 如果非得要在 SpringMVC 中定义成员变量,设置为只读状态或者无状态也不会有线程安全问题。

  • 如若非得在 Controller 中定义带状态的对象,并且多线程可以操作,则两种方式解决线程安全问题。

    • 在 Controller 中使用 ThreadLocal 变量,对于 SpringMVC 中的数据共享,是通过 ThreadLocal 实现,ThreadLocal 相当于一个 Map 集合,只不过 key 实现线程对象,value 是共享数据,针对共享数据进行线程隔离,同一个变量,不同的线程访问,会得到不同的结果,互相不干扰。

    • 在 Spring 配置文件 Controller 中声明 scope="prototype",每次都创建新的 Controller。

13.过滤器和拦截器的区别?

执行顺序 :过滤前 - 拦截前 - Action 处理 - 拦截后 - 过滤后。

  • 拦截器是基于Java的反射机制的,而过滤器是基于函数回调。

  • 拦截器不依赖与Servlet容器,过滤器依赖与Servlet容器。

  • 拦截器只能对处理器(Controller、Action)请求起作用,而过滤器则可以对几乎所有的请求起作用。

  • 拦截器可以访问上下文对象,而过滤器不能访问。

  • 在Servlet的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

14.@PathVariable和@RequestParam的区别?

在 Spring MVC 中,@PathVariable@RequestParam 都是用来从访问的 URL 中接收传递的参数的注解,但它们使用方式和处理的参数种类不同。

  • @PathVariable 注解用于解析 URL 中的占位符参数,即获取 URL 中的某一部分作为参数,比如获取 URL 中的 ID,如下面的示例:
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
    //处理id参数
}

在这个例子中,@PathVariable 注解将 URL 中的 id 参数映射到方法参数上,方法中的参数 id 将获取 URL 路径上的 {id} 值。

  • @RequestParam 注解用于获取请求中的查询参数,即获取 URL 中问号?后面的参数,如下面的示例:
@GetMapping("/users")
public List<User> getUsers(@RequestParam("page") int page, @RequestParam("size") int size) {
    //处理page和size参数
}

在这个例子中,@RequestParam("page") 将从请求 URL 中获取名为 page 的参数值,并将其映射到方法中的 page 参数上。这个注解还可以指定参数的默认值、是否必需等。

综上所述,@PathVariable 用于接收 URL 中的占位符参数,@RequestParam 用于接收 URL 上的查询参数,两者的使用方式和处理的参数种类不同。


关注公众号:编程火箭车
我们定期发布编程相关的文章、资讯、活动等内容。帮助编程爱好者、初学者或初级程序员快速入门、打牢基础。欢迎大家关注,和我们一起探索编程的精彩世界。文章来源地址https://www.toymoban.com/news/detail-459687.html

到了这里,关于JavaWeb编程面试题——Spring Web MVC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 基础知识点1 (含面试题1)

    Spring Boot 是一款基于 Spring 框架的开源应用程序开发工具,它旨在简化 Spring 应用程序的配置和开发过程。Spring Boot 提供了一种简单的方式来创建可独立运行的、生产级别的应用程序,并在需要时进行部署。Spring Boot 在微服务架构和云计算环境下得到了广泛应用。 本次主要是

    2024年01月25日
    浏览(40)
  • 入职微软一月后的感悟,谈谈面试经历及入职体验,web前端常见面试题

    在某一天,我在某 App 上被一个微软的陌生人勾搭,简单地电面后一拍即合,我向他投递了简历。 正式的面试一共有四轮,三轮技术面 + 一轮 AA 面(大老板),每轮持续时间一个小时左右。 除了最后一面聊了聊人生、理想、逻辑推理等非技术内容。其他三面基本上是项目算

    2024年04月26日
    浏览(48)
  • C#知识点、常见面试题

    https://github.com/JackYan666/CSharpCode/blob/main/CSharpCode.cs 1.For循环删除集合元素可能漏删:从后面往前删除 2.Foreach不能直接修改集合元素:用递归的思想,删除完了的集合重新遍历 3.闭包问题:for循环存在闭包,可以通过使用临时变量解决;Task存在闭包问题可以通过wait解决,可以通

    2024年02月10日
    浏览(34)
  • javaWeb差缺补漏(二)【针对于自身知识点掌握情况】

    1、编写数据库建立连接工具类 2、编写操作数据库的类,使用commons-dbutils.jar 3、编写查询返回一个javaBean的sql 4、查询返回多个对象 5、查询返回单个值 前后端联调: 跳转到注册页面: req.getRequestDispatcher(“/pages/user/register.html”).forward(req,resp); JSP的作用是:代理Servlet程序回传

    2024年02月11日
    浏览(33)
  • 2023JAVA 架构师面试 130 题含答案:JVM+spring+ 分布式 + 并发编程》...

    此文包含 Java 面试的各个方面,史上最全,苦心整理最全 Java 面试题目整理包括基+JVM+算法+数据库优化+算法数据结构+分布式+并发编程+缓存等,使用层面广,知识量大,涉及你的知识盲点。要想在面试者中出类拔萃就要比人付出更多的努力,共勉! java 高频面试题如下: j

    2024年02月15日
    浏览(44)
  • 定制自己的 AI 角色CustomChar;AI知识点和面试题;提高llama 3 的微调速度Unsloth

    ✨ 1: CustomChar 允许你创建和定制自己的 AI 角色 CustomChar 是一个开源项目,它允许你创建和定制自己的 AI 角色。无论是游戏中的角色,还是个人的虚拟助手(比如电脑上的 JARVIS),甚至是在线教育体验中的虚拟朋友或老师,CustomChar 都能让这些角色变得生动而有趣。 地址:

    2024年04月24日
    浏览(44)
  • 【JavaWeb 专题】15个最经典的JavaWeb面试题

    Java Web,是用Java技术来解决相关web互联网领域的技术栈。今天我们来总结一下经常在面试中遇到的经典面试题。 HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本。 HTTP1.1 默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不

    2024年02月11日
    浏览(37)
  • Java面试知识点(全)- Java面试基础部分一

    Java面试知识点(全)https://nanxiang.blog.csdn.net/article/details/130640392 语法基础 封装 利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联

    2024年02月05日
    浏览(46)
  • 【面试题】C#面试常见基础知识点整理(附示例代码)

    大家好,这是自己自行整理的c#面试题,方便自己学习的同时分享出来。 相同点 抽象方法和虚方法都可以供派生类重写, 派生类重写父类的方法都要使用override来声明。 不同点 虚方法必须有方法名称和方法实现;抽象方法是只有方法名称,没有方法实现; 虚方法在派生

    2024年02月02日
    浏览(55)
  • 课程《JavaWeb基础框架程序设计》考试题下篇——数据库与表单操作用题(人事管理平台的添加员工档案信息的操作题)

    这篇文章是大学课程《JavaWeb基础框架程序设计》考试题目的内容,包括了原题和答案。题目只包括了三道编程题,分值为30分、30分和40分,这篇文章继上一篇(课程《JavaWeb基础框架程序设计》考试题上篇——基础应用题(计算应用、水仙花数)),介绍40分的那题,以及代码

    2024年02月04日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包