- JavaWeb从入门到精通(视频实战版)
- 常倬林等编著
- 1518字
- 2021-03-29 12:00:53
2.2 第一个JSP程序
本节介绍如何在Tomcat服务器上创建和发布JSP程序。这里首先讲解Tomcat的目录结构以及Web应用的目录结构,接着介绍如何将JSP部署到Web应用中,运行第一个JSP程序并测试它。
2.2.1 JSP的工作原理
图2.13 JSP执行过程图
JSP服务器管理JSP页面有两个阶段:转换阶段(translation phase)和执行阶段(execution phase)。当有一个客户请求到来时,JSP服务器检验JSP页面的语法是否正确,将JSP页面转换为Servlet(Servlet就是用Java语言实现的CGI程序,后面章节将详细介绍)源文件,然后调用javac工具类编译Servlet源文件生成class文件,这一阶段是转换阶段。接下来,Servlet容器加载转换后的Servlet类,实例化一个对象处理客户端的请求,在请求处理完成后,响应对象被JSP服务器接收,服务器将HTML格式的响应信息发送到客户端,这一阶段是执行阶段,如图2.13所示。
从整个过程中可以知道,当第一次加载JSP页面时,因为要将JSP文件转换为Servlet类,所以响应速度较慢。当再次请求时,JSP服务器就会直接执行第一次请求时产生的Servlet,而不会再重新转换JSP文件,所以其执行速度和原始的Servlet执行速度几乎就相同了。在JSP执行期间,JSP服务器会检查JSP文件,看是否有更新或修改。如果有更新或修改,JSP服务器会再次编译JSP或Servlet;如果没有更新或修改,就直接执行前面产生的Servlet。这也是JSP相对于Servlet的好处之一。
2.2.2 JSP目录结构
在Tomcat上发布Web应用之前,首先要了解Tomcat的目录结构,参见表2.1。这些目录都是其子目录。Tomcat 6.0与以前的版本相比,对目录结构做了很大改动,合并和简化了一些目录,现在的结构简单而且清晰。
表2.1 Tomcat 6.0目录结构
Web应用具有固定的目录结构,这里举例假定正在开发的Web应用名为jsp_example。首先,应该在/webapps目录下创建这个Web应用的目录结构,参见表2.2。
注意
此处介绍的Web目录结构不仅仅针对Tomcat,在所有的JSP服务器中都适用。
表2.2 Web应用的目录结构
图2.14 Web应用的目录结构
在classes以及lib子目录下,都可以存放Java类文件。在运行过程中,Tomcat的装载器会先装载classes目录下的类,再装载lib目录下的类。因此,如果两个目录下存在同名的类,classes目录下的类具有优先权。一般情况下lib中只应存放外部引用的类,如JDBC驱动程序的JAR文件和后文中会提到的开源项目的包,而用户自己编写的类文件应该放在classes目录下。用一个图来说明更加清楚,如图2.14所示。
注意
WEB-INF目录对用户来说是隐藏的,用户不能通过浏览器直接访问这个目录中的文件。
2.2.3 解读web.xml
Java Web应用通过一个基于XML的发布描述符文件来配置其发布信息,这个文件名为web.xml,它存放于WEB-INF子目录下。在web.xml文件中可主要包含如下配置信息:
1)Servlet的定义。
2)Servlet的初始化参数。
3)Servlet以及JSP的映射。
4)Filter的定义。
5)安全域配置参数。
6)welcome文件清单。
7)资源引用。
8)环境变量的定义。
创建一个默认的web.xml文件,并把这个文件放到WEB-INF目录中,该文件的内容如实例2-1所示。
【实例2-1】默认web.xml页面
01 <?xml version="1.0" encoding="UTF-8"?> 02 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 03 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 04 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 05 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 06 <!--空web配置, 只包含欢迎页面--> 07 <welcome-file-list> 08 <welcome-file>index.jsp</welcome-file> 09 </welcome-file-list> 10 </web-app>
【代码剖析】上面代码中的第7行标签<welcome-file-list>为文件清单,这里只包含欢迎页面。
2.2.4 编写第一个JSP
创建两个JSP文件,其中一个是login.jsp,如实例2-2,它显示登录页面,要求输入用户名和口令。这个页面链接到另一个JSP文件welcome.jsp,如实例2-3,显示欢迎页面。JSP的语法将在以后的章节详细讨论,本节侧重于介绍JSP的发布过程。这两个JSP文件都应放在jsp_example自己的目录下。
【实例2-2】login.jsp示例
01 <html> 02 <head> 03 <title>第一个JSP</title> 04 </head> 05 <body> 06 <form name="loginForm" method="post" action="welcome.jsp"> 07 <table> 08 <tr> 09 <td> 10 用户名: 11 </td> 12 <td> <!--用户名输入框--> 13 <input type="text" name="username"> 14 </td> 15 </tr> 16 <tr> 17 <td> 18 密码: 19 </td> 20 <td> <!--密码输入框--> 21 <input type="口令" name="password"> 22 </td> 23 </tr> 24 <tr> 25 <td> <!--提交按钮--> 26 <input type="Submit" name="Submit" value="确定"> 27 </td> 28 </tr> 29 </table> 30 </form> 31 </body> 32 </html>
【代码剖析】上面代码中第13行创建了一个文本框类型input标签,在第21行创建了一个密码类型input标签,最后又通过第26行创建了一个“确定”按钮。
【实例2-3】welcome.jsp示例
01 <html> 02 <head> 03 <title>欢迎</title> 04 </head> 05 <body> 06 欢迎您: 07 <%=request.getParameter("username")%> <!--显示相应的信息--> 08 </body> 09 </html>
【代码剖析】上面代码中第7行通过类request的getParameter()方法获取参数username的值。
2.2.5 发布与测试
按表2.2中Web应用的目录结构,在Tomcat的webapps目录下创建目录jsp_example,将写好的两个jsp文件和web.xml文件放入指定目录,重新启动Tomcat。访问JSP可以看到结果,如图2.15和图2.16所示。
图2.15 登录界面
图2.16 欢迎页面