java中的动态导入与动态导入
编辑器加载中include指令<%@include file=""%>,这种方式的引入属于静态导入,include行为,这种方式的导入属于动态的导入,这里涉及到一个jsp的原理上的问题。
当我在地址栏中输入一个jsp的地址的时候,点击回车,会提交一个请求给我的web容器(如:tomcat,resin)等,这个容器会把这个以jsp结尾的请求对应到一个jsp引擎(其实也是一个servlet)来处理,这个servlet一定会去先把要回应请求的jsp转义成为servlet(此时 include指令被解释执行),然后,把这个servlet编译为class文件,由虚拟机解释执行,处理用户的请求(此时include行为执行),然后再生成响应。
所以说,静态导入是在转译时发生的,是代码级的导入,这个指令的作用就是让jsp引擎去按照这个指令去做一些事情。而include动作是在请求处理阶段发生的,也就是说,include动作会产生两个servlet,两者之间可以传参数,引入的是处理后的结果。
静态导入适合导入不会变化的资源,例如一个html文件,而动态导入适合导入一个时常变化的资源,如servelt和jsp。
一、静态导入生成的一个servlet,而动态导入生成的多个servlet
二、静态的导入为<%@include file=""%> ,动态导入