Step1.情景概要
Hello,小伙伴们,好久不见,之前跟大家分享了三层架构与MVC思想,相信大家对于这两块内容有了相对清晰的个人认识了,既然我们讲到了MVC,这里我们接着这块内容继续往下深入,今天我们来看看MVC 中的V-VIEW 即我们所说的视图层。
Step2.视图技术
对于我们WEB开发人员来说,视图的概念应该都不会很陌生了,我们在浏览网页时见到的各种形式的页面内容,背后都离不开我们所用的视图技术,对于JAVA Web 开发人员来讲,页面展示实际上就是模板+数据=页面内容,所有的web页面基本离不开这两点,而我们常用的视图表现层技术不考虑这种H5页面的话,目前市面上用的比较多的基本上是JSP、Freemarker,或者Velocity,对于这三种常见的视图表现层技术,这里先来说说JSP。
Step3.JSP概念与应用场景
JSP(java server page ),故名思议,即在服务器端执行的页面,其实质为一个简化的servlet 它是在传统的网页HTML文件中插入Java程序段和JSP标记,从而形成JSP文件,后缀名为(*.jsp)。说了这么多实际上就是在HTML基础上加入JAVA 代码,运行在Tomcat(servlet)容器中的页面,最终项目发布后通过浏览器访问该页面后在浏览器输出的内容就是html ,是不是很简单呢。
这里对于JSP ,概念中提到JSP 实质上就是Servlet ,只是JSP的出现解决了Servlet 的一个痛点问题,就是Servlet 页面内容输出是相对麻烦,特别是涉及到复杂的页面样式控制与JS 时,这时Servlet 就相对变的心有余而力不足了哦,这时JSP的出现,解决了Serlvet 的这一痛点问题,即:JSP 作为视图展示层显示页面内容更加方便!那说到这,JSP既然是Servlet ,那JSP 究竟是怎么执行的呢?
Step4.JSP执行过程剖析
这里在分析JSP 原理前,先来看下Serlvet 内部执行原理
- 客户端通过HTTP提出请求.
- Web服务器接收该请求并将其发给servlet。如果这个servlet尚未被加载,Web服务器将把它加载到Java虚拟机并且执行它。
- servlet将接收该HTTP请求并执行某种处理。
- servlet将向Web服务器返回应答。
- Web服务器将从servlet收到的应答发送给客户端。
运行简图如下:
看到这,大家应该对Servlet 执行过程一目了然了吧,然后我们继续往下看JSP 的运行原理
服务器具体是如何做到的?
- 用户通过浏览器发送请求
- tomcat服务器收到*.jsp请求,会到org.apache.jasper.servlet.JspServlet处理,(tomcat web.xml) 里有对应处理jsp 请求具体配置
test01.jsp页面未被访问时,查看tomcat 下work 目录 截图如下:
当JSP页面第一次被请求时,JSP引擎会将JSP原始文件转换成Servlet源代码,然后调用Java编译器,编译成Servlet,并在Servlet引擎中执行。当再次有请求的时候,JSP引擎会见差异编译好的JSP是否比原来的JSP原始文件要新,如果是,运行Servlet;如果不是,表示文件已经更新的了,就会从新执行转换和编译的过程。
test01.jsp访问成功后进入文件再次查看
查看目录下具体生成的文件
简要查看生成的 test01_jsp.java 文件内容
查看tomcat 源码,查看HttpJspbase到底是什么???
至此,可以发现 HttpJspBase 就是继承了HttpServlet!!!
所以,到现在为止,我们可以这样理解,可以把jsp 看做一个servlet来对待!!!
既然jsp 就是一个servlet ,为何还要使用jsp?
我们在使用servlet 时,大家应该能够体会到在使用servlet 向浏览器输出页面内容时,并没有那么容易,同时当servlet 中涉及到的逻辑很复杂的时候,既要处理业务逻辑,又要控制页面数据的显示形式,这时候仅仅使用servlet来完成这些功能理论上可以实现,但对于项目的后期维护来说,工程量可能就是巨大的,于是业界就催生出了jsp(当然还有其他的技术 .net,php等)的技术,通过使用jsp技术,我们可以结合servlet ,将要显示的数据通过jsp 来进行展现,总结来说就是:
Servlet:
优点:逻辑处理方便
缺点:页面表现麻烦
Jsp:
优点:页面表现方便
缺点:逻辑处理麻烦
所以要互补使用.一般项目采用:jsp+servlet+javabean 开发方式进行项目开发哦
好了,说到这,相信大家对JSP 视图展示层技术有了很清晰的认识,那另外的Velocity同样作为视图层技术又是怎么实现与使用的呢,哈哈,且听下次与大家分享。