JavaWeb三大组件及环境特点
- 在Java语言范畴内,web层框架都是基于JavaWeb三大组件完成的,所以有必要复习一下JavaWeb组件的特点
-
组件 作用 特点 Servlet 服务端小程序,负责接收客户端请求并作出响应 单例对象,默认第一次访问创建,可以通过配置指定服务器启动就创建,Servlet创建完毕会执行初始化init方法,但缺点就是一个业务功能就需要配置一个Servlet Filter 过滤器,负责对客户端请求进行过滤操作 单例对象,服务器启动时就创建,对象创建完毕就执行init方法,对客户端的请求进行过滤,符合要求就放行,不符合要求就直接响应客户端,执行过滤的核心方法doFIlter Listener 监听器,负责对域对象的创建和属性变化进行监听的 根据类型和作用的不同,又可分为监听域对象创建销毁和域对象属性内容变化的,根据监听的域不同,又可分为监听Request域的,监听Session域的,监听ServletContext域的
-
Spring整合web环境的思路
- 在进行Java开发时要遵循三层架构+MVC,Spring操作最核心的就是Spring容器,web层(控制层)需要注入Service(存在于Spring容器中),service需要注入DAO(Mapper),web层使用Servlet技术充当的话,需要在Servlet中获取Spring容器。
web层代码如果都去编写创建AnnotationContext代码(获取Spring容器对象),那么配置类就被重复加载了,Spring容器也重复被创建了,不能每一次想从容器中获取一个Bean都得先创建一次容器,所以我们现在的诉求很简单,如下:- ApplicationContext创建一次,配置类加载一次
- 最好在启动web服务器时,就执行第一步操作,后续直接从容器中获取bean使用即可
- ApplicationContext的引用需要在web层任何位置都可以获取到
- 针对以上诉求我们给出如下的解决思路
- 在ServletContextListener的contextInitialized方法中执行ApplicationContext的创建。或在Servlet的init()方法中执行ApplicationContext的创建,并给Servlet的load-on-startup属性一个数字值,确保服务器启动Servlet就创建。
- 将创建好的ApplicationContext存储到ServletContext域中,这样整个web层的任何位置就都可以获取到了
Spring的web开发-web层MVC框架的思想
- MVC框架思想及其设计思路
- Java程序员在开发过程中一般都是MVC+三层架构,MVC是web开发模式,传统的JavaWeb技术栈实现的MVC如下:
- 原始JavaWeb开发中,Servlet充当Controller的角色,Jsp充当View角色,JavaBean充当模型(model)角色,后期Ajax异步请求流行之后,再加上现在前后端分离开发模式成熟之后,View就被原始Html+Vue替代。原始javaWeb开发中,Servlet充当Controller有很多弊端,显而易见的有如下几个
-
Servlet作为Controller的问题 解决思路 每个业务功能请求都对应一个Servlet 根据业务模块区划分Controller 每个Servlet的业务操作太繁琐 将通用的行为,功能进行抽取封装 Servlet获得Spring容器的组件只能通过客户端代码去获取,不能整合 通过Spring的拓展点,去封装一个框架,从原有的Servlet完全接手过来web层的业务
-
-
负责共有行为的Servlet称为前端控制器,负责业务行为的JavaBean称为控制器Controller
- Java程序员在开发过程中一般都是MVC+三层架构,MVC是web开发模式,传统的JavaWeb技术栈实现的MVC如下: