Spring MVC面试复习整理
Spring MVC
Spring MVC 是Spring Framework 提供的 web 组件
它的实现基于 MVC 的设计模式:Model(模型层)、View(视图层)、Controller(控制层)。
Spring MVC 的执行流程:
- 客户端发送请求给前端控制器(DispatcherServlet)
- 前端控制器根据请求路径地址,调用对应的处理器
- 处理器再调用对应的业务方法,得到相应的业务数据
- 处理器将组装好的数据返回给前端控制器
- 前端控制器将获取的 ModelAndView 对象传给视图解析器
- 视图解析器对 ModelAndView 进行解析,解析完毕后,返回解析好的数据
- 前端控制器获取到数据,经过渲染,再展示给客户端
Spring MVC 的优点:
1、支持各种视图技术,不仅仅是jsp
2、与Spring框架集成
3、支持各种请求资源的映射策略Spring MVC的主要组件?
DispatcherServlet 前端控制器
HandlerMapping 处理器映射器
HandlerAdapter 处理器适配器
Controller 控制器
Handler 适配器
ViewResolver 视图解如何实现跨域访问?
两种方式:使用 JSONP 和 或在服务器端设置运行跨域。
@RequestMapping 注解的常用属性有哪些?
常用属性如下:
- Value:指定 URL 请求的实际地址, @RequestMapping(value = “/hello”)
- method:指定请求的 method 类型,如get/post; @RequestMapping(method=RequestMethod.POST)
- param:指定请求参数中必须包含的参数名称
HTTP 状态码及对应的含义
- 400:错误请求,服务器不理解请求的语法
- 401:未授权,请求要求身份验证
- 403:禁止访问,服务器拒绝请求
- 404:未得到对应的资源
- 500:服务器内部错误,服务器遇到错误,无法完成请求
- 502:错误网关
- 504:网关超时
怎样在方法里面得到Request,或者Session?
答:直接在方法的形参中声明request,SpringMvc就自动把request对象传入。
forward 和 redirect 的区别
- forward 表示请求转发,请求转发是服务器的行为;redirect 表示重定向,重定向是客户端行为。
- forward 是服务器请求资源,服务器直接访问,把请求的资源转发给浏览器,地址不变,只用到一个请求;redirect 是服务器发送一个状态码告诉浏览器重新请求新的地址,地址发生改变,用到多个请求。
- forward 转发页面和转发的页面可以共享 request 里面的数据,redirect 不能共享数据。
- forward 比 redirect 效率更高。
Spring MVC 有几种获取 request 的方式
三种方式:
①:从请求参数中获取
②:通过 @RequestContextHolder 上下文获取 request 对象
③:通过自动注入的方式Spring MVC 的控制器是不是单例模式,如果是,有什么问题,怎么解决?
答:是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段。
Spring MVC 的常用注解有哪些?
- @Controller:用于标记某个类为控制器
- @RequestBody:注解实现将controller方法返回对象转化json对象响应给客户.
- @ResponseBody:标识返回的数据不是 HTML 页面,而是 JSON、XML
- @Component:标识为 Spring 的组件
- @Configuration:用于定义配置类
- @RequestMapping:用于处理请求url映射的注解,可用在类或方法上。
- @Autowired:自动装配对象
Spring MVC 怎么和AJAX相互调用的?
通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :
(1)加入Jackson.jar
(2)在配置文件中配置json的映射
(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。如何解决POST请求中文乱码问题,GET的又如何处理呢?
post:在web.xml中配置一个CharacterEncodingFilter过滤器
get:①修改tomcat配置文件添加编码与工程编码一致;另外一种方法对参数进行重新编码Spring MVC 里面拦截器是怎么写的:
有两种写法,一种是实现HandlerInterceptor接口,另外一种是继承适配器类,接着在接口方法当中,实现处理逻辑;然后在SpringMvc的配置文件中配置拦截器即可:
拦截器的使用场景有哪些?
日志记录:可用记录请求日志,便于信息监控和信息统计
权限管理:可用于用户登录状态的检查
统一安全处理:可用于统一的安全校验或参数的加密/解密
Spring MVC面试复习整理的更多相关文章
- Spring MVC面试整理
Spring MVC执行过程 客户端的请求提交到dispatcherServlet DispatcherServlet查询一个或者多个handlermapping ,找请求的Controller Di ...
- 从一个简单案例上手Spring MVC,同时分析Spring MVC面试问题
很多公司都会用Spring MVC,而且初级程序员在面试时,一定会被问到这方面的问题,所以这里我们来通过一个简单的案例来分析Spring MVC,事实上,我们在培训中就用这个举例,很多零基础的程序员能 ...
- Spring MVC基础知识整理➣拦截器和自定义注解
概述 Spring MVC中通过注解来对方法或者类进行动态的说明或者标注,类似于配置标识文件的属性信息.当标注的类或者方式被使用时候,通过提取注解信息来达到对类的动态处理.在 MVC中,我们常用的注解 ...
- Spring mvc 面试
Spring工作原理及其作用 1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.DispatcherSer ...
- Spring MVC 相关资料整理
来源于:http://www.cnblogs.com/ylhssn/p/4062757.html 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即 ...
- Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库
概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...
- Spring MVC基础知识整理➣国际化和异常处理
概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...
- Spring MVC基础知识整理➣数据校验与格式化
概述 将view中Form的数据提交到后台之后,后台如何验证数据的有效性?在这里Spring MVC提供了相应的Hibernate类包(hibernate-validator-4.3.1.Final. ...
- Spring MVC基础知识整理➣View与Controller数据交互
概述 Spring MVC是由View—Controller—Model组成,其中View和Controller的数据交互,成为了关注的核心点.MVC中,我们将View中的数据传递到Controlle ...
随机推荐
- 使用dom4j工具:读取xml标签(二)
package dom4j_read; import java.io.File; import java.util.List; import org.dom4j.Document; import or ...
- JAVA中直接用Jdbc就能操作数据库了,为什么还要用spring框架?
不过随着业务的扩展,你就会发现jdbc建立一个连接居然要几百毫秒,而执行一个普通的SQL仅仅需要几毫秒. 这么重量级的资源建立了就释放了不合适,得找个容器存起来,谁要就来取,不用了就还给容器,毕竟容器 ...
- TDSQL MySQL版基本原理-水平分表 读写分离 弹性扩展 强同步
TDSQL MySQL版(TDSQL for MySQL)是部署在腾讯云上的一种支持自动水平拆分.Shared Nothing 架构的分布式数据库.TDSQL MySQL版 即业务获取的是完整的逻辑库 ...
- 剖析虚幻渲染体系(11)- RDG
目录 11.1 本篇概述 11.2 RDG基础 11.2.1 RDG基础类型 11.2.2 RDG资源 11.2.3 RDG Pass 11.2.4 FRDGBuilder 11.3 RDG机制 11 ...
- GUI编程路线
基本路线
- spring boot 系列之七:SpringBoot整合Mybatis
springboot已经很流行,但是它仍需要搭配一款ORM框架来实现数据的CRUD,之前已经分享过JdbcTemplete和JPA的整合,本次分享下Mybatis的整合. 对于mybatis的使用,需 ...
- etcd学习(9)-etcd中的存储实现
etcd中的存储实现 前言 V3和V2版本的对比 MVCC treeIndex 原理 MVCC 更新 key MVCC 查询 key MVCC 删除 key 压缩 周期性压缩 版本号压缩 boltdb ...
- Jenkins持续集成接口压测
步骤 自动化压测- jmeter + shell Jenkins与jmeter压测,环境要求 自动压测运行逻辑 Jmeter输出压力测试报告 压测报告与Jenkins集成 Jenkins任务:源码同步 ...
- nacos配置中心模块详解
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 配置中心 业务上的配置,功能开关,服务治理上对弱依赖的降级,甚至数据库的密码等,都可能用到动态 ...
- C# windows服务知识集锦
最近公司项目,本人也是刚接触windows服务,现在把这两天上网学习的一些资料拿出来与大家分享. 1).关于windows服务安装包的制作和自动启动服务 http://blog.csdn.net/re ...