引言:
在我们在完成
Java基础的学习之后,往后深入会迎来一个迷茫期。猝不及防的进入spring框架的学习,会感受到Java一个阶梯式的跨越,也使得在没打好基础的同学变得心浮气躁。甚者,在多年开发之后仍然疑惑,今天便来聊聊,这个跨越的过程。
一,Sevlet接口
若是说森林古猿是人类的起源,那么Sevlet可以称得上Sring框架的起源了。Servlet是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
总的说就是,Sevlet的实现类负责客户端请求和业务处理层的中间处理,但它并不直接接收请求,而是通过Sevlet Container(例如tomcat)。Sevlet容器是我们Sevlet的调用方。也是连接传输层和解析数据的工具,具体请考tomcat做了哪些事情,更准确的关系应该是
二,Sevlet的生命周期
所谓的生命周期,其实是一个Sevlet从创建到销毁的过程,通过这个我们可以了解它的工作。
- Servlet 通过调用 init () 方法进行初始化。
- Servlet 调用 service() 方法来处理客户端的请求。
- Servlet 通过调用 destroy() 方法终止(结束)。
- 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.service(req, resp);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
super.destroy();
}
三,Sevlet的作用域
- apllication:
全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。取决于javax.servlet.ServletContext。 - session:
会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。取决于javax.servlet.http.HttpSession。 - request:
请求作用域,就是客户端的一次请求,取决于javax.servlet.SrvletResponse 和 javax.servlet.ServletRequest。
四,Sevlet与MVC
了解Sevlet之后,SpringMvc的核心也迎刃而解。其余的我们要知道只是上层封装。
HandlerMapping对一个sevlet的路径进行解析,找到其处理方法,把一个URL指定到一个Controller上,就像应用系统的web.xml文件。DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean——这个Bean的名字为“HandlerMapping”。Handler我们自己的控制器逻辑,Handler是一个Controller的对象和请求方式的组合的一个Object对象HandleExcutionChains是HandleMapping返回的一个处理执行链,它是对Handle的二次封装,将拦截器关联到一起。然后,在DispatcherServlert中完成了拦截器链对handler的过滤。HandlerAdaper处理方法的调用方,准确的说,提供的一种适配器模式,它充当了处理器(Controller)和处理器映射器(HandlerMapping)之间的适配器。
其余的无关痛痒,不再赘述。