01面试题

框架.SpringMVC

1、讲一下MVC

MVC是软件开发中一种经典的设计模式
作用:用于将业务逻辑和展示层进行分离。它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
M:model,模型层,用于数据封装

V:View,视图层,用于数据展示

C:Controller,控制器,用于流程&逻辑控制

2、springmvc的执行流程

SpringMVC是一个MVC框架,springmvc的工作流程:

  1. 发送请求:在浏览器输入请求路径,发送请求,前端控制器连接所有的请求。
  2. 获得处理器:核心控制器(DispatcherServlet)接收到请求,通过处理器映射器(handlerMapping)获得对应的处理器(Handler)
    大白话:根据请求路径获得对应的controller。
  3. 执行处理器:通过处理器适配器(HandlerAdapter)执行处理器(Handler),并返回视图模型对象(ModelAndView)
    大白话:执行controller方法。如果方法返回的字符串,底层也会转换成ModelAndView。
  4. 解析视图:通过视图解析器(ViewResolver)解析ModelAndView中的视图,将逻辑视图解析成真正的视图。
  5. 渲染视图:将Model中的数据渲染到视图(View)中
  6. 响应结果
    大白话:将模型数据(查询结果)渲染到jsp页面中,并将处理结果响应给浏览器。
3、手绘SpringMVC执行流程图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6q3uxTzU-1573799097337)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\1562568478205.png)]

4、什么是Spring MVC框架的控制器

Spring框架的核心控制器(前端控制器)是DispatherServlet
它的核心功能就是分发请求,请求会被分发给对应处理的类handler。

5、SpringMVC跳转一个页面,怎么返回一个json数据?

使用@ResponseBody注解

1.如果在方法使用该注解,当前方法返回json数据

2.如果在类上使用该注解,当前类中所有的方法,都将返回Json数据

扩展阅读:
消息转换器原理解析:https://blog.youkuaiyun.com/shadabing/article/details/84664402
SpringBoot配置Fastjson:https://blog.youkuaiyun.com/cjq2013/article/details/76421101
SpringMVC配置Fastjson:https://blog.youkuaiyun.com/do_bset_yourself/article/details/51324186

6、分层设计的优缺点

优点:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用
缺点:
1、降低了系统的性能。
2、有时会导致级联的修改。

7、SpringMVC和Spring的常用注解

1.Spring相关注解
1.1)声明bean的注解
@Component 通用注解,用于声明bean。可以配置任意组件。
@Repository 派生注解,与@Component等效,Dao实现类推荐使用的注解,不仅可以声明bean,而且提高可读性。
@Service 派生注解,与@Component等效,Service实现类推荐使用的注解,不仅可以声明bean,而且提高可读性。
@Controller 派生注解,与@Component等效,Controller实现类推荐使用的注解,不仅可以声明bean,而且提高可读性。

1.2)bean注入的相关注解
@Autowired:按类型注入,
@Resource(name=""):按名称注入
@Resource():先按名称注入,如果没有再按照类型。

1.3)配置类相关注解
@Bean 注解在方法上,声明当前方法的返回值为一个bean。
@Configuration 声明当前类为配置类,内部常使用@Bean进行详细配置。取代了xml文件配置。
@ComponentScan 用于对Component进行扫描,可以配置扫描的包路径

1.4)@Value注解:为属性注入简单值

2.SpringMVC相关注解
@RequestMapping 修饰方法,将请求路径映射到Controller对应的处理方法上。

​ 修饰类,给请求路径添加访问前缀
@ResponseBody 将返回值转换成json数据,并响应给浏览器。
@RequestBody 将json格式的请求参数,封装到指定的JavaBean中。
@PathVariable 用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,参数前使用注解@PathVariable(“name”),就可以获取name对应的值。
@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都响应JSON格式数据。

8、从页面传数据到后台的几种方式,以及后台如何接收

1.地址栏参数或普通表单请求,如:age=18&gender=man,SpringMVC方法参数需要使用@RequestParam(“参数名”)获得参数值。
2.提交json类型数据,SpringMVC 方法参数需要使用@RequestBody 将数据封装到java对象中。
3.路径占位符:如 http://localhost:8080/user/findById/1,使用@RequestMapping(“findById/{id}”)匹配路径,使用@PathVariable(“id”)获得对应的参数值。
4.文件上传,修改表单请求为"multipart/form-data"方式,SpringMVC采用MultipartFile参数类型接收数据

9、SpringMVC是怎么处理Http请求的?

问题相当于SpringMVC的执行流程,DispatcherServlet用来处理所有的HTTP请求和请求响应,回答SpringMVC的执行流程即可。

10、@Controller 注解的作用

@Controller是@Component的派生注解,功能就是将被修饰的类添加到spring容器。

用于修饰Controller层的组件,提高可读性。

11、@RequestMapping 注解的作用

修饰方法,将请求路径映射到Controller对应的处理方法上。
修饰类,给请求路径添加访问前缀(二级路径)

12、注解开发怎么返回集合数据

g容器。

用于修饰Controller层的组件,提高可读性。

11、@RequestMapping 注解的作用

修饰方法,将请求路径映射到Controller对应的处理方法上。
修饰类,给请求路径添加访问前缀(二级路径)

12、注解开发怎么返回集合数据

使用 @ResponseBody 注解将Java集合转换json数组,并将结果响应给浏览器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值