Spring MVC

Spring MVC 是Spring Framework 提供的 web 组件
它的实现基于 MVC 的设计模式:Model(模型层)、View(视图层)、Controller(控制层)。

  1. Spring MVC 的执行流程:

    • 客户端发送请求给前端控制器(DispatcherServlet)
    • 前端控制器根据请求路径地址,调用对应的处理器
    • 处理器再调用对应的业务方法,得到相应的业务数据
    • 处理器将组装好的数据返回给前端控制器
    • 前端控制器将获取的 ModelAndView 对象传给视图解析器
    • 视图解析器对 ModelAndView 进行解析,解析完毕后,返回解析好的数据
    • 前端控制器获取到数据,经过渲染,再展示给客户端

  1. Spring MVC 的优点:

    1、支持各种视图技术,不仅仅是jsp
    2、与Spring框架集成
    3、支持各种请求资源的映射策略

  2. Spring MVC的主要组件?

    DispatcherServlet 前端控制器
    HandlerMapping 处理器映射器
    HandlerAdapter 处理器适配器
    Controller 控制器
    Handler 适配器
    ViewResolver 视图解

  3. 如何实现跨域访问?

    两种方式:使用 JSONP 和 或在服务器端设置运行跨域。

  4. @RequestMapping 注解的常用属性有哪些?

    常用属性如下:

    1. Value:指定 URL 请求的实际地址, @RequestMapping(value = “/hello”)
    2. method:指定请求的 method 类型,如get/post; @RequestMapping(method=RequestMethod.POST)
    3. param:指定请求参数中必须包含的参数名称
  5. HTTP 状态码及对应的含义

    • 400:错误请求,服务器不理解请求的语法
    • 401:未授权,请求要求身份验证
    • 403:禁止访问,服务器拒绝请求
    • 404:未得到对应的资源
    • 500:服务器内部错误,服务器遇到错误,无法完成请求
    • 502:错误网关
    • 504:网关超时
  6. 怎样在方法里面得到Request,或者Session?

    答:直接在方法的形参中声明request,SpringMvc就自动把request对象传入。

  7. forward 和 redirect 的区别

    • forward 表示请求转发,请求转发是服务器的行为;redirect 表示重定向,重定向是客户端行为。
    • forward 是服务器请求资源,服务器直接访问,把请求的资源转发给浏览器,地址不变,只用到一个请求;redirect 是服务器发送一个状态码告诉浏览器重新请求新的地址,地址发生改变,用到多个请求。
    • forward 转发页面和转发的页面可以共享 request 里面的数据,redirect 不能共享数据。
    • forward 比 redirect 效率更高。
  8. Spring MVC 有几种获取 request 的方式

    三种方式:
    ①:从请求参数中获取
    ②:通过 @RequestContextHolder 上下文获取 request 对象
    ③:通过自动注入的方式

  9. Spring MVC 的控制器是不是单例模式,如果是,有什么问题,怎么解决?

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

  10. Spring MVC 的常用注解有哪些?

    • @Controller:用于标记某个类为控制器
    • @RequestBody:注解实现将controller方法返回对象转化json对象响应给客户.
    • @ResponseBody:标识返回的数据不是 HTML 页面,而是 JSON、XML
    • @Component:标识为 Spring 的组件
    • @Configuration:用于定义配置类
    • @RequestMapping:用于处理请求url映射的注解,可用在类或方法上。
    • @Autowired:自动装配对象
  11. Spring MVC 怎么和AJAX相互调用的?

    通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :
    (1)加入Jackson.jar
    (2)在配置文件中配置json的映射
    (3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。

  12. 如何解决POST请求中文乱码问题,GET的又如何处理呢?

    post:在web.xml中配置一个CharacterEncodingFilter过滤器
    get:①修改tomcat配置文件添加编码与工程编码一致;另外一种方法对参数进行重新编码

  13. Spring MVC 里面拦截器是怎么写的:

    有两种写法,一种是实现HandlerInterceptor接口,另外一种是继承适配器类,接着在接口方法当中,实现处理逻辑;然后在SpringMvc的配置文件中配置拦截器即可:

  14. 拦截器的使用场景有哪些?

    日志记录:可用记录请求日志,便于信息监控和信息统计
    权限管理:可用于用户登录状态的检查
    统一安全处理:可用于统一的安全校验或参数的加密/解密

Spring MVC面试复习整理的更多相关文章

  1. Spring MVC面试整理

    Spring MVC执行过程 客户端的请求提交到dispatcherServlet DispatcherServlet查询一个或者多个handlermapping ,找请求的Controller Di ...

  2. 从一个简单案例上手Spring MVC,同时分析Spring MVC面试问题

    很多公司都会用Spring MVC,而且初级程序员在面试时,一定会被问到这方面的问题,所以这里我们来通过一个简单的案例来分析Spring MVC,事实上,我们在培训中就用这个举例,很多零基础的程序员能 ...

  3. Spring MVC基础知识整理➣拦截器和自定义注解

    概述 Spring MVC中通过注解来对方法或者类进行动态的说明或者标注,类似于配置标识文件的属性信息.当标注的类或者方式被使用时候,通过提取注解信息来达到对类的动态处理.在 MVC中,我们常用的注解 ...

  4. Spring mvc 面试

    Spring工作原理及其作用 1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.DispatcherSer ...

  5. Spring MVC 相关资料整理

    来源于:http://www.cnblogs.com/ylhssn/p/4062757.html 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即 ...

  6. Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库

    概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...

  7. Spring MVC基础知识整理➣国际化和异常处理

    概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...

  8. Spring MVC基础知识整理➣数据校验与格式化

    概述 将view中Form的数据提交到后台之后,后台如何验证数据的有效性?在这里Spring MVC提供了相应的Hibernate类包(hibernate-validator-4.3.1.Final. ...

  9. Spring MVC基础知识整理➣View与Controller数据交互

    概述 Spring MVC是由View—Controller—Model组成,其中View和Controller的数据交互,成为了关注的核心点.MVC中,我们将View中的数据传递到Controlle ...

随机推荐

  1. new Vue({ render: h => h(App), }).$mount('#app')

    这里创建的vue实例没有el属性,而是在实例后面添加了一个$mount('#app')方法. $mount('#app') :手动挂载到id为app的dom中的意思 当Vue实例没有el属性时,则该实 ...

  2. ubuntu 2018 apt 代理proxy设置

    永久设置 打开代理文件,好像默认没有,98proxy是自己新建的 sudo gedit /etc/apt/apt.conf.d/98proxy 在打开的文件中输入如下内容,其中username和pas ...

  3. uni-app 小程序从零开始的开发流程

    前言 本文基于 HBuilderX 3.1.22 + 微信开发者工具 1.05.2106300为主要内容进行说明. 文档版本:1.0.0 更新时间:2021-09-03 15:32 一.准备 uni- ...

  4. TCP连接中的状态

    1. 正常状态转换 我们用图 3-13 来显示在正常的 TCP 连接的建立与终止过程中,客户与服务器所经历的不同状态.读者可以对照图 3-12 来阅读,使用图 3-12 的状态图来跟踪图 3-13 的 ...

  5. CPU内部结构域寄存器

    CPU内部结构域寄存器   64位和32位系统区别: 寄存器是CPU内部最基本的存储单元. CPU对外是通过总线(地址.控制.数据)来和外部设备交互的,总线的宽度是8位,同时CPU的寄存器也是8位,那 ...

  6. 【XSS】XSS修炼之独孤九剑

    题目地址 xcao.vip/test 题目作者给出的解题思路 http://xcao.vip/test/xss/XSS修炼之独孤九剑.pdf 独孤九剑-第一式 题目 过滤了等号 =.小括号 (),要求 ...

  7. Python - 面向对象编程 - __del__() 析构方法

    del 语句 Python 提供了 del 语句用于删除不再使用的变量 语法 del 表达式 删除变量的栗子 var = "hello" del var print(var) # ...

  8. Java字符串常量池及字符串判等解析

    一.理解"=="的含义 "=="常用于两个对象的判等操作,在Java中,"=="主要有以下两种用法: 1.基础数据类型:比较的是他们的值是否 ...

  9. 2.设计模式常用的UML图分析(用例图、类图与时序图)

    1-用例图 概述 展现了一组用例.参与者以及他们之间的关系. 用例图从用户角度描述系统的静态使用情况,用于建立需求模型. 用例特征 保证用例能够正确捕捉功能性需求,判断用例是否准确的依据. 用例是动宾 ...

  10. 密码学系列之:bcrypt加密算法详解

    目录 简介 bcrypt的工作原理 bcrypt算法实现 bcrypt hash的结构 hash的历史 简介 今天要给大家介绍的一种加密算法叫做bcrypt, bcrypt是由Niels Provos ...