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

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

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

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

在MVC 里的分层

  jsp其实就是servlet。jsp会被解析成对应的servlet(Java类),去自己的tomcat安装目录下      \tomcat-7.0.91-x64--2\tomcat-7.0.91--2\work\Catalina\localhost\项目名\org\apache\jsp。去这里可以看到的,项目里的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值