JSP技术
Jsp原理
WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是一个Servlet程序,它负责解释和执行JSP页面。
每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
Tomcat 5.x把为JSP页面创建的Servlet源文件和class类文件放置在“<TOMCAT_HOME>\work\Catalina<主机名><应用程序名>\”目录中,Tomcat将JSP页面翻译成的Servlet的包名为org.apache.jsp.<JSP页面在WEB应用程序内的目录名>
JSP的执行过程
JSP的执行过程主要可以分为以下几点:
客户端发出请求。
Web容器将JSP转译成Servlet源代码。
Web容器将产生的源代码进行编译。
Web容器加载编译后的代码并执行。
把执行结果响应至客户端。
表格阐述上述过程 |
---|
客户端请求jsp文件, web服务器(tomcat等)根据jsp文件生成java文件 |
java文件生成对应的class字节码文件,字节码文件是可以通过classloader加载进虚拟机的 |
web容器加载class字节码文件 |
web容器通过反射等手段建立hello_jsp实例 |
调用对应的jspInit来进行实例初始化 |
调用_jspservice, 响应用户请求 |
调用jspDestroy销毁jsp_hello实例 |
扩展知识:
接口回调
什么是接口回调?
在应用开发中,接口回调机制是一种常用的设计手段,也可以说是一种处理问题的模型,类之间,模块之间,都有一定的调用关系,一般来说,可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法,实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这个调用的过程称为接口的回调。
public class adminProxy implements IAdmin {
//IAdmin为接口,adminImpl为IAdmin的实现类
IAdmin iAdmin = new adminImpl();
//doInsertAdmin此方法在接口IAdmin中声明了并在实现类adminImpl实现了
//如果在idea中选中点击doInsertAdmin进入的是接口中的声明方法实质是执行实现方法,这就是接口回调
public boolean doInsertAdmin (Admin admin)throws Exception{
return iAdmin.doInsertAdmin(admin);
}
}
应用场景
既然接口回调是开发应用中处理问题的核心手段,那我们来看看它到底有什么应用场景,也就是说具体在什么情况下,我们要想到使用接口回调来解决问题,回调一般用于分层间的互相协作,上层将本层函数安装在下层,这个函数就是回调,而下层在一定条件下触发回调,例如,作为一个驱动,是底层,它在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将数据交给上层做进一步的处理,另外我们在封装中也经常用到,还有就是 View 的点击事件其实也是使用回调的原理
接口回调参考博客
接口回调参考博客