SpringMVC面试题

Spring MVC是一个基于Java的轻量级Web框架,实现MVC模式,简化web应用开发。其工作流程包括DispatcherServlet接收请求,通过HandlerMapping找到处理器,再由HandlerAdapter调用处理,返回ModelAndView,最终展现视图。SpringMVC与Spring Boot的主要区别在于,Spring Boot是为简化Spring使用而推出的,遵循约定优于配置。在Spring MVC中,通过@RequestBody和@ResponseBody与AJAX交互,解决POST请求中文乱码问题通常在web.xml配置过滤器,而拦截器用于处理预处理、后处理逻辑。控制器常用返回类型包括String、void等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,什么是Spring MVC ?简单介绍下你对springMVC的理解?
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
2,SpringMVC的工作流程(工作原理)?

图片: https://uploader.shimo.im/f/VmJHDcWog6jv0j1f.png

1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配 DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
2、DipatcherServlet接收到这个请求之后将根据请求的信息以及HandlerMapping的配置找到处理请求的处理器(Handler)。
3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。
5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。
6、Handler返回的Mode

### 关于Spring MVC的常见面试题 以下是关于Spring MVC的一些高频面试问题及其解答: #### 1. **什么是Spring MVC?** Spring MVC 是一种基于Java的轻量级Web开发框架,它是Spring Framework的一部分。它遵循MVC(模型-视图-控制器)设计模式,用于构建清晰分离的应用程序结构[^1]。 #### 2. **Spring MVC中的DispatcherServlet是什么?** `DispatcherServlet` 是Spring MVC的核心组件之一,作为前端控制器负责接收所有的HTTP请求并将其分发到相应的处理器(Handler)。通过配置文件或注解方式定义映射规则来实现这一过程[^1]。 #### 3. **Spring MVC如何处理请求流程?** 当客户端发起一个请求时,该请求会被转发给 `DispatcherServlet` 。随后按照如下顺序执行: - 调用合适的 HandlerMapping 来找到对应的 Controller; - 执行目标方法并将结果交给适配器进行解析; - 将最终的数据与逻辑视图名称返回至 DispatcherServlet ,再由其渲染实际页面后响应用户[^1]。 #### 4. **Spring Bean默认作用范围是什么?如果存在状态怎么办?** 在Spring容器中,默认情况下所有Bean都是以Singleton形式创建出来的。然而对于那些具有内部状态的对象来说可能会引发线程安全性方面的问题。因此建议要么让此类对象无状态化;要么考虑改变它们的作用域为Prototype从而每次注入新实例[^2]。 #### 5. **Spring MVC支持哪些类型的返回值?哪种更推荐使用?为什么?** 返回值可以是多种类型,包括但不限于String、ModelAndView等。其中较为常用的是String表示跳转路径名或者视图名字串。而 ModelAndView 则允许我们同时指定模型(Model)以及试图(View),不过通常为了简化代码书写习惯上还是倾向于采用字符串形式更好一些[^3]。 #### 6. **怎样向Session存储数据并通过Spring MVC管理生命周期?** 可以通过@SessionAttributes 注解读取特定属性保存进HttpSession 中直到超时期间结束为止。例如下面例子展示了如何利用Map接口参数自动绑定request scope内的键值对,并且还能把这些信息存入session里供后续访问[^4]: ```java @Controller @SessionAttributes(names={"key"}) // 或者 types={SomeType.class} public class ExampleController { @RequestMapping("/example") public String exampleMethod(@RequestParam String param, Map<String,Object> model){ model.put("attributeName","valueToBeStoredInSession"); return "viewName"; } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

teayear

读后有收获可以获取更多资源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值