安装和测试Tomcat
安装Tomcat后,就可以得到下列目录结构:
Jakarta-tomcat-
bin 可执行文件
common 内部类和web程序共享的类
classes 共享的Java类
endorsed 已注释的Java类
lib 共享Jar文件
conf 配置文件
logs 服务器的记录文件
server Tomcat内部的类
shared 共享的文件
temp 临时的文件
webapps web程序的目录
work 临时文件的临时目录
对web开发人员而言,最中要的目录是webapps,浏览器要读取的文件都存放在这里。我们首要的目标是让Tomcat能运作,在运行Tomcat之前,必须先设定环境变量:
JAVA_HOME――设为java的安装目录,也就是java bin目录的上层目录。
CATALINA_HOME――设为Tomcat的安装目录,也就是Tomcat bin目录的上层目录。
运行Tomcat。现在,Tomcat在运行了,打开浏览器,连接到http://localhost:8080,应该会打开Tomcat的欢迎页面。这个URL里头的“localhost”就是指本地的网页服务器(对应到IP地址127.0.0.1),而8080是端口号,网页服务器通常是用80端口,但是Tomcat为类避免和其他服务器冲突,于是改用8080。
建立新的Web服务器目录:
可以将Tomcat服务器所在计算机的某个目录设置为一个Web服务目录,并为该Web服务目录指定虚拟目录,即隐藏Web服务目录的实际位置,用户只能通过虚拟目录访问Web服务目录中的Jsp页面。通过修改Tomcat服务器安装目录下conf目录中的server.xml文件来设置新的Web服务器目录。假设要将D:/MyJsp/star和C:/sun作为Web服务目录,并让用户分别使用hello和moon虚拟目录访问web服务目录D:/MyJsp/star和C:/sun下的Jsp页面,应先应用记事本打开文件夹Tomcat/conf中的主配置文件server.xml,找到出现</HOST>的部分(server.xml文件尾部),然后在</HOST>的前面加入如下内容:
<Context path = “/hello” docbase = “D:/MyJsp/star” debug = “0” reloadable = “true”/>
<Context path = “/moon” docbase = “C:/sun” debug = “0” reloadable = “true”/>
注:xm文件区分大小写的。
主配置文件server.xml修改后,必须重新启动Tomcat服务器。这样,用户就可以将JSP页面存放到目录D:/MyJsp/star或C:/sun中,可以通过虚拟目录hello或moon访问JSP页面,如将A.jsp放在目录D:/MyJsp/star或C:/sun中,应在浏览器地址栏中输入http://127.0.0.1:8080/hello/A.jsp或http://127.0.0.1:8080/moon/A.jsp。
设置端口号:
8080是Tomcat服务器的默认端口号。我们可以通过修改Tomcat服务器的conf目录下的主配置文件server.xml来更改端口号。用记事本代开server.xml文件找到如下部分:
<Connector port = “8080” maxHttpHeaderSize = “8192” maxThreads = “150” minSpareThreads = “25” maxSpareThreads = “75” enableLookups = “false” redirectPort = “8443” acceptCount = “100” connectionTimeout = “20000” disableUploadTimeout = “true”>
将其中的port=”8080”更改为新的端口号既可,如改为”9080”等。如果Tomcat服务器所在的计算机没有启动其他占有端口80的网络程序,也可以将Tomcat服务器端口号设置为80,这样用户在访问JSP页面时可以省略端口号,”http://127.0.0.1/first.jsp”。(这样写是因为我们是把firt.jsp非那根在ROOT根目录中,所以没有顶级目录,直接就是页面文件)
开发JSP:
以eclipse来编写不需要编译的JSP文件按,是最简单的。这些文件可以把java程序包在“小脚本元素”(Scriptlet element)、“声明元素”(declaration element)以及“表达式元素”(expression element)。最常用的是小脚本元素,可以把好几行的java程序包起来。小脚本元素的开头和结尾是“<%”和“%>”这两种标记符号,例如下例。你可以用out对象的println()方法把文字送回给浏览器。示例代码myJsp.jsp:
- <html>
- <head>
- <title>A Web Page</title>
- </head>
- <body>
- <h1>Working With JSP</h1>
- <%out.println("Using JSP");%>
- </body>
- </html>
要怎么安装myJsp.jsp,Tomcat才能将之提供给客户端的浏览器?示例:我们在Tomcat的webapps目录下另建一个名为myJspc的子目录,而这个新的myJspc目录也必须有一个名为WEB-INF的子目录,其中再含classes和lib这两个子目录:
Webapps
myJspc 存放范例的文件夹
WEB-INF 有关web应用程序的信息
classes web应用程序是用的java类
lib web应用程序是用的jar文件
此时,WEB-INF、classes、lib目录都是空的,但是一定要存在,不然Tomcat不会把myJspc目录视为存储网页文件的有效目录。创建这些目录之后,将myJsp.jsp存放到myJspc目录下。然后,如果Tomcat正在运行,先关掉,在重新启动。
要察看Jsp文件,可以让浏览器连接到http://localhost:8080/myJspc/myJsp.jsp。Tomcat会把Jsp的java程序代码转译成Servlet的形式,编译后,再运行它,然后,你就能看到网页展示的结果。
开发Servlet:
Jsp服务器实际上是建立在Java Servlet的基础上,运行前先转译成Servlet。Servlet是纯粹的java程序,下面是一个Servlet的范例myServlet.java:
- package org.eclipsebook.ch09;
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class myServlet extends HttpServlet{
- private static final long serialVersionUID = 1L;
- public void doGet(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException
- {
- response.setContentType("text/html");
- PrintWriter out = response.getWriter();
- out.println("<HTML>");
- out.println("<HEAD>");
- out.println("<TITLE>");
- out.println("A Servlet Example");
- out.println("</TITLE>");
- out.println("</HEAD>");
- out.println("<BODY>");
- out.println("<H1>");
- out.println("Working With Servlets");
- out.println("</H1>");
- out.println("Using servlets");
- out.println("</BODY>");
- out.println("</HTML>");
- }
- public static class test{
- public static void main(String[] args){
- System.out.println("inner class test.");
- }
- }
- }
像以上的Servlet都需要基于javax.servlet.http.HttpServlet类,而且只是改写doGet()方法。这个doGet()方法会 一个请求对象(request object),其中的数据包括了浏览器的种类及来自任何HTML控件的数据。另外还有一个响应对象(response object),可以让你把想响应的结果返回给客户端浏览器。在此例中,我们要以response对象的getWriter()方法来取得printWriter对象,以之来响应浏览器,而且以PrinterWriter对象的println()方法把HTML送回给浏览器。接下来的步骤是:首先,创建一个myServlet项目,再把上列程序输入该项目中,保存成myServlet.java,包名是org.eclipsebook.servlet。为类满足import语句所导入的内容,我们要把Tomcat随附的servlet.jar加入到编译路径中。你可以在jakarta-tomcat/common/lib/servlet.jar找到servlet.jar。将其加进编译路径中。
Webapps
myServlet
WEB-INF
classes
org
eclipsebook
servlet Servlet 程序所在的目录
lib
为了让Tomcat知道这个新类是Servlet,你要用一个web.xml文件,保存该web程序的配置文件。在web.xml文件中我们用两个xml元素――<servlet>和<servlet-mapping>把URL myServlet连接到此Servlet实际的java程序。web.xml内容如下:
<?xml version="1.0" encoding = "ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Example Application</display-name>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>org.eclipsebook.servlet.myServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>org.eclipsebook.servlet.myServlet</url-pattern>
</servlet-mapping>
</web-app>
输入上述xml文件的程序代码,保存web.xml,将之复制到WEB-INF目录下。最后,关闭Tomcat,重新启动它。http://localhost:8080/myServlet/org.eclipsebook.servlet.myServlet让浏览器连接到。