框架01 -- SpringMVC

SpringMVC

1. SpringMVC的执行流程和原理

在这里插入图片描述
在这里插入图片描述

  • 1、用户发送出请求到前端控制器DispatcherServlet。
  • 2、DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。
  • 3、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有则生成),再一起返回给DispatcherServlet。
  • 4、DispatcherServlet调用HandlerAdapter(处理器适配器)。
  • 5、HandlerAdapter经过适配调用具体的处理器(Handler/Controller,也叫后端控制器)。
  • 6、Controller执行完成返回ModelAndView对象。
  • 7、HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。
  • 8、DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。
  • 9、ViewReslover解析后返回具体View(视图)。
  • 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
  • 11、DispatcherServlet响应用户。

  • Web 容器启动时会通知 Spring 初始化容器,加载 Bean 的定义信息并初始化所有单例 Bean,然后遍历容器中的 Bean,获取每⼀个 Controller 中的所有方法访问的 URL,将 URL 和对应的 Controller 保存到⼀个 Map 集合中。
  • 所有的请求会转发给 DispatcherServlet前端处理器处理,DispatcherServlet 会请求 HandlerMapping找出容器中被 @Controler 注解修饰的 Bean 以及被 @RequestMapping 修饰的⽅法和类,⽣成Handler 和 HandlerInterceptor ,并以⼀个 HandlerExcutionChain 处理器执行链的形式返回。
  • 之后 DispatcherServlet 使⽤ Handler 找到对应的 HandlerApapter,通过 HandlerApapter 调用 Handler 的方法,将请求参数绑定到方法的形参上,执行方法处理请求并得到 ModelAndView。
  • 最后 DispatcherServlet 根据使用 ViewResolver 视图解析器对得到的 ModelAndView 逻辑视图进行解析得到 View 物理视图,然后对视图渲染,将数据填充到视图中并返回给客户端。

2. SpringMVC的组件

  • DispatcherServlet :SpringMVC 中的前端控制器,是整个流程控制的核⼼,负责接收请求并转发给对应的处理组件。
  • Handler :处理器,完成具体业务逻辑,相当于 Servlet 或 Action。
  • HandlerMapping :完成 URL 到 Controller 映射,DispatcherServlet 通过 HandlerMapping 将不同的请求映射到不同 Handler。
  • HandlerInterceptor :处理器拦截器,是⼀个接⼝,如果需要完成⼀些拦截处理,可以实现该接⼝。
  • HandlerExecutionChain :处理器执行链,包括两部分内容:Handler 和 HandlerInterceptor。
  • HandlerAdapter :处理器适配器,Handler执行业务方法前需要进行一系列操作,包括表单数据验证、数据类型转换、将表单数据封装到JavaBean等,这些操作都由 HandlerAdapter 完成。DispatcherServlet 通过 HandlerAdapter 来执⾏不同的 Handler。
  • ModelAndView :装载模型数据和视图信息,作为 Handler 处理结果返回给 DispatcherServlet。
  • ViewResolver :视图解析器,DispatcherServlet 通过它将逻辑视图解析为物理视图,最终将渲染的结果响应给客户端

3. SpringMVC的相关注解

  • @Controller :在类定义处添加,将类交给IoC容器管理。
  • @RequtestMapping :将URL请求和业务方法映射起来,在类和方法定义上都可以添加该注解。 value 属性指定URL请求的实际地址,是默认值。 method 属性限制请求的方法类型,包括GET、POST、PUT、DELETE等。如果没有使用指定的请求方法请求URL,会报405 Method Not Allowed 错误。 params 属性限制必须提供的参数,如果没有会报错。
  • @RequestBody:注解实现接收http请求的 json 数据,将其转换为java对象
  • @ResponseBody:注解实现将controller方法返回对象,转换为json 对象响应给用户
  • @RequestParam :如果 Controller 方法的形参和 URL 参数名⼀致可以不添加注解,如果不⼀致可以使用该注解绑定。 value 属性表示HTTP请求中的参数名。 required 属性设置参数是否必要,默认是false。 defaultValue 属性指定没有给参数赋值时的默认值。
  • @PathVariable :Spring MVC ⽀持 restful 风格的 URL,通过 @PathVariable 完成请求参数与形参的绑定。

4. @Controller和@RestController

  • 相同点:
    • 都是用来表示Spring某个类是否可以接收HTTP请求
  • 不同点:
    • 使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的 jsp,html 页面,并且跳转到相应页面。若返回 json 等内容到页面,则需要加@ResponseBody注解
    • @RestController 注解,相当于 @Controller + @ResponseBody 两个注解的结合,返回 json 数据不需要在方法前面加 @ResponseBody 注解了,但使用 @RestController 这个注解,就不能返回 jsp,html 页面,视图解析器无法解析 jsp,html 页面
    • 如果只是使用 @RestController 注解 Controller ,则 Controller 中的方法无法返回 jsp 页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
      • 例如:本来应该到success.jsp页面的,则其显示success.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个网上书城项目采用了当前最流行的框架spring-springmvc-mybatis设计。这个项目旨在提供一个方便、快捷的购书平台,用户可以通过该平台浏览、搜索并购买自己喜欢的图书。 在这个项目中,我们使用了Spring作为项目的核心框架,它提供了依赖注入和面向切面编程等功能,使得项目的开发更加简洁和易于维护。Spring MVC作为项目的Web框架,负责将用户的请求路由到对应的Controller,并负责视图的渲染和返回。而MyBatis则是作为持久层框架,将数据库的操作和Java代码的实现解耦,提供了灵活的SQL映射和缓存机制。 在这个网上书城项目中,我们设计了一套完整的功能模块:用户管理模块、图书管理模块、订单管理模块等。用户可以通过注册、登录等功能来进行用户管理,并可以在平台上对图书进行购买、收藏等操作。同时,平台还提供了搜索功能,用户可以根据图书的名称、作者等进行快速查找。 这个项目的设计更加便于扩展和维护,使用了分层架构,将业务逻辑、持久层和展示层进行了有效的分离。同时,也采用了面向接口编程的思想,降低了模块之间的耦合度,提高了代码的复用性和可测试性。 总之,这个网上书城项目基于spring-springmvc-mybatis框架的设计,充分利用了各自的优势,提供了一个高效、稳定和易于维护的购书平台。期望能为用户提供良好的购书体验,并为图书销售行业的发展做出贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值