SpringIoC和SpringMVC的快速入门

Spring的优势?

  1. 降低了组件之间的耦合性 ,实现了软件各层之间的解耦
  2. 可以使用容易提供的众多服务,如事务管理,消息服务等
  3. 容器提供单例模式支持
  4. 容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
  5. Spring的IoC机制降低了业务对象替换的复杂性
  6. 容器提供了众多的辅助类,能加快应用的开发
  7. Spring对于主流的应用框架提供了集成支持,如Hibernate,JPA,Mybatis等
  8. Spring属于低侵入式设计,代码的污染极低, 并且独立于各种应用服务器
  9. Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部。

为什么本文不讲AOP?

IoC和AOP是Spring框架的两大特性,IoC和MVC的流程密不可分,可以看作是面向对象编程的实现;而AOP特性则是面向切面编程的体现,也是前者的补充,所以可以拆分开后续讲解。

本文对SpringIoC和SpringMVC的流程进行了简单的讲解,更加详细的过程,欢迎看笔者的代码库,里面几乎每行代码都做了详细注释,一个请求debug跟下来,过程就一目了然了。

快戳我,我们去学习~

什么是SpringIoC?

控制反转IoC(Inversion of Control),是一种设计思想。没有IoC的程序中我们使用面向对象编程对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,而使用控制反转后,将对象的创建转移给第三方。

image

IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IoC。Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从Ioc容器中取出需要的对象。

采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。

SpringIoC的过程?

  1. 基础包扫描。读取配置文件,然后根据配置路径进行全包扫描,,最后将扫描到的类名加上全限定名之后加入到数组集合中

  2. 实例化所有带注解的类。遍历上一步的数组集合,判断类上的注解并实例化该类,以该类的类名为key,实例为value,放入哈希表中

  3. 依赖注入。遍历上一步的哈希表,获取类上所有Fields,遍历Fields,判断Fields上是否为@Autowired类型的注解,如果是的话就把Map中的实例赋值这个field

  4. Url地址和方法映射。遍历第二步的哈希表,如果是Controller实例,获取Methods并遍历,判断方法上是否含有@RequestMapping注解,如果含有,则获取它的值,将@Controller的注解值拼接上@RequestMapping值组成key,当前method作为value,装入hanlerMap中

  5. 请求反射调用。(这一步已经属于MVC范畴)一个url请求过来,获取它的地址,拆分,获取Controller实例,获取Method实例,反射执行Method

什么是SpringMVC?

SpringMVC框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Servlet接口。

为什么要用SpringMVC?

框架的作用一直都是用来简化编程的:
servlet只有doGet和doPost,一个servlet类只能处理一个url-pattern。
SpringMVC类里面可以通过RequestMapping处理很多请求,并且支持Rest风格的请求,如DELETE/PUT等;SpringMVC参数的映射可以直接封装成实体类。

SpringMVC的流程

image

流程图说明:

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

MVC流程中的模块:

  1. DispatcherServlet:前端控制器(不需要程序员开发)
    用户请求到达前端控制器,它相当于MVC模式中的C(Controller),DispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性。
    作用:作为接受请求,相应结果,相当于转发器,中央处理器,减少其他组件之间的耦合度。
  2. HandlerMapping:处理器映射器(不需要程序员开发)
    HandlerMapping负责根据用户请求找到Handler(即:处理器),SpringMVC提供了不同的映射器实现实现不同的映射方式,例如:配置文件方式、实现接口方式、注解方式等。
    作用:根据请求的Url 查找Handler
  3. Handler:处理器(需要程序员开发)
    Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下,Handler对具体的用户请求进行处理。
    由于Handler设计到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
  4. HandlerAdapter:处理器适配器
    通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
    作用:按照特定的规则(HandlerAdapter要求的规则)去执行Handler
  5. ViewResolver:视图解析器(不需要程序员开发)
    ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面的展示给用户。SpringMVC框架提供了很多View视图类型,包括:JSTLView、freemarkerView、pdfView等等。
    作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)。
  6. View视图 (需要程序员开发 jsp)
    View是一个接口,实现类支持不同的View类型(jsp、freemarker等)一般情况下需要通过页面标签或者页面模板技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

哎呀,如果我的名片丢了。微信搜索“全菜工程师小辉”,依然可以找到我

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Spring IOCSpring MVC实现登录功能需要掌握以下知识点: 1. Spring IOC(控制反转):IOC容器可以帮助我们管理对象的创建、配置和依赖注入。在登录功能中,我们需要配置IOC容器来管理用户登录相关的对象,例如User对象、UserDAO对象等。 2. Spring MVC(模型-视图-控制器):Spring MVC是一种基于MVC设计模式的Web框架,用于处理Web请求和响应。在登录功能中,我们需要使用Spring MVC来处理用户的登录请求和返回结果。 3. 数据库操作:登录功能通常需要与数据库进行交互,验证用户的用户名和密码是否正确。因此,需要了解数据库操作相关的知识,例如SQL语句的编写、数据库连接池的配置等。 4. 安全性:登录功能涉及到用户的敏感信息,因此需要考虑安全性问题,例如密码的加密存储、防止SQL注入等。 5. 表单验证:在用户登录时,需要对用户输入的数据进行验证,确保输入的格式正确且完整。可以使用Spring MVC提供的表单验证功能或者其他第三方验证库来实现。 6. 页面跳转和展示:登录成功或失败后,需要进行相应的页面跳转或错误提示。了解如何使用Spring MVC进行页面跳转和展示是必要的。 7. 业务逻辑处理:可能需要根据不同的登录情况进行不同的业务逻辑处理,例如登录成功后进行权限验证、登录失败时进行错误计数等。 综上所述,使用Spring IOCSpring MVC实现登录功能需要对Spring IOCSpring MVC、数据库操作、安全性、表单验证、页面跳转和业务逻辑处理等方面有一定的了解和掌握。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值