Spring MVC面试整理

  1. Spring MVC执行过程

1. 客户端的请求提交到dispatcherServlet

2. DispatcherServlet查询一个或者多个handlermapping ,找请求的Controller

3. DispatcherServlet将请求提交给Controller, Controller调用完毕后返回modelAndView

4. DispatcherServlet查询一个或多个对应的前端控制器,将modelAndView传递给指定的前端控制器

5. 将渲染完的视图返回给客户端

2. SpringMVC的Controller为单例的尽量不要设置属性,而是在方法中

3. @RequestMapping注解用在类上面代表该类方法的父路径

4. SpringMVC与Struts2的主要区别

  • SpringMVC的前端控制器为一个Servlet 而Struts为Filter
  • SpringMVC的Controller为单例,而Struts2的Action为多例
  • SpringMVC没有值栈的概念,Struts有值栈
    • SpringMVC是方法参数绑定,而Struts是属性绑定

5. SpringMVC的拦截器

  • 类实现接口HandlerInterceptor,实现方法,方法分别对应方法执行前 , 执行后 , 页面渲染后
  • 然后在配置文件中配置拦截器
  • 多个拦截器一起执行的时候preHandler按照配置的顺序执行,剩下的两个拦截器都要在preHandler返回为True时才能执行.
  • postHandler和afterCompletion按照配置顺序的逆序调用

6. json

  • @ResponseBody 输出json
  • @requestbody 接受json 转化为pojo

7. 上传文件

  • 前端规则
  • 在配置文件中配置多媒体
  • 在Controller中用MultipartFile来接受文件

8. 三大组件和核心

  • 核心 : DispatcherServlet(前端控制器)
  • 三大组件 :
  • ViewResolver : 视图解析器()
  • HandlerMapping : 处理器映射器组件(查找路径名对应的Handler)
  • HandlerAdapter : 处理器适配器组件(执行Handler)

9. 主要的注解

  • @requestmapping() // 方法的访问路径value,method=post 限制请求的方式为get/post
  • @Controller
  • @ResponseBody
  • @RequestBody

10. 拦截规则

  • /* 拦截所有,包括jsp
  • / 拦截除了jsp以外的资源

11. Controller的返回值

  • ModelAndView : 返回视图和参数
  • Model : 在方法中传递Model,返回值为String , 直接return 视图
  • Void : 什么也不反回

12. 重定向和请求转发

  • 在路径前面添加关键字 return 'redirect:/item/itemlist.action' return 'forward:/item/itemlist.action'

13. 参数绑定

  • public ModelAndView toEdit(Integer id,HttpServletRequest request,HttpServletResponse response,HttpSession session)

14. 异常处理

  • 继承HandlerExceptionResolver 实现对应的方法,对错误进行处理
  • springmvc配置<bean class="com.lyh.exception.CustomerException"></bean>

15. 拦截提交参数中包含"type=test"字符串

  • 可以在@RequestMapping注解里面加上params="type=test"

16. SpringMvc用什么对象从后台向前台传递数据的

  • 通过ModelMap对象,可以在这个对象里面用put方法,把对象加到里面,前台就可以通过el表达式拿到

17. 怎么样把ModelMap里面的数据放入Session里面

  • 可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一枝花算不算浪漫

[Spring框架]Spring开发实例: XML+注解.

43012
来自专栏余林丰

SpringMVC——DispatcherServlet的IoC容器(Web应用的IoC容器的子容器)创建过程

在上一篇《Spring——Web应用中的IoC容器创建(WebApplicationContext根应用上下文的创建过程)》中说到了Web应用中的IoC容器创建...

1985
来自专栏Java工程师日常干货

写出我的第一个框架:迷你版Spring MVC前期准备关于自定义注解编写核心控制器:DispatcherServletMake it run!

OK,到这里,一个迷你版的Spring MVC就开发完成了,以前,都是用Spring MVC,从没有想过可以自己开发一个出来,这是我的第一次,我的能量超乎我的想...

924
来自专栏陈本布衣

Spring基础篇——自动化装配bean

上篇博文讲Spring的IOC容器时说道,虽然容器功能强大,但容器本身只是个空壳,需要我们主动放入装配对象,并告诉它对象之间的协作关系,然后容器才能按照我们的...

2827
来自专栏技术碎碎念

浅谈对Spring Framework的认识

       Spring Framework,作为一个应用框架,官方的介绍如下:        The Spring Framework provides a...

2746
来自专栏java学习

Spring常用注解(收藏大全)

如果你是初学者,或者是自学者!你可以加小编微信(xxf960513)!小编可以给你学习上,工作上的一些建议以及可以给你(免费)提供学习资料!最重要我们还可以交个...

682
来自专栏DT乱“码”

Spring的一些注解解析

@Repository、@Service、@Controller 和 @Component 将类标识为Bean spring 自 2.0 版本开始,陆续引入了一...

1919
来自专栏Java Edge

使用Spring Data JPA访问关系型数据库添加数据库和jpa依赖定义实体对象创建对象访问方法总结

我们将定义一个实体对象UserApply并将其存储到关系型数据库中,并使用JPA注解:

702
来自专栏一个会写诗的程序员的博客

Spring 实现 SchedulingConfigurer 接口完成动态定时任务(配合数据库动态执行)

Spring 实现 SchedulingConfigurer 接口完成动态定时任务(配合数据库动态执行)

943
来自专栏互联网大杂烩

Spring MVC组件

根据request找到相应的处理器Handler和Interceptors,HanddlerMaping接口只有一个方法,getHandler()

572

扫码关注云+社区