从表面上看,jsp页面已经不再需要java类,似乎完全脱离了Java面向对象的特征.事实上,JSP的本质依然是Servlet(一个Java类),每个JSP页面就是一个Servlet实例-JSP页面由系统编译成Servlet,Servlet在负责响应用户请求。具体信息可以在启动Tomcat后随便运行一个Demo,可以再Tomcat的work\Catalina\localhost\jspPrinciple\org\apache\jsp目录下找到如下文件:test_jsp.java和test_jsp.class(Tomcat根据JSP页面生成对应的Servlet的Java文件和class文件)
如以下代码(包含java脚本的一个jsp页面)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>java脚本</title>
</head>
<body>
<%for(int i=0;i<7;i++){ %>
<p>123455</p>
<%} %>
</body>
</html>
页面显示:
页面源码:
可以看到java脚本已经在服务端解析成静态的HTML页面了.
结论:
1、jsp文件必须在jsp服务器内运行。
2、jsp文件必须生成Servlet才能执行。
3、每个jsp页面的第一个访问者速度很慢,因为必须等待jsp变异成Servlet。
4、jsp页面的访问者无需安装任何客户端,甚至不需要刻意运行的java的运行环境,因为jsp页面输送到客户端的是标准HTML页面。