教你如何安装配置tomcat

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以正式版本5.5.20为例。

下载二进制发行版(Binary Distributions)。

选Core: Windows Service Installer下载。

Windows 版的版本为:apache-tomcat-5.5.20.exe。

所使用的Tomcat服务器为5.5.20版,使用的HTTP端口为8080。

HTML页面测试
创建一个html文件Hello.html。

<!DOTTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML>
<HEAD>
<TITLE>HTML 测试</TITLE>
</HEAD>
<BODY BGCOLOR="#FDF5E6">
<H1>HTML 测试</H1>
欢迎。

</BODY>
import javax.servlet.*;
import javax.servlet.http.*;
/** Simple servlet used to test server.
* <P>
* Taken from Core Servlets and JavaServer Pages 2nd Edition
* from Prentice Hall and Sun Microsystems Press,
* /.
* &copy; 2003 Marty Hall; may be freely used or adapted.
*/
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String docType =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n";
out.println(docType +
"<HTML>\n" +
"<HEAD><TITLE>Hello</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1>欢迎!</H1>\n" +
"</BODY></HTML>");
}
}
●将HelloServlet.java保存到文件夹classes中。

●将HelloServlet.java编译为HelloServlet.class文件。

D:\Program Files\Apache Software Foundation\Tomcat
5.5\webapps\myJSPServlet\WEB-INF\classes>javac HelloServlet.java HelloServlet.java:2: 软件包 javax.servlet 不存在
import javax.servlet.*;
^
HelloServlet.java:3: 软件包 javax.servlet.http 不存在
import javax.servlet.http.*;
^
HelloServlet.java:13: 找不到符号
符号:类 HttpServlet
public class HelloServlet extends HttpServlet {
^
HelloServlet.java:14: 找不到符号
符号:类 HttpServletRequest
位置:类 HelloServlet
public void doGet(HttpServletRequest request,
^
HelloServlet.java:15: 找不到符号
符号:类 HttpServletResponse
位置:类 HelloServlet
HttpServletResponse response)
^
HelloServlet.java:16: 找不到符号
符号:类 ServletException
位置:类 HelloServlet
throws ServletException, IOException {
^
6 错误
出现错误!由于servlet和JSP不是Java平台Java SE(标准版)的一部分,而是Java EE (企业版)的一部分,因此,必须告知编译器servlet的位置。

●解决“软件包javax.servlet 不存在”错误的方法:
1.搜索servlet-api.jar
所在文件夹:D:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib
2.将环境变量CLASSPATH的值设置为:
.;D:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar
3.重新编译:javac HelloServlet.java,编译成功。

另外,你也可以使用下面的命令改变环境变量CLASSPATH。

set CLASSPATH=.; D:\Program Files\Apache Software Foundation\Tomcat
5.5\common\lib\servlet-api.jar
但这种改变只是在系统关闭前有效,下次启动系统后还要在发布该命令,当然你也可以将该命令写到自动批处理文件autoexec.abt中。

●在文件夹WEB-INF中创建一个web.xml文件
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="/xml/ns/j2ee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/j2ee
/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<!-- JSPC servlet mappings start -->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/helloservlet</url-pattern>
</servlet-mapping>
<!-- JSPC servlet mappings end -->
</web-app>
上面的定义:servlet-class > servlet-name > /helloservlet,把HelloServlet.class转换位url地址。

注意:因为服务器只在启动时读取web.xml文件,所以每次修改完web.xml文件后要重新启动服务器。

●在浏览器的地址栏输入http://localhost:8080/myJSPServlet/helloservlet运行。

运行正常,但中文显示乱码。

●解决中文显示乱码的方法
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
双击右下角的
response.setContentType("text/html; charset=GBK");
PrintWriter out = response.getWriter();
String docType =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n";
out.println(docType +
"<HTML>\n" +
"<HEAD><TITLE>Hello 欢迎 (2)</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1>Hello 欢迎 (2)</H1>\n" +
"</BODY></HTML>");
}
}
●编译HelloServlet2.java
>cd coreservlets
>javac HelloServlet2.java
●在web.xml文件中添加
<servlet>
<servlet-name>HelloServlet2</servlet-name>
<servlet-class>coreservlets.HelloServlet2</servlet-class> </servlet>
<servlet-mapping>
<servlet-name>HelloServlet2</servlet-name>
<url-pattern>/helloservlet2</url-pattern>
</servlet-mapping>
●执行http://localhost:8080/myJSPServlet/helloservlet2
Servlet调用Java Bean测试
●在coreservlets中创建一个Java Bean文件ServletUtilities.java package coreservlets;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletUtilities {
public static final String DOCTYPE =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">";
public static String headWithTitle(String title) {
return(DOCTYPE + "\n" +
"<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE></HEAD>\n");
}
public static int getIntParameter(HttpServletRequest request,
String paramName,
int defaultValue) {
String paramString = request.getParameter(paramName);
int paramValue;
try {
paramValue = Integer.parseInt(paramString);
} catch(NumberFormatException nfe) { // null or bad format
paramValue = defaultValue;
}
return(paramValue);
}
public static double getDoubleParameter
(HttpServletRequest request,
String paramName,
double defaultValue) {
String paramString = request.getParameter(paramName);
double paramValue;
try {
paramValue = Double.parseDouble(paramString);
} catch(NumberFormatException nfe) { // null or bad format paramValue = defaultValue;
}
return(paramValue);
}
public static String filter(String input) {
if (!hasSpecialChars(input)) {
return(input);
}
StringBuffer filtered = new StringBuffer(input.length()); char c;
for(int i=0; i<input.length(); i++) {
c = input.charAt(i);
switch(c) {
case '<': filtered.append("&lt;"); break;
case '>': filtered.append("&gt;"); break;
case '"': filtered.append("&quot;"); break;
case '&': filtered.append("&amp;"); break;
default: filtered.append(c);
}
}
return(filtered.toString());
}
private static boolean hasSpecialChars(String input) {
boolean flag = false;
if ((input != null) && (input.length() > 0)) {
char c;
for(int i=0; i<input.length(); i++) {
c = input.charAt(i);
switch(c) {
case '<': flag = true; break;
case '>': flag = true; break;
case '"': flag = true; break;
case '&': flag = true; break;
}
}
}
return(flag);
}
}
●编译ServletUtilities.java
>javac ServletUtilities.java
●在coreservlets中创建一个Servlet文件HelloServlet3.java package coreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** Simple servlet for testing the use of packages
* and utilities from the same package.
* <P>
* Taken from Core Servlets and JavaServer Pages 2nd Edition
* from Prentice Hall and Sun Microsystems Press,
* /.
* &copy; 2003 Marty Hall; may be freely used or adapted.
*/
public class HelloServlet3 extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Hello (3)";
out.println(ServletUtilities.headWithTitle(title) +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1>" + title + "</H1>\n" +
"</BODY></HTML>");
}
}
●编译HelloServlet3.java
>javac HelloServlet3.java
出现编译错误:
HelloServlet3.java:23: 找不到符号
符号:变量 ServletUtilities
位置:类 coreservlets.HelloServlet3
out.println(ServletUtilities.headWithTitle(title) +
^
1 错误
这是因为包中的servlet使用了包中其他的类,在编译时会得到“Unresolved symbol”错误消息。

简单的解决方法,退后一层目录再编译。

>cd..
>javac coreservlets\HelloServlet3.java
解决该问题的另一个办法是将开发目录:D:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\myJSPServlet\WEB-INF\classes\coreservlets加入到CLASSPATH中。

●在web.xml文件中添加
<servlet>
<servlet-name>HelloServlet3</servlet-name>
<servlet-class>coreservlets.HelloServlet3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet3</servlet-name>
<url-pattern>/helloservlet3</url-pattern>
</servlet-mapping>
●执行http://localhost:8080/myJSPServlet/helloservlet3
WAR打包文件测试
使用打包的单个大文件比许多小文件更易于管理。

WAR文件实际上是以.war为扩展名的JAR
文件,我们使用通常的jar命令来创建它。

当前位置D:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps。

当前目录下所有文件打包
将整个myJSPServlet打包到WAR文件testApp中。

>cd myJSPServlet
>jar cvf myHello.war *
打包过程:
标明清单(manifest)
增加:aaa.txt(读入= 187) (写出= 172)(压缩了 8%)
增加:Hello.html(读入= 187) (写出= 137)(压缩了 26%)
增加:Hello.jsp(读入= 216) (写出= 170)(压缩了 21%)
增加:WEB-INF/(读入= 0) (写出= 0)(存储了 0%)
增加:WEB-INF/classes/(读入= 0) (写出= 0)(存储了 0%)
增加:WEB-INF/classes/coreservlets/(读入= 0) (写出= 0)(存储了 0%)
增加:WEB-INF/classes/coreservlets/HelloServlet2.class(读入= 1198) (写出= 700)(
压缩了 41%)
增加:WEB-INF/classes/coreservlets/HelloServlet2.java(读入= 1059) (写出= 565)(压
缩了 46%)
增加:WEB-INF/classes/coreservlets/HelloServlet3.class(读入= 1065) (写出= 592)(
压缩了 44%)
增加:WEB-INF/classes/coreservlets/HelloServlet3.java(读入= 908) (写出= 489)(压
缩了 46%)
增加:WEB-INF/classes/coreservlets/ServletUtilities.class(读入= 2042) (写出= 109
2)(压缩了 46%)
增加:WEB-INF/classes/coreservlets/ServletUtilities.java(读入= 3629) (写出= 1311
)(压缩了 63%)
增加:WEB-INF/classes/coreservlets.war(读入= 1175) (写出= 983)(压缩了 16%)
增加:WEB-INF/classes/HelloServlet.class(读入= 1175) (写出= 688)(压缩了 41%)
增加:WEB-INF/classes/HelloServlet.java(读入= 1018) (写出= 540)(压缩了 46%)
增加:WEB-INF/classes/HelloServlet.java.bak(读入= 964) (写出= 515)(压缩了 46%)
增加:WEB-INF/classes/HelloServlet.java.bak1(读入= 1011) (写出= 548)(压缩了 45%)
增加:WEB-INF/classes/web.xml(读入= 973) (写出= 291)(压缩了 70%)
增加:WEB-INF/web.xml(读入= 1328) (写出= 378)(压缩了 71%)
●将打包文件myHello.war移动到上一级目录webapps中。

●重启服务器。

这时,你会看到Tmocat会自动解压myHello.war,生成一个与testApp结构相同的文件夹testApp2。

即使你将testApp2文件夹删除Tmocat还会再自动创建一个estApp2文件夹。

运行testApp2文件夹下面的servlet与运行testApp文件夹下的servlet相仿,例如:http://localhost:8080/myHello/helloservlet3。

相关文档
最新文档