SpringMVC面试题

什么是SpringMVC ? 简单介绍下你对SpringMVC的理解 ?

SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过Model,View,Controller分离,将Web层进行职责解耦,把复杂的Web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合

SpringMVC的流程

  1. 用户发送请求至前端控制器DisparcherServler
  2. DisparcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle
  3. 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有生成)一并返回给DisparcherServlet
  4. DispartcherServlet调用HandlerAdapter处理器适配器
  5. HandlerAdapter经过适配器调用 具体处理器(Handler)
  6. Handler执行完成返回ModelAndView
  7. HandlerAdapter将Model执行结果ModelAndView返回给DispartcherServlet
  8. DispartcherServlet将ModelAndView传给ViewResolver视图解析器进行解析
  9. ViewAResokver解析后进返回具体的View‘
  10. DispatcherServlet对View进行渲染视图(即将视图模型填充至视图中)
  11. DispartcherServlet相应用户

SpringMVC的优点

  1. 可以支持各种视图技术,而不仅局限于JSP
  2. 与Spring框架集成(如IOC容器。AOP等)’
  3. 清晰的角色分配:前端控制器(DispartcherServlet),请求到处理器映射(handlerMapping),处理器适配器(HandlerAdapter),视图解析器(ViewResolver)。
  4. 支持各种请求资源的映射策略

SpringMVC的主要组件

  1. 前端控制器 DispartcherSerlver(不需要程序员开发)

作用:接收请求,相应结果,相当于转发器,有了DisparcherServlet就减少了其他组件之间的耦合度。

  1. 处理器映射器(HandlerMapping)(不需要程序员开发)

作用:根据请求的URL来查找Handler

  1. 处理器适配器HandlerAdpater这个是Controller类中的方法

注意:在编写Handler的时候,要哦按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以真确的去执行Handler

  1. 处理器Controller(需要程序员开发)
  2. 视图解析器 ViewResolver(不需要程序员开发)
  3. 视图View(需要程序员开发JSP)

View是一个借口,它的实现支持不同的视图类型(JSP,PDF等等)

SpringMVC是怎么设定重定向和转发的?

  1. 转发:在返回值前面加“forward”,譬如“forward:user.do?name = method4”
  2. 重定向:在返回值前面加“redirect”,譬如“redirect:http://www.baidu.com

SpringMVC是怎么和AJAX相互调用的?

通过Jackson框架就可以把Java里面的对象直接转化成JS可以识别的Json对象,具体有下面的几个步骤。

  1. 加入Jackson.jar
  2. 在配置文件中配置json的映射
  3. 在接收AJAX方法里面可以直接返回object,list等,但方法之前要加上@ResponseBody注解

Spring MVC的异常处理

可以抛给Spring框架,由Spring框架来处理:我们只需要配置简单的异常处理,在异常处理器中添加页面即可

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

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

SpringMVC常用的注解有哪些?

@RequestMapping:用于处理请求Url映射的纾解,可用于类或方法上。用于类上,则表示类中的所有相应请求的方法都是以改地址作为父路径

@RequestBody:注解实现接收Http请求的json数据,将json转换为Java对象

@ResponseBody:注解实现将Conreoller方法返回对象转化为json对象相应给客户。

SpringMVC中的控制器的注解一般用哪个,有没有别的曲解可以替代?

一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponsBody+@Controller,表示是表现层,除此之外,一般不用别的注解代替

如果在拦截请求中,我想拦截get方法提交的方式,怎么配置?

可以在@RequestMapping注解里面加上  method=RequestMethod.GET.

怎么在方法里得到Request,或者Session

直接在方法的形式参数中声明Request,SpringMVC就会自动把request对象传入

如果想在拦截的方法里面得到从前台传入的参数,怎么得到?

直接在形式参数里Ian声明这个参数就可以,但必须名字和传过来的参数一样。

如果前台有很多歌参数传入,并且这些参数都是一个对象的,那么怎样快速得到这个对象?

直接在方法中声明这个对象,SpringMVC就会自动把属性赋值到这个对象里面

SpringMVC中的函数的返回值是什么?

返回值可以有很多类型,有String,ModelAndView,ModelAndView类把视图和数据都合并的一起,但是一般用String比较好

SpringMVC注解原理?

注解的本质是继承了Annotation的特殊接口,具体实现类是Java运行时生成的动态代理类,我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象,通过代理对象调用自定义menmberValues这个Map中索引对应的值,而memberValues的来源是Java常量池。

Spring声明式事务管理:基于注解的方式

  1. 在spring.xml中噢诶之事务管理器,DataSourceTransactionManager
  2. 在spring.xml中开启注解事务
  3. 在对应业务层添加Transactional注解

【面试题】SpringMVC部分面试题的更多相关文章

  1. myBatis+Spring+SpringMVC框架面试题整理

    myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM   版权声明:本文为博主原创文章 ...

  2. SpringMVC常见面试题总结(超详细回答)

    SpringMVC常见面试题总结(超详细回答) 1.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的 ...

  3. Libre 6006 「网络流 24 题」试题库 / Luogu 2763 试题库问题 (网络流,最大流)

    Libre 6006 「网络流 24 题」试题库 / Luogu 2763 试题库问题 (网络流,最大流) Description 问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同 ...

  4. 震惊!几道Python 理论面试题,Python面试题No18

    本面试题题库,由公号:非本科程序员 整理发布 第1题: 简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候 ...

  5. 面试前赶紧看了5道Python Web面试题,Python面试题No17

    目录 本面试题题库,由公号:非本科程序员 整理发布 第1题: Flask中的请求上下文和应用上下文是什么? 第2题:django中间件的使用? 第3题: django开发中数据做过什么优化? 第4题: ...

  6. 千万不要错过这几道Python面试题,Python面试题No16

    第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...

  7. Mybatis,Spring,SpringMVC框架面试题

    Mybatis测试 1,   Mybatis的核心是(  sqlsessionfactory    ) 2,   使用Mybatis持久化框架进行数据查询需要返回的一个实体类的集合, 在<sel ...

  8. SpringMVC常见面试题总结

    1.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring的一个模块,无需中间整合 ...

  9. 面试题:SpringMVC的工作流程

    SpringMVC是当今最主流的Web MVC框架,没有之一,要做一名合格的JavaWeb工程师,学好它势在必行! 与Struts2原理不同,SpringMVC是通过最基础最传统的servlet来实现 ...

随机推荐

  1. (四十八)c#Winform自定义控件-下拉按钮

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  2. 关于ionic 打包后 background-image 无法显示 的问题

    这几天费劲心思,终于把ionic 项目打包生成 本地app,但是安卓手机安装以后,我所有的雪碧图的 icon ,竟然无法显示:到处搜索答案,都没有什么可行的,都是说什么ionic版本不对,androi ...

  3. Java虚拟机详解(八)------虚拟机监控和分析工具(2)——可视化

    上篇博客我们介绍了虚拟机监控和分析命令行工具,由于其不够直观,不是很容易排查问题,那么本篇博客我们就来介绍几个可视化工具. 1.JConsole JConsole(Java Monitoring an ...

  4. CodeForces 909C

    题意略. 思路: 开始的时候,定义dp[i]:当前行在第i行,i~n有多少种排列方式,如果i为f,那么dp[i] = dp[i + 1],因为第i + 1条语句只能放在f后且向右缩进一位: 如果i为s ...

  5. 推荐一个比 ls 命令速度快 100 倍的文件目录浏览神器

    本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...

  6. 【Edu49 1027D】 Mouse Hunt DFS 环

    1027D. Mouse Hunt:http://codeforces.com/contest/1027/problem/D 题意: 有n个房间,每个房间放置捕鼠器的费用是不同的,已知老鼠在一个房间x ...

  7. 2019杭电多校 hdu6662 Acesrc and Travel (树形dp

    http://acm.hdu.edu.cn/showproblem.php?pid=6662 题意:有两个人在树上博弈,每个点节点有两个分数a[i]和b[i],先手先选择一个点,后手在先手选的点的相邻 ...

  8. CodeForces 340E Iahub and Permutations 错排dp

    Iahub and Permutations 题解: 令 cnt1 为可以没有限制位的填充数字个数. 令 cnt2 为有限制位的填充数字个数. 那么:对于cnt1来说, 他的值是cnt1! 然后我们对 ...

  9. atcoder D - 11(组合数学)

    题目链接:http://arc077.contest.atcoder.jp/tasks/arc077_b 题解:有n+1个数只有一个数字是有重复出现的,要求一共有多少不同的组合显然和这两个数的位置有关 ...

  10. abp(net core)+easyui+efcore实现仓储管理系统——菜单-下(十七)

    实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案 ...