1.讲一下MVC
- MVC设计模式: Model-View-Controller简写。
- MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的设计方法。它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
- 控制器Controller:对请求进行处理,负责选择视图;
- 视图View:用户与程序交互的界面;
- 模型Model:用于处理业务
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页面中,并将处理结果响应给浏览器。前端
- SpringMVC执行流程图
3.什么是Spring MVC框架的控制器?
Spring框架的核心控制器(前端控制器)是DispatherServlet
他的核心功能就是分发请求,请求会被分发给对应处理的类handler。java
4.SpringMVC跳转一个页面,怎么返回一个json数据?
使用@ResponseBody注解,将返回json数据。 瑞吃胖特法雷
1.若是在方法使用该注解,当前方法返回json数据。
2.若是在类上使用该注解,当前类中全部的方法,都将返回json数据。springspringmvc默认用jackson对json数据进行转换,但须要添加jackson的包数据库
扩展阅读:
消息转换器原理解析:https://blog.csdn.net/shadabing/article/details/84664402
SpringBoot配置Fastjson:https://blog.csdn.net/cjq2013/article/details/76421101
SpringMVC配置Fastjson:https://blog.csdn.net/do_bset_yourself/article/details/51324186json
5.分层设计的优缺点
优势:
一、开发人员能够只关注整个结构中的其中某一层;
二、能够很容易的用新的实现来替换原有层次的实现;
三、能够下降层与层之间的依赖;
四、有利于标准化;
五、利于各层逻辑的复用
缺点:
一、下降了系统的性能。这是不言而喻的。若是不采用分层式结构,不少业务能够直接造访数据库,以此获取相应的数据,现在却必须经过中间层来完成。
二、有时会致使级联的修改。这种修改尤为体如今自上而下的方向。若是在表示层中须要增长一个功能,为保证其设计符合分层式结构,可能须要在相应的业务逻辑层和数据访问层中都增长相应的代码。设计模式
6. 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注解:为属性注入简单值mvc
2.SpringMVC相关注解
@RequestMapping 修饰方法,将请求路径映射到Controller对应的处理方法上。
修饰类,给请求路径添加访问前缀(二级路径)
@ResponseBody 将返回值转换成json数据,并响应给浏览器。
@RequestBody 将json格式的请求参数,封装到指定的JavaBean中。
@PathVariable 用于接收路径参数,好比@RequestMapping(“/hello/{name}”)申明的路径,参数前使用注解@PathVariable("name"),就能够获取name对应的值。
@RestController 该注解为一个组合注解,至关于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的全部方法都响应JSON格式数据。
7.从页面传数据到后台的几种方式,以及后台如何接收
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参数类型接收数据
8.@Controller 注解的做用
@Controller 是@Component的派生注解,功能就是将被修饰的类添加到spring容器。
字面意思,用于修饰Controller层的组件,提升可读性。
9.@RequestMapping 注解的做用
修饰方法,将请求路径映射到Controller对应的处理方法上。
修饰类,给请求路径添加访问前缀(二级路径)
10.注解开发怎么返回集合数据
使用 @ResponseBody 注解将Java集合转换json数组,并将结果响应给浏览器。