Java常见面试题_2022最新版
- 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请求
重定向和转发的区别
- 重定向时,客户端浏览器的地址栏(url)有变化,服务器告诉浏览器跳转到哪里,浏览器拿着这个地址再次发出请求;而转发 url 地址是不变的,由服务器跳转;
- 转发可以携带数据;重定向不行
- 重定向发生在客户端;转发发生在服务器端
- 重定向时发送两个请求;转发只发送一个请求(本质区别)
- 转发方法的调用者与被调用者之间共享相同的 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对象 。我们会将这个 key
和 value
保存到服务器的缓存
中,当然也可以持久化到数据库
或者Redis
中。然后服务器再把 sessionId 以cookie
的形式响应给客户端。这样下次客户端访问时,会直接带着 cookie
中的sessionId
,然后服务器会根据这个 sessionId
找到对应的 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
异常拦截处理器
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/107608.html