SpringMVC常见面试题

Java常见面试题_2022最新版

序号内容链接
1Java基础面试题https://blog.csdn.net/weixin_46030002/article/details/126399353
2Java集合容器面试题https://blog.csdn.net/weixin_46030002/article/details/126425298
3Java线程面试题https://blog.csdn.net/weixin_46030002/article/details/126518395
4Java异常面试题https://blog.csdn.net/weixin_46030002/article/details/126482778
5Spring常见面试题https://blog.csdn.net/weixin_46030002/article/details/127281194
6SpringMVC常见面试题https://blog.csdn.net/weixin_46030002/article/details/127057785
7Mybatis常见面试题https://blog.csdn.net/weixin_46030002/article/details/126026561
8MySQL常见面试题https://blog.csdn.net/weixin_46030002/article/details/126557564
9Redis常见面试题https://blog.csdn.net/weixin_46030002/article/details/126435834
  • Java常见面试题_2022最新版持续更新中…


MVC指的是什么

mvc是一种分层架构的设计模式,模型(model)、视图(view)、控制器(controller),用于实现前端页面的展现和后端业务数据处理的分离

MVC模式的好处有哪些?

  • 分层设计,实现了业务系统各个组件之间的解耦操作,有利于业务系统的可扩展性,可维护性
  • 有利于系统的并行开发,提升开发效率

Spring MVC五大组件

  • Distaperservlet:前端控制器
  • HandlerMapping:处理映射器
  • Controller:控制器
  • ModelAndView:数据视图
  • ViewResolve:视图解析器

在这里插入图片描述

Spring MVC执行流程

  • 用户发送请求至前端控制器 DispatcherServlet。
  • DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。
  • 处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
  • DispatcherServlet 调用 HandlerAdapter 处理器适配器。
  • HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器)。
  • Controller 执行完成返回 ModelAndView。
  • HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet。
  • DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。
  • ViewReslover 解析后返回具体 View。
  • DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中)。
  • DispatcherServlet 响应用户。
    请添加图片描述

HTTP状态码分类:

  • 1** :信息,服务器收到请求,需要请求者继续执行操作
  • 2** :成功,操作被成功接收并处理
  • 3** :重定向,需要进一步的操作以完成请求
  • 4** :客户端错误,请求包含语法错误或无法完成请求
  • 5** :服务器错误,服务器在处理请求的过程中发生了错误

常遇到的状态码

  • 200 OK
    • 请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。
  • 301 Moved Permanently(永久重定向)
    • 请求的资源已被永久的移动到新URL,返回信息会包括新的URL,浏览器会自动定向到新URL。今后任何新的请求都应使用新的URI代替。
  • 302 Found(临时重定向)
    • 与301类似。但资源只是临时被移动。表示请求的资源被分配了新的URL,希望本次访问使用新的URL。
  • 304 Not Modified(未修改)
    • 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
  • 400 Bad Request (语法错误)
    • 客户端请求的语法错误,服务器无法理解。
  • 401 Unauthorized(未授权)
    • 请求要求用户的身份认证
  • 403 Forbidden(禁止)
    • 服务器理解请求客户端的请求,但是拒绝执行此请求
  • 404 Not Found(未找到)
    • 服务器无法根据客户端的请求找到资源(网页)。除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用。
  • 405 Method Not Allowed (方法禁用 / 请求方式不被允许)
    • 客户端请求中的方法被禁止。(请求方式错误 / 请求方式不对应)
  • 415 Unsupported Media Type
    • 表示服务器无法处理请求的格式,一般来讲是 contentType 没设置或不匹配
  • 500 Internal Server Error(服务器内部错误)
    • 服务器遇到错误,无法完成请求。
  • 502 Bad Gateway(错误网关)
    • 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
  • 503 Service Unavailable(服务不可用)
    • 由于超载或系统维护,服务器暂时的无法处理客户端的请求。通常,这只是一种暂时的状态。
  • 504 Gateway Time-out(网关超时)
    • 服务器作为网关或代理,未及时从上游服务器接收请求。

get请求和post请求的区别

get请求

  • 请求参数放在请求地址后面
  • 请求参数大小有限制(4k以内)
  • get参数会明文限制在url上
  • 通过form表单提交(method=get)
  • 从服务器获取数据时使用get请求

post请求

  • 请求参数放在请求体里
  • 请求参数大小没有限制
  • post参数传出更安全
  • 通过form表单提交(method=post)
  • 向服务器传递数据时使用post请求

重定向和转发的区别

  1. 重定向时,客户端浏览器的地址栏(url)有变化,服务器告诉浏览器跳转到哪里,浏览器拿着这个地址再次发出请求;而转发 url 地址是不变的,由服务器跳转;
  2. 转发可以携带数据;重定向不行
  3. 重定向发生在客户端;转发发生在服务器端
  4. 重定向时发送两个请求;转发只发送一个请求(本质区别)
  5. 转发方法的调用者与被调用者之间共享相同的 request 对象和 response 对象;重定向则使用各自的 request 对象和 response 对象

重定向

域不同时,一般用重定向(百度 --> 腾讯)
在这里插入图片描述

转发

一般用于内部资源的访问
在这里插入图片描述

同源策略

同源策略(Same origin policy)是一种约定,浏览器最基本和最核心的安全功能。
同源策略:是指协议,域名,端口都相同,只要有一个不相同则不满足同源策略,就会产生跨域现象。
同源:相同的源。
源:

  • 协议:http https
  • 域名:举例(www.baidu.com 180.101.33.15 … )
  • 端口:举例(8080 8090 …)

跨域

当一个请求 url 的协议、域名、端口三者之间任意一个与当前页面 url 不同即为跨域
它指的是浏览器不能执行其他网站的脚本。是一种浏览器对 javascript 施加的一种安全限制。

session的工作原理

客户端登陆完成后,服务器创建一个session对象,同时会为这个 session 生成一个唯一的 key,这个可以就是我们的sessionId,而 value 就是我们的session对象 。我们会将这个 keyvalue 保存到服务器的缓存中,当然也可以持久化到数据库或者Redis中。然后服务器再把 sessionId 以cookie的形式响应给客户端。这样下次客户端访问时,会直接带着 cookie 中的sessionId,然后服务器会根据这个 sessionId 找到对应的 session对象请添加图片描述

cookie和session的区别

cookie和session都是会话技术

cookie:数据保存在浏览器中

  • 保存时间:默认保存在浏览器中,浏览器关闭数据就会被删除,但是可以设置时间,保存在磁盘中,时间到了自动删除
  • 保存数据大小:不能超过4k,只能是字符串数据
  • 性能:cookie在浏览器中,对服务端没有影响
  • 应用场景:记住账号和密码

session:数据保存在服务器中

  • 保存时间:默认保存时间是半小时,可以修改但是不建议,对服务器产生压力
  • 保存数据大小:没有大小显示,可以保存任何数据类型
  • 性能:过多会消耗服务器资源
  • 应用场景:记住登陆状态

Session和Token的区别

  • sessiontoken 都是为了验证用户身份,session 我们一般称为会话;token 我们一般称为令牌
  • session 保存在服务端(服务器缓存,数据库,缓存型数据库中);token 保存到浏览器的请求头中(header)
  • session 保存在服务端,会增加服务端内存开销;token 保存在浏览器中,减轻了服务器的压力和减少了频繁查询数据库,但是需要解析,浪费时间;所以session是以空间换时间,而token 是以时间换空间。
  • token可以跨域,session不可以跨域,它与域名绑定
  • token适用于集群,session不适用集群

SpringMVC中常用注解

  • @ResponseBody 响应正文,表示控制器方法的返回值绑定到HTTP响应体
  • @RestController Controller + @ResponseBody
  • @RequestMapping 来映射请求到控制器或其控制器方法
    • @GetMapping
    • @PostMapping
    • @PutMapping
    • @DeleteMapping
  • @RequestBody 标注在方法参数上,表示网络请求正文映射到方法参数
  • @PathVariable 将请求路径上“URI模版”映射到控制器的方法参数上
  • @RequestParam 将请求参数映射到控制器的方法参数上
  • @ResponseStatus 设置HTTP响应状态码
  • @RequestHeader 映射请求头到控制器方法参数
  • @ControllerAdvice 全局异常处理类
  • @RestControllerAdvice @ControllerAdvice + @ResponseBody 全局异常处理类
  • @ExceptionHandler 异常拦截处理器
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值