一 JSP 基本原理
- 概念
JSP的本质是Servlet,当用户向指定Servlet发送请求时,Servlet利用输出流动态生成HTML页面,包括每个静态的HTML标签和所有在HTML页面中出现的内容,即JSP页面的内容有两部分:标准的HTML标签、静态的页面内容,这些内容与静态的HTML一致和受java程序控制的内容,由java脚本动态加载。 - 原理
事实上,JSP是Servlet的一种特殊形式(一个特殊的java类),每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。即,JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下。
如\webapps\myapp\test.jsp
<!-- 这是一jsp页面-->
<%@ page contentType="text/html;charset=GBK" language="java" errorPage="" %>
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JSP页面</title>
</head>
<body>
<!-- 下面是java脚本-->
<%
for(int i =0; i<7;i++){
out.println("<font size ='" + i + "'>");
%>
这是个验证页面
<br/>
<%}%>
</body>
</html>
当启动Tomcat后,可以在Tomcat的work\Catalina\localhost\myapp\org\apache\jsp目录下找到如下文件:test_jsp.java和test_jsp.class。这两个文件都是Tomcat生成的,Tomcat根据JSP页面生成对应Servlet的Java文件及class文件
/*
* Generated by the Jasper component of Apache Tomcat
* Version: Apache Tomcat/8.0.8
* Generated at: 2014-05-23 16:56:11 UTC
* Note: The last modified time of this file was set to
* the last modified time of the source file after
* generation to assist with modification tracking.
*/
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
private static final javax.servlet.jsp.JspFactory _jspxFactory =
javax.servlet.jsp.JspFactory.getDefaultFactory();</