JAVA JSP

Java Server Pages

Java Server Pages,简称Java 服务器页面,和Servlet一样,也是Web动态技术!

JSP与HTML的区别:

1、HTML只能提供静态数据

2、JSP中可以嵌入java代码,提供动态数据

为什么会出现JSP动态页面技术:

如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序代码产生,整个Servlet程序的代码将非常臃肿,编写和维护都将非常困难。

所以JSP是简化Servlet编写的一种技术,它将Java代码和HTML语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写。

总结:JSP其实就是一个模板引擎,可以想下PHP的smarty模板引擎,起到的作用也是这个,对于后端的数据,模板引擎的功能就是将对应的html中特定解析的代码进行替换

JSP的执行原理

WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP模板引擎就是一个Servlet程序,它负责解释和执行JSP页面。

每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。

Tomcat 容器中把为JSP页面创建的Servlet源文件和class类文件放置在<TOMCAT_HOME>\work\Catalina\<主机名>\<应用程序名>\ 目录中,Tomcat将JSP页面翻译成的Servlet的包名为org.apache.jsp.<JSP页面在WEB应用程序内的目录名>

其实JSP引擎就是Web容器(这里指的是Tomcat),并且JSP引擎是一个Servlet程序!

原因?继续看来到C:\Users\dell\.IntelliJIdea2019.3\system\tomcat\Unnamed_javaApp2_3\work\Catalina\localhost\s2\org\apache\jsp,这里拿index_jsp.java文件中的代码举例子分析

首先看如下,index_jsp继承的是一个org.apache.jasper.runtime包中的HttpJspBase类

public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase

继续看HttpJspBase类,如下所示,继承的是HttpServlet,到这里也就可以知道了为什么JSP也是一个Servlet了,本质就是Servlet类

继续看这个index_jsp.java中的内容,其实就是一个HttpServlet的子类,只是该类是专门在网页对jsp文件进行访问的时候解析的一个子类

JSP在tomcat中的解析过程

所以可以大概做个总结对于访问JSP的流程是怎么样的:

1、客户端进行访问了index.jsp

2、tomcat将JSP文件编译成Servlet源代码

3、 Web容器将产生的源代码进行编译class字节码文件

4、 Web容器加载编译后的class字节码并创建对应的实例class

5、然后调用_jspInit方法

6、Web容器将HttpServletRequest和HttpServletResponse两个对象传递过去,JSP通过_jspService方法进行接收HttpServletRequest和HttpServletResponse两个对象进行处理

7、最后_jspDestroy释放资源

posted @ 2020-08-16 16:02  zpchcbd  阅读(112)  评论(0编辑  收藏  举报