• servlet在mvc里的分层,驻留内存的疑问?


      servlet只是一个称谓,一个说法,是运行在服务器上的程序或者说是一个Java类。

    其实就是满足一个条件的程序就可以叫servlet。就像是满足一定条件的类是javabean类。或者MVC,其实也没有对应的特定实物,这只是一个思想或者说逻辑。

      不过这么说也不对,servlet其实是一个特殊的类,需要继承HTTPservlet,完成特定的功能。

    在MVC 里的分层

      jsp其实就是servlet。jsp会被解析成对应的servlet(Java类),去自己的tomcat安装目录下      omcat-7.0.91-x64--2 omcat-7.0.91--2workCatalinalocalhost项目名orgapachejsp。去这里可以看到的,项目里的jsp对应的Java文件。

      

      jsp其实大多是被认为是MVC里的V,是界面层,servlet被认为是C,是控制层。但是既然jsp也会转换成servlet,岂不是说jsp也是C??

     

      而且一般认为Controller层是MVC里C。但是Controller继承  BaseController  ,不继承HTTPservlet,就不是servlet了吧?。这又如何理解,还是说C层范围比较大?这两个都包含了?

      前端控制器DispatherServlet是servlet,调用Controller,Controller再调用service依次下去。。。

      所以看起来是C层的范围比较大?还是说MVC本身就不是特定的,只是一个分层思想而已。

      这么看,其实很难对实际的代码或者框架去套MVC。毕竟jsp里还可以写逻辑呢。所以说MVC只是一个分层思想,可照着做,也可以不那么分明。

      只需要大致知道,jsp写界面的,然后controller是控制层(SpringMVC里这里是有一个前端控制器DispatherServlet的,其实就是控制层针对请求去调用对应的方法,但是这个知道有这么个东西就行,不需要自己写,只要写好注释,注释方法的调用id/url, 编译器自动解决了),然后就是service层写具体方法,然后是dao层,然后xml文件里写数据库操作。

      看别人代码时,知道大致是这个分层思想就行了,就可以从jsp页面顺着一路找到数据库。其他人的代码不知道,我实习时公司里的代码是这样的结构。

    驻留内存?

      servlet是驻留服务器内存里的

      这句话在其他地方也看到过,不怎么理解

      以jsp为例。jsp第一次访问,被解析成servlet,然后调用init()初始化,然后根据请求调用service()方法。

      然后这个初始化后的servlet就驻留服务器内存,有请求,就创建一个线程调用service(),直到服务器关机或者项目移除?

      大概可以理解为,这个servlet一直处于可执行状态?要么正在被执行,要么就在就绪队列里?整个项目只要被请求过的jsp,全部是这个状态,以保障对客户端请求的快速反应?

      

      

  • 相关阅读:
    这个三月不太美丽
    于宇鸿燕百年好合(帮客户名字作诗,祝新婚快乐)
    桃花好运盼君来
    浊水解渴
    聂晶好美(帮客户名字作诗)
    杨晓芳(帮客户名字作诗)
    有你就好
    重回洛带
    我想和你在一起
    再登长城
  • 原文地址:https://www.cnblogs.com/youwuyi/p/10244372.html
Copyright © 2020-2023  润新知