SpringMVC面试题

1.Spring MVC框架有什么用?

Spring Web MVC 框架提供 模型-视图-控制器 架构和随时可用的组件,用于开发灵活且松散耦合的Web应用程序。
MVC模式有助于分离应用程序的不同方面,如输入逻辑,业务逻辑和UI逻辑,同时在所有这些元素之间提供松散耦合。

2.Spring MVC和Struts2的区别?

主要有以下几点区别:
1、Spring MVC是基于方法的拦截,即一个方法映射一个URL,是单例模式;而Struts2是基于类的拦截,每次请求就会创建一个Action,是多例模式。
2、Spring MVC 的入口是 Servlet,即:DispatcherServlet,而 Struts2 的入口Filter,即:StrutsPrepareAndExecuteFilter。
3、Spring MVC(Spring 3.0)可以做到0配置文件,而Struts2则不行。
4、SpringMVC开发效率、性能、安全性都要远高于Struts2。

3.Spring MVC 工作流程?

在这里插入图片描述
a.用户发送请求至前端控制器DispatcherServlet
b.DispatcherServlet收到请求调用处理器映射器HandlerMapping。
c.处理器映射器根据请求url找到具体的处理器,生成处理器执行链 HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet。
d.DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作,如:参数封装,数据格式转换,数据验证等操作
e.执行处理器Handler(Controller,也叫页面控制器)。
f.Handler执行完成返回ModelAndView
g.HandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServlet
h.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
i.ViewReslover解析后返回具体View
j.DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图中)。
k.DispatcherServlet响应用户。

4.Spring MVC有哪些处理组件?

前端控制器(DispatcherServlet):主要负责捕获来自客户端的请求和调度各个组件。

处理器映射器(HandlerMapping):根据url查找后端控制器Handler。

处理器适配器(HandlerAdapter):执行后端控制器(Handler),拿到后端控制器返回的结果ModelAndView后将结果返回给前端控制器DispatcherServlet。

后端控制器(处理器)(Handler):主要负责处理前端请求,完成业务逻辑,生成ModelAndView对象返回给HandlerAdapter。

视图解析器(ViewResolver):主要负责将从DispatcherServlet中拿到的ModelAndView对象进行解析,生成View对象返回给DispatcherServlet。

5.Spring MVC的HandlerMapping 作用?

Spring mvc 使用HandlerMapping来找到并保存url请求和处理函数间的mapping关系。
HandlerMapping主要有三部分组成:HandlerMapping映射注册、根据url获取对应的处理器、拦截器注册。

6.Spring MVC的HandlerAdapter作用?

处理适配器:调用具体的方法对用户发来的请求来进行处理

7.HandlerMapping、HandlerAdapter 关系?

HandlerMapping是负责找到请求URL对应的控制器类(controller)
HandlerAdapter是负责找到控制器类(Controller)对应的方法。

8. Spring MVC怎么获取当前request?

主要用的有两种方法:
1.直接定义方法参数 HttpServletRequest
2.直接注入对象(不会有线程安全问题)

@Autowired
private HttpServletRequest request;
@RequestMapping"/user/login")
public String login(HttpServletRequest request){

}

Response/Session对象的获取方式同上。

9.Spring MVC怎么映射一个控制器类?

有两种处理方式:
1、正常跳转情况下使用@Controller注解。
2、如果整个类的请求方法是要在http body中输出结果,可以使用@RestController注解,相当于@Controller+@ResponseBody。

10.Spring MVC控制器是单例模式吗?

Spring MVC中的控制器(Controller)是单例模式,正常使用不会有问题,但不要使用全局成员变量,不然会造成线程安全问题。

11. Spring MVC控制器(Controller) 是线程安全的吗?怎么保证并发安全性?

Spring MVC控制器(Controller) 默认是单例模式,所以不是线程安全的,不要在Controller 中
定义及共享成员变量,否则会出现变量值错乱。
解决方法:
1)可以使用ThreadLocal线程副本包装一下;
2)将Controller改为多例模式:
@Scope(" prototype" )

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

常用的的一些 Spring MVC注解:
@Component:创建一个普通的 Springbean。
@Controller:标识一个Web应用程序控制层。

@RestController:标识一个 Web 应用程序控制层,用于从 http body返回数据,相当于@Controller+ @ResponseBody

@Service:标识为服务层。
@Repository:标识为DAO层。
@RequestMapping:映射一个 URL的访问路径
@GetMapping:映射一个Get URL的访问路径。
@PostMapping:映射一个Post URL的访问路径
@ResponseBody:以http body响应数据。@PathVariable:将变量映射到URL路径上。
@RequestParam:接收指定名称的请求数。
@RequestBody:表示从http body接收参数。

13.Spring MVC可以用在控制器上的注解有?

可以用在控制器类上的注解举例:
1)@Controller
2)@RestController
3)@ResponseBody
4)@RequestMapping
5)@ControllerAdvice
6)@RestControllerAdvice
7)@SessionAttributes
8)@SessionAttribute
。。。

14. Spring MVC可以用在方法上的注解有?

@RequestMapping、@GetMapper(以此类推)、@ResponseBody
@ModelAttribute、@ExceptionHandler

15.Spring MVC可以用在方法参数上的注解有?

@PathVariable、@RequestParam、@RequestHeader、@RequestBody
@ModelAttribute

16.Spring MVC@RequestMapping有啥用?

1.映射URL路径,将http的请求地址映射到控制器(controller)类的处理方法上。
2、@RequestMapping注解可以定义在控制器类上,也可以定义在类里面的方法上。

17.Spring MVC获取请求参数有哪些方式?

1.使用HttpServletRequest获取
2.自动注入Bean属性(参数为对象,表单name值对应对象属性)
3.通过@PathVariable获取路径中的参数
4.@ModelAttribute获取POST请求的FORM表单数据
eg:public String processSubmit(@ModelAttribute(“pojo”) Pojo pojo) {}

18.Spring MVC怎么进行请求转发?

关键字:forward
如:
在这里插入图片描述

19.Spring MVC怎么进行请求重定向?

关键字:redirect
如:
在这里插入图片描述

20.Spring MVC怎么只接收POST请求?

方法上使用@PostMapping注解

21.Spring MVC怎么限制请求数据格式?

指定consumes参数,
eg:@RequestMapping(consumes = MediaType.APPLICATION_JSON_VALUE):只能接受处理Content-Type为“application/json”数据格式的请求。

22.Spring MVC怎么指定响应数据格式?

指定produces参数,
eg:@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE):只能接受处理Content-Type为“application/json”数据格式的请求。

23.Spring MVC怎么返回JSON格式数据?

方法一:方法上@ResponseBody注解
方法二:类上@RestController注解 = ResponseBody+Controller

24. Spring MVC怎么向前台页面传递数据?

1.request.setAttribute()方法
2.使用ModelAndView类
3.方法参数用Model、ModelMap、Map
25.Spring MVC怎么解决请求乱码问题?
使用springMVC提供的CharacterEncodingFilter字符集编码过滤器:
在这里插入图片描述

同时配置Tomcat server配置文件:
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值