JAVA:浅谈从基础到框架的跨越

71 阅读3分钟

引言:

在我们在完成Java基础的学习之后,往后深入会迎来一个迷茫期。猝不及防的进入spring框架的学习,会感受到Java一个阶梯式的跨越,也使得在没打好基础的同学变得心浮气躁。甚者,在多年开发之后仍然疑惑,今天便来聊聊,这个跨越的过程。

一,Sevlet接口

若是说森林古猿是人类的起源,那么Sevlet可以称得上Sring框架的起源了。Servlet是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

image.png

总的说就是,Sevlet的实现类负责客户端请求业务处理层的中间处理,但它并不直接接收请求,而是通过Sevlet Container(例如tomcat)。Sevlet容器是我们Sevlet的调用方。也是连接传输层和解析数据的工具,具体请考tomcat做了哪些事情,更准确的关系应该是

image.png

二,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.ServletRequestimage.png

四,Sevlet与MVC

了解Sevlet之后,SpringMvc的核心也迎刃而解。其余的我们要知道只是上层封装

image.png

  • HandlerMapping 对一个sevlet的路径进行解析,找到其处理方法,把一个URL指定到一个Controller上,就像应用系统的web.xml文件。DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean——这个Bean的名字为“HandlerMapping”。
  • Handler 我们自己的控制器逻辑,Handler是一个Controller的对象和请求方式的组合的一个Object对象 HandleExcutionChains是HandleMapping返回的一个处理执行链,它是对Handle的二次封装,将拦截器关联到一起。然后,在DispatcherServlert中完成了拦截器链对handler的过滤。
  • HandlerAdaper 处理方法的调用方,准确的说,提供的一种适配器模式,它充当了处理器(Controller)和处理器映射器(HandlerMapping)之间的适配器。

image.png 其余的无关痛痒,不再赘述。

图片部分来源于网络,侵权必删