1、JSP页面
1、JSP页面简介
一个JSP页面中可以有普通的HTML标记和JSP规定的JSP标记,以及通过标记符号
<% %>
加入的Java程序片。一个JSP页面按文本文件保存,扩展名是jsp
。
在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面。一个JSP页面可由5种元素组合而成:
(1)普通的HTML标记符。
(2)JSP标记,如指令标记、动作标记。
(3)变量和方法的声明。
(4)Java程序片。
(5)Java表达式。
注:
- 文件的名字必须符合标识符规定;
- 文件名字区大小写。
2、设置Web服务目录
必须将编写好的JSP页面文件保存到Tomcat服务器的某个Web服务目录中,只有这样,远程的用户才可以通过浏览器访问该Tomcat服务器上的JSP页面。
人们常说的一个网站,实际上就是一个Web服务目录。
-
根目录
如果Tomcat服务器的安装目录是E:\apache-tomcat-8.5.50\
,那么Tomcat的Web服务目录的根目录是E:\apache-tomcat-8.5.50\webapps\ROOT
。
用户用http://localhost:8080/test.jsp
访问根目录下的JSP页面test.jsp
。 -
webapps
下的Web服务目录
Tomcat服务器安装目录webapps
下的任何一个子目录都可以作为一个Web服务目录。比如在webapps
下新建子目录ch1
,那么ch1
就成为一个Web服务目录。
将JSP页面文件保存到webapps
下的Web服务目录中,那么应当在浏览器器的地址栏中输入Tomcat服务器的IP地址(或域名)、端口号、Web服务目录和JSP页面的名字。
比如test.jsp
保存到D:\apache-tomcat-8.0.3\webapps\ch1
中,
那么,浏览器的地址栏中输入的内容为:http://localhost:8080/ch1/test.jsp。 -
新建Web服务目录
可以将Tomcat服务器所在计算机的某个目录(非webapps下的子目录)设置成一个Web服务目录,并为该Web服务目录指定虚拟目录,即隐藏Web服务目录的实际位置,用户只能通过虚拟目录访问Web服务目录中的JSP页面。
例如:将test.jsp
保存到任意目录如D:\ch1
中,并让用户分别使用myjsp虚拟目录访问此Web服务目录,那么
- 用记事本打开
conf
文件夹中的主配置文件server.xml
,在</Host>
的前面加入:
<Context path="/myjsp" docBase="D:\ch1" debug="0" reloadable="true" />
- 保存并重新启动 tomcat服务器。
在浏览器的地址栏中输入http://localhost:8080/myjsp/test.jsp就可以正确的访问D:\ch1
中test.jsp
页面。
二、JSP运行原理
当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个java文件,并编译这个java文件生成字节码文件,然后执行字节码文件响应客户的请求。
字节码文件的主要工作是:
- 把JSP页面中普通的HTML标记符号交给客户的浏览器执行显示。
- 负责处理JSP标记,并将有关的处理结果发送到客户的浏览器。
- 执行“
<%
”和“%>
”之间的Java程序片(JSP页面中的动态部分),并把执行结果交给客户的浏览器显示。 - 当多个客户请求一个JSP页面时,Tomcat服务器为每个客户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应客户的请求。这些线程由Tomcat服务器来管理,将CPU的使用权在各个线程之间快速切换,以保证每个线程都有机会执行字节码文件。
JSP的处理过程:
注意:如果对JSP页面进行了修改、保存,那么tomcat服务器会生成新的字节码文件。
实例:
三、JSP与Java Servlet的关系
Java Servlet是Java 语言的一部分,提供了用于服务器编程的API。Java Servlet就是编写在服务器端创建对象的Java类,习惯上称之为Servlet类,Servlet类的对象习惯上称之为一个servlet。
JSP技术就是以Java Servlet为基础,提供了Java Servlet的几乎所有好处,当客户请求一个JSP页面时,Tomcat服务器自动生成Java文件(如first1$jsp.java)、编译Java文件,并用编译得到的字节码文件在服务器端创建一个servlet。但是JSP技术不是Java Servlet技术的全部,它只是Java Servlet技术的一个成功应用。
对于某些Web应用,就可能需要JSP+Javabean+servlet来完成,即需要服务器再创建一些servlet对象,配合JSP页面来完成整个Web应用程序的工作。