JSP学习之jsp的结构和处理

在学校时候接触java,学习了servlet,也知道servlet通过println()输出HTML页面,并且能拼接出想要的效果!但这样维护起来就很麻烦,并且结构不清晰,所以每次都是jsp+servlet,一个是业务层,一个是显示层!慢慢的接触了三大框架,用struts2.0来替代了servlet作为业务层,感觉越是到现在接触的东西多了反而越来越迷糊了,只知道一些东西怎么用,但是却没有去了解为什么要这么用,以及他们各自的实现原理,今天正好有空,就看了下jsp的一些原理性的东西,内容来源于w3school菜鸟教程 http://www.w3cschool.cc/jsp/jsp-architecture.html

JSP(Java Server Pager)结构


网络服务器需要一个JSP引擎,也就是一个容器来处理jsp页面!容器用来截获对jsp页面的请求,一般项目使用内嵌JSP容器的Apache来支持JSP开发。

JSP容器和web服务器协作,为JSP的正常运行提供必须的运行环境和其他服务,并且能够正确识别专属于jsp页面的特殊元素,下面是jsp容器和jsp页面在web服务器中所处的位置




JSP的处理

web服务器使用JSP创建网页的步骤:

·像普通页面一样,浏览器发送请求到服务器
·WEB服务器识别出这是一种jsp页面的请求,并将该请求传递给JSP引擎.通过使用URL或者.jsp文件来完成
·jsp引擎从磁盘中读取jsp文件,并转变成servlet,这种转变只是简单的将所有模板文本改用println()语句,并且将所有的jsp元素转变成java代码
·jsp引擎将servlet编译成可执行的类,并将原始请求传递给servlet引擎
·Web服务器的某些组件会调用servlet引擎,然后载入并执行servlet类.在执行过程中,servlet产生HTML格式的输出,并将其内嵌于HTTP response中上交给Web服务器
·Web服务器以静态的HTML形式将HTTP Response返回到浏览器中
·最终,Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样


下面是步骤中的图形结构



一般情况来说,jsp引擎会检查jsp文件对应的servlet是否存在,并检查jsp文件的修改日期是否早与servlet,如果jsp修改日期早于该对应的servlet,那么可以确定jsp文件没有被修改过,该servlet有效.这使得整个流程与其他脚本语言(比如PHP)相比要高效快捷一些。

总的来说jsp网页就是以另一种手段来编写servlet而不需要成为java编程高手,除了解释阶段外,JSP网页几乎可以被当成一个普通的servlet来对待。

猜你喜欢

转载自lijie-insist.iteye.com/blog/2173051