目录
7.1 Spring MVC简介
7.1.1 Servlet概述
Servlet运行于支持Java的应用服务中
Servlet中的每个请求由一个轻量级的Java线程处理,而Servlet程序运行在JVM进程中
Web Server服务器:处理和响应客户端的HTTP请求
Web Application应用程序:服务器的Java Web应用,他是Servlet的集合
Web Container容器(Servlet容器、Servlet引擎):它是与Servlet交互的Web服务器的一部分
7.1.2 MVC简介
MVC是一种解耦软件组件、提高代码复用性的框架模式,有三层:模型(model)-视图(view)-控制器(controller)
1.Models(模型层):处理核心业务(数据逻辑),模型对象负责在数据库中存取数据
2.Views(视图层):展示模型层的数据
3.Controllers(控制器层):处理用户的响应和请求;从视图读取数据,控制用户输入,并向模型发送数据
7.1.4 Spring MVC框架
Spring MVC使用“请求-响应”模型,采用了约定优于配置的契约编程风格
Spring MVC处理一个HTTP请求的详细过程:
1)用户发送请求至前端控制器DispatcherServlet,DispatcherServlet收到请求调用HandlerMapping处理映射器
2)处理器映射器根据请求URL找到具体的Controller处理器返回给DispatcherServlet
3)DispatcherServlet通过HandlerAdapter处理器适配器调用Controller处理请求
4)执行Controller处理器方法
5)返回Controller执行结果ModelAndView到HandlerAdapter处理器适配器
6)HandlerAdapter将ModelAndView返回给DispatcherServlet
7)DispatcherServlet将ModelAndView的ViewName传给ViewReslover视图解析器
8)ViewReslover解析后将具体的View返回给DispatcherServlet
9)DispatcherServlet传递Model数据至View,对View进行渲染视图(模型数据填充至视图)
10)DispatcherServlet响应用户
7.2 Spring MVC常用注解
@Controller:定义一个控制器类,负责注册一个控制器Bean到Spring上下文中
@RequestMapping:处理请求地址映射的注解,可用于类和方法上
1)类上:所有请求的方法都是以改地址作为父路径
2)方法上:请求的实际地址
@RequestBody:读取Request请求的body部分数据,使用HandlerAdapter配置的HTTPMessageConverter进行解析
@ResponseBody:将Controller方法返回的对象通过HTTPMessageConverter转换为指定格式写入Response对象的body区(返回数据不是HTML页面时使用)
@ModelAttribute:可作用于方法和参数
1)作用于方法:处理@RequestMapping之前为请求绑定需要从后台查询的model
2)作用于参数:把相应名称的值绑定到注解的参数Bean上
@SessionAttribute:将值放到session作用域中,作用在class上
@RequestParam:标注处理方法入参,将请求参数传递给请求方法
@PathVariable:绑定URL路径占位符到入参
@ExceptionHandler:作用对象为方法,出现异常是执行该方法
@ControllerAdvice:使一个Controller成为全局的异常处理类,类中哟领@ExceptionHandler注解的方法可处理所有Controller发生的异常
@RequestHeader:把Request请求的header部分的值绑定到方法的参数上
@CookieValue:把Request请求header中cookie的值绑定到方法的参数上