什么是JSP?
JSP---Java Server Pages 拥有servlet的特性与优点(本身就是一个servlet) 直接在HTML中内嵌JSP代码 JSP程序由JSP Engine先将它转换成Servlet代码,接着将它编译成类文件载入执行 只有当客户端第一次请求JSP时,才需要将其转换、编译 优点: 优良的性能 优于CGI,PHP,ASP 平台无关性 操作系统无关,Web服务器无关 可扩展性 tag的扩展机制,简化页面开发JSP解析过程:
1 :JSP先把文件解析成java文件 2 :然后再通过javac把java文件编译成类文件 3 :在通过JVM虚拟机把类文件转换成html格式; 4 :把html效果显示在客户端上.加载过程分为动态加载和静态加载:
jsp:include 是动态加载,在jsp编译的时候,加载页面和被加载页面会被解析两个java,servlet文件 javac编译器会编译两次,生成两个class文件, 然后在jvm运行的过程中,这个时候包含文件才去调用被包含的class文件 这就是动态包含 <%@ include file="_02_date.jsp"%> 是静态加载: <!DOCTYPE HTML><html lang="en"><head> <meta charset="UTF-8"> <title>jsp:include</title></head><body bgcolor="white"> <font color="red"> <%@ include file="_02_date.jsp"%> <%= request + "--1--" + "<br>"%> <%/*注意jsp标签需要自己关闭,不要忘了关闭的横线*/%> <jsp:include page="_02_date.jsp" flush="true" /> <%= request + "--1--"+ "<br />"%> <%/* */%> <%/* * 不同的页面,不同的request之间可以传值 * 传值别忘了写flush,这里传值也是IO流,需要flush * 然后把值传递到第二个页面输出 */%> <jsp:include page="_02_date.jsp?username='123'" flush="true" /></font>
</body></html>上面例子可以看出,因为生成是两个不同的Servlet文件-->不同的class--->所以每个Servlet都有自己的request对象,不是同一个.但是第一个是生成一个Servlet所以是同一个request