servlet 生命周期 MVC与三层架构
目录
前言
Servlet相对于MVC模型中的controller,主要就是获取View传递来的参数,加载Module的类与对象,将View参数传入Module,获取返回值后再传回给View。
一、servlet基本介绍
servlet 是server applet (运行在服务端的小程序) 的简称, 软件的目标就是接收请求,处理数据,响应这三个步骤,其中将接收请求和响应请求抽取成Web服务器,处理请求(主要是和数据库curd相关操作)交由servlet处理。在servlet中加载实体类和数据库交互,后期改为三层模型,将比较复杂的数据库操作和原子性操作抽取出来作为service层和DAO层。
-
生命周期(5个部分)
加载 初始化 init() 服务service() 销毁destroy() 卸载
其中 加载/卸载 是servlet容器自动处理的,重点在 服务 阶段。服务 根方法 是service() 方法(抽象方法),一般关注其 doGet(); doPost(); 方法的实现。
-
基础API
ServletContext getServletContext(); 获取servlet上下文对象
String getInitParameter(String name); 在当前Servlet范围内获取名为 name 的参数值
补充 application 对象:
getContextPath() 获取相对路径 getRealPath() 绝对路径.
set/getAttribute() ...
二、MVC & Servlet
1.MVC
Model 模型层 中,有封装逻辑的模型(功能);也有封装数据的模型(实体类),该实体类和表对应,新增数据时可以将多个数据封装到实体类中,在V->C->M中传输;
登录功能的 MVC 示例图如下:
2.三层架构
设计的目标与MVC一致,都是为了解耦,提高代码复用,但二者对项目的理解方式不同。
三层架构由 表示层(UserShowLayer)+业务逻辑层( BusinessLogicLayer/service)+数据访问层 ( DataAceccLayer/DAO)
其中表示层的前台和后台代码相当于V+C层,业务逻辑层和数据访问层相当于将M拆解为可分割与不可分割的数据库操作,既分为调用数据库和直接访问数据库的操作。
总结
servlet是简单的,ServletConfig对象(Servlet配置”)封装了Servlet的一些参数信息。如果需要,我们可以不必自己使用dom4j解析web.xml文件就直接通过它获取参数信息。
HttpServlet的service方法已经替我们完成了复杂的请求方法判断,只需继承HttpServlet并重写doGet()/doPost(), HttpServlet 把不确定的业务代码抽成一个方法,调用它。当子类重写该方法,整个业务代码就活了。这就是模板方法模式。(来自知乎)