admin管理员组

文章数量:1794759

SpringMVC常见面试题

SpringMVC常见面试题

Java常见面试题_2022最新版

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

文章目录
  • Java常见面试题_2022最新版
    • MVC指的是什么
    • MVC模式的好处有哪些?
    • Spring MVC五大组件
    • Spring MVC执行流程
    • HTTP状态码分类:
    • 常遇到的状态码
    • get请求和post请求的区别
    • 重定向和转发的区别
      • 重定向
      • 转发
    • 同源策略
    • 跨域
    • session的工作原理
    • cookie和session的区别
    • Session和Token的区别
    • SpringMVC中常用注解


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

    域不同时,一般用重定向(百度 --> 腾讯)

    转发

    一般用于内部资源的访问

    同源策略

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

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

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

    session的工作原理

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

    cookie和session的区别

    cookie和session都是会话技术

    cookie:数据保存在浏览器中

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

    session:数据保存在服务器中

    • 保存时间:默认保存时间是半小时,可以修改但是不建议,对服务器产生压力
    • 保存数据大小:没有大小显示,可以保存任何数据类型
    • 性能:过多会消耗服务器资源
    • 应用场景:记住登陆状态
    Session和Token的区别
    • session 和 token 都是为了验证用户身份,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 异常拦截处理器

    本文标签: 面试题常见springmvc