Nothing lose,nothing gain.

Spring请求分发机制

Spring 框架核心组件简介

注解:

我们在使用 Spring 时接触最多的就是各种注解,包括:
@Component
(把普通pojo实例化到spring容器中,相当于配置文件中的 < bean id = "" class = "" />
@Controller、@Service、@Repository 等,这些都是 Spring 的核心组件。

除此之外,我们还会使用
@RequestMapping

(在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 < servlet > + < servlet-mapping >

@RequestParam

**@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)**

语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)

value:参数名

required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。

defaultValue:默认参数值,如果设置了该值,required = true 将失效,自动为false,如果没有传该参数,就使用默认值

@PathVariable

@PathVariable("xxx")
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“) 

@RequestMapping(value=”user/{id}/{name}”)
请求路径:http://localhost:8080/user/1/james

@RequestBody

主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据)
和RequestParam的区别:
一个请求 -> 只有一个@RequestBody;

一个请求 -> 可以有多个@RequestParam。

框架模型:

Spring 框架处理 HTTP 请求的详细流程

  • 模型 Model:封装了业务数据,主要以 POJO 形式存在。

  • 控制器 Controller:主要负责具体业务流程的调度控制,以及调用业务逻辑服务 Service。 控制器 Controller 处理完 HTTP 请求之后返回 ModelAndView 对象给前置分发器 DispatcherServlet,ModelAndView 中包含了模型 Model 对象和视图 View 名称。

  • 视图 View:负责渲染呈现模型 Model 数据,以及提供表单供用户录入各种业务数据。

  • 视图解析器 ViewResolver:负责根据已知的视图名称获取一个特定视图 View 子类实例对象。

  • 处理器映射 HandlerMapping:主要负责控制器 Controller 的注册和查找,由应用上下文 ApplicationContext 持有。具体实现上它拥有 HashMap<String, Object> 类型的成员属性 handlerMap,其中 key 是 HTTP 请求的 URI 信息,value 可以是一个字符串或者处理请求的 HandlerExecutionChain。如果是 String,则视为 Spring Bean 名称。

  • 服务 Service:主要负责实现具体的业务逻辑。

  • 数据存储对象 Repository:也称为数据访问对象 DAO(Data Access Object),不管采用什么开发框架,大部分应用都需要跟数据库交互,DAO 就是将访问数据库操作做了封装,隔离了 SQL 相关复杂度。

《Spring请求分发机制》


Spring的请求分发机制

浅谈从纯Servlet到Spring的请求分发机制

简单来说就是,在开发的过程中,我们不再把请求路径配置在 web.xml 里面,而是通过注解的方式配置在每一个个处理方法的上方。当 spring 框架启动后,会根据注解把每个处理方法初始化为一个个 MappingHandler(里面包括请求路径和处理逻辑),供 DispatcherServlet 调配使用。

点赞

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注