Tomcat全攻略

Tomcat全攻略

随着java的流行,其在web上的应用也越来越广,tomcat作为一个开源的servlet容器,应用前景越来越广,本文将向你讲述tomcat的一些知识。
一:简介
tomcat
jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品(Most Innovative Java Product),同时它又是sun公司官方推荐的servletjsp容器(具体可以见http://java.sun.com/products/jsp/tomcat/),因此其越来越多的受到软件公司和开发人员的喜爱。servletjsp的最新规范都可以在tomcat的新版本中得到实现。

二:安装及配置
tomcat
最新版本为4.0.1,这个版本用了一个新的servlet容器Catalina,完整的实现了servlet2.3jsp1.2规范。注意安装之前你的系统必须安装了jdk1.2以上版本。

(
):安装
1
windows平台
tomcat网站下载jakarta-tomcat-4.0.1.exe,按照一般的windows程序安装步骤即可安装好tomcat,安装时它会自动寻找你的jdkjre的位置。

2
linux平台
下载jakarta-tomcat-4.0.1.tar.gz,将其解压到一个目录。

(
):配置
运行tomcat需要设置JAVA_HOME变量
set JAVA_HOME=c:/jdk (win98
,在msdos方式下使用,或者放入autoexec.bat)
export JAVA_HOME=/usr/local/jdk (linux
下使用,放到/etc/bashrc或者/etc/profile)

(
):运行
设置完毕后就可以运行tomcat服务器了,进入tomcatbin目录,win98下用startup启动tomcatlinux下用startup.sh,相应的关闭tomcat的命令为shutdownshutdown.sh

启动后可以在浏览器中输入http://localhost:8080/测试,由于tomcat本身具有web服务器的功能,因此我们不必安装apache,当然其也可以与apache集成到一起,下面会介绍。

下面你可以测试其自带的jspservlet示例。

三:应用

(
):目录结构
tomcat
的目录结构如下: 目录名 简介
bin
存放启动和关闭tomcat脚本
conf
包含不同的配置文件,server.xml(Tomcat的主要配置文件)web.xml
work
存放jsp编译后产生的class文件
webapp
存放应用程序示例,以后你要部署的应用程序也要放到此目录
logs
存放日志文件
lib/japser/common
这三个目录主要存放tomcat所需的jar文件


(
)server.xml配置简介
下面我们将讲述这个文件中的基本配置信息,更具体的配置信息见tomcat的文档 元素名 属性 解释
server port
指定一个端口,这个端口负责监听关闭tomcat的请求
shutdown
指定向端口发送的命令字符串
service name
指定service的名字
Connector
(
表示客户端和service之间的连接) port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
minProcessors
服务器启动时创建的处理请求的线程数
maxProcessors
最大可以创建的处理请求的线程数
enableLookups
如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort
指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
acceptCount
指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
connectionTimeout
指定超时的时间数(以毫秒为单位)
Engine
(
表示指定service中的请求处理机,接收和处理来自Connector的请求) defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
Context
(
表示一个web应用程序,通常为WAR文件,关于WAR的具体信息见servlet规范) docBase 应用程序的路径或者是WAR文件存放的路径
path
表示此web应用程序的url的前缀,这样请求的urlhttp://localhost:8080/path/****
reloadable
这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib /WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序
host
(
表示一个虚拟主机)
name
指定主机名
appBase
应用程序基本目录,即存放应用程序的目录
unpackWARs
如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
Logger
(
表示日志,调试和错误信息)
className
指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
prefix
指定log文件的前缀
suffix
指定log文件的后缀
timestamp
如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt
Realm
(
表示存放用户名,密码及role的数据库)
className
指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口
Valve
(
功能与Logger差不多,其prefixsuffix属性解释和Logger 中的一样)
className
指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息

directory
指定log文件存放的位置
pattern
有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多


注意:1:经过我测试,我设置Context path="",reloadable=true,然后放一个WAR文件到webapps目录,结果tomcat不能检测出此文件(重起tomcat可以),而把此文件解压,则tomcat会自动检测出这个新的应用程序。如果不能自动检测WAR文件,我们可以利用下面管理中讲的方法来部署应用程序。

2
:默认的server.xml中,Realm元素只设置了一个className属性,但此文件中也包含几个通过JDBC连接到数据库进行验证的示例(被注释掉了),通过Realm元素我们可以实现容器安全管理(Container Managed Security)

3
:还有一些元素我们没有介绍,如Parameterloader,你可以通过tomcat的文档获取这些元素的信息。

(
):管理

1
:配置
在进行具体的管理之前,我们先给tomcat添加一个用户,使这个用户有权限来进行管理。

打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:





注意:这一行的最后部分一定是/>,tomcat的文档掉了/符号,如果没有/符号的话,tomcat重起时将无法访问应用程序。通过logs/catalina.out文件你可以看到这个错误的详细信息。

然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户名和密码即可。

2
:应用程序列表
在浏览器中输入http://localhost:8080/manager/list,浏览器将会显示如下的信息:
OK - Listed applications for virtual host localhost
/ex:running:1
/examples:running:1
/webdav:running:0
/tomcat-docs:running:0
/manager:running:0
/:running:0



面的信息分别为应用程序的路径,当前状态(running 或者stopped),与这个程序相连的session数。

3
:重新装载应用程序
在浏览器中输入 http://localhost:8080/manager/reload?path=/examples,浏览器显示如下:
OK - Reloaded application at context path /examples




表示example应用程序装载成功,如果我们将server.xmlContext元素的reloadable属性设为true(见上面表格),则没必要利用这种方式重新装载应用程序,因为tomcat会自动装载。

4
:显示session信息
在浏览器中输入http://localhost:8080/manager/sessions?path=/examples,浏览器显示如下: OK - Session information for application at context path /examples Default maximum session inactive interval 30 minutes

1111111111111
第一步:下载j2sdktomcat:到sun官方站点(http://java.sun.com/j2se/1.4.2/download.html)下载j2sdk,注意下载版本为Windows Offline InstallationSDK,同时最好下载J2SE 1.4.2 Documentation,然后到tomcat官方站点(http://www.apache.org/dist/jakarta/tomcat-4/)下载tomcat(下载最新4.1.x版本的tomcat);

第二步:安装和配置你的j2sdktomcat:执行j2sdktomcat的安装程序,然后按默认设置进行安装即可。
1.
安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的j2sdk安装在c:\j2sdk1.4.2):
JAVA_HOME=c:\j2sdk1.4.2
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%\bin
接着可以写一个简单的java程序来测试J2SDK是否已安装成功:
public class Test{
public static void main(String args[]){
System.out.println("This is a test program.");
}
}
将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
javac Test.java
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。

2.
安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat):
CATALINA_HOME=c:\tomcat;
CATALINA_BASE=c:\tomcat;
然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;
接着可以启动tomcat,在IE中访问http://localhost:8080
如果看到tomcat的欢迎页面的话说明安装成功了。

第三步:建立自己的jsp app目录
1.
Tomcat的安装目录的webapps目录,可以看到ROOTexamples, tomcat-docs之类Tomcat自带的的目录;
2.
webapps目录下新建一个目录,起名叫myapp
3.myapp
下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
4.WEB-INF
下新建一个文件web.xml,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>

BR>PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">


My Web Application

A application for test.


5.
myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:


Now time is:

6.重启 Tomcat
7.
打开浏览器,输入 http://localhost:8080/myapp/index.jsp 看到当前时间的话说明就成功了。

第四步:建立自己的 Servlet
1.
用你最熟悉的编辑器(建议使用有语法检查的 java ide)新建一个 servlet程序,文件名为 Test.java,文件内容如下:
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter ut=response.getWriter();
out.println("

This is a servlet test.

");
out.flush();
}
}
2 .编译
Test.java放在 c:\test下,使用如下命令编译:
C:\Test>javac Test.java
然后在 c:\Test下会产生一个编译后的 servlet文件: Test.class
3 .
将结构 test\Test.class剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes下,也就是剪切那个 test目录到 classes目录下,如果 classes目录不存在,就新建一个。现在 webapps\myapp\WEB-INF\classes下有 test\Test.class的文件目录结构
4 .
修改 webapps\myapp\WEB-INF\web.xml,添加 servletservlet-mapping
编辑后的 web.xml如下所示,红色为添加的内容 :
<?xml version="1.0" encoding="ISO-8859-1"?>

BR>PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

My Web Application

A application for test.


Test
Test
A test Servlet
test.Test


Test
/Test


这段话中的 servlet这一段声明了你要调用的 Servlet,而 servlet-mapping则是将声明的 servlet“映射 到地址 /Test
5 .
好了,启动 Tomcat,启动浏览器,输入 http://localhost:8080/myapp/Test 如果看到输出 This is a servlet test.就说明编写的 servlet成功了。
注意:修改了 web.xml以及新加了 class,都要重启 Tomcat

第四步:建立自己的 Bean
1.
用你最熟悉的编辑器(建议使用有语法检查的 java ide)新建一个 java程序,文件名为 TestBean.java,文件内容如下:
package test;
public class TestBean{
private String name = null;
public TestBean(String strName_p){
this.name=strName_p;
}
public void setName(String strName_p){
this.name=strName_p;
}
public String getName(){
return this.name;
}
}
2 .
编译
TestBean.java放在 c:\test下,使用如下命令编译:
C:\Test>javac TestBean.java
然后在 c:\Test下会产生一个编译后的 bean文件: TestBean.class
3 .
TestBean.class文件剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes\test下,
4 .
新建一个 TestBean.jsp文件,文件内容为:


TestBean testBean=new TestBean("This is a test java bean.");
%>
Java bean name is:

5 .好了,重启 Tomcat,启动浏览器,输入 http://localhost:8080/myapp/TestBean.jsp 如果看到输出 Java bean name is: This is a test java bean.就说明编写的 Bean成功了。

这样就完成了整个 Tomcat下的 jspservletjavabean的配置。接下来需要做的事情就是多看书、多读别人的好代码,自己多动手写代码以增强自己在这方面开发的能力了。


JSP
tomcatSQL Server2000数据库连接池的配置
环境:
1.
数据库: Microsoft SQL Server 2000
2.
数据库驱动程序: net.sourceforge.jtds.jdbc.Driver

JNDI
Java Naming and Directory Interface)概述:
Tomcat4
5)提供了一个与 Java Enterprise Edition应用服务相兼容的 JNDI--InitialContext实现实例。它的初始数据设置在 $CATALINA_HOME/conf/server.xml文件里,并可能在网页应用环境描述( /WEB-INF/web.xml)里被下列元素引用:
1) --
环境入口,设置应用程序如何操作。
2) --
资源参数,一般是数据库驱动程序、 JavaMail Session、自定义类工厂等。
3) --
Servlet 2.4里用来简化设置不需认证信息的资源资源如环境参数、 resource-ref变量。

InitialContext
在网页应用程序初始化时被设置,用来支持网页应用程序组件。所有的入口和资源都放在 JNDI命名空间里的 java:comp/env段里。点击下列网址以获取更多信息:
1) Java
命名和目录接口( Java Naming and Directory Interface
2) J2EE
平台说明( J2EE Platform. Specification

设置 JNDI资源
设置 JNDI资源要在 $CATALINA_HOME/conf/server.xml文件里使用下列标志符:
1) --
设置域个可变的 JNDI InitialContext入口的名字和值(同上面说的 等价)。
2) --
设置应用程序可用的资源的名字和类型(同上面说的 等价)。
3) --
设置 Java资源类工厂的名称或将用的 JavaBean属性。
4) --
给全局 JNDI环境( JNDI Context)添加一个链接。
上述这些标志符必须放在 之间(针对专门的网页应用程序)或 之间。
此外,设在网页应用环境描述( Web Application Descriptor)( /WEB-INF/web.xml)里的名字和值也在初始环境( Initial Context)里被设置,当被 元素值允许时将被重设初始值。
全局变量能在 子元素的 里设置。

数据库连接池概述:
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:
1)
最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;
2)
最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
3)
如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

配置 Tomcat数据库连接池的前提:
1.
必须装有 Java运行环境;
2.
必须有 SQL Server2000数据库服务器(可以不在本地);
3.
必须有 jtds.jar,并将它放在 $CATALINA_HOME/common/lib目录下(只能是这里)。使用它是因为 Microsoft公司的 Java SQL Server驱动程序不支持二次查询,可到网上搜到。目前使用的是 jtds-0.6.jar

$CATALINA_HOME/conf/server.xml里设置数据库连接池:
下面是配置的代码,必须放在 之间。

maxActive <!-- Maximum number of DB connections in pool.Set to 0 for no limit. --&gt 100maxIdle <!-- Maximum number of idle DB connections to retain in pool.Set to 0 for no limit. --&gt 30maxWait <!-- Maximum time to wait for a DB connection to become available in ms.An exception is thrown if this timeout is exceeded.Set to -1 to wait indefinitely. --&gt 10000removeAbandoned <!-- Abandoned DB connections are removed and recycled --&gt trueremoveAbandonedTimeout <!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned. --&gt 60logAbandoned <!-- Log a stack trace of the code which abandoned --&gt falsefactory org.apache.commons.dbcp.BasicDataSourceFactory username <!-- Database User Name --&gt Iorishinierpassword <!-- User Password --&gt mypasswddriverClassName <!-- Database Driver Class Name --&gt net.sourceforge.jtds.jdbc.Driverurl <!-- Database Address --&gt jdbc:jtds:sqlserver://127.127.127.127:1433/Northwind

下面是一些参数的说明:

其中:
1) path
指定路径,这里设定的是 $CATALINA_HOME/webapps下的 quality目录;
2) docBase
文件根目录。
3) reloader
当网页被更新时是否重新编译。
4) maxActive
连接池的最大数据库连接数。设为 0表示无限制。
5) maxIdle
数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为 0表示无限制。
6) maxWait
最大建立连接等待时间。如果超过此时间将接到异常。设为- 1表示无限制。
7) removeAbandoned
回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。
removeAbandonedTimeout
数据库连接过多长时间不用将被视为被遗弃而收回连接池中。
9) logAbandoned
将被遗弃的数据库连接的回收记入日志。
10) driverClassName JDBC
驱动程序。
11) url
数据库连接字符串

$CATALINA_HOME/webapps/quality/WEB-INF/web.xml里设置被引用的资源:
下面是配置代码,必须放在 里。

<!-- Database Config start --&gtconnectDB testjdbc/connectDBjavax.sql.DataSourceContainer<!-- Database Config end --&gt


下面是一下参数的必要说明:
1) description
对被引用的资源的描述。
2) res-ref-name
资源名称。见上面的
3) res-type
资源类型。见上面的

JSP中使用资源:
这是在 $CATALINA_HOME/webapps/quality下的某级子目录里的 jsp网页文件部分代码:

数据库操作 Context ctx=null; Connection cnn=null; Statement stmt=null; ResultSet rs=null; try { ctx=new InitialContext(); if(ctx==null) throw new Exception("没有匹配的环境"); DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB"); if(ds==null) throw new Exception("没有匹配数据库"); cnn=ds.getConnection(); stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=stmt.executeQuery("select * from table1"); ……………… ……………… } finally { if(rs!=null) rs.close(); if(stmt!=null) stmt.close(); if(cnn!=null) cnn.close(); if(ctx!=null) ctx.close(); } %>


代码说明:
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");
上面这句应用了刚才设的资源。
资源使用完要释放,尤其是Context资源,见try-catch-finally部分的finally代码段,这是一种好的习惯。资源释放时如果释放了上级资源,下级资源将先被释放。如:释放了ctx,那么资源释放顺序将是rsstmtcnnctx。换句话说,如果释放了ctx,那么rsstmtcnn都将不可用了。
这里的释放资源只是将数据库连接返回连接池中,并不是把资源真正释放掉,见数据库连接池概述。


/
Tomcat
JSPServletJavaBean环境的配置

经常看到jsp的初学者问tomcat下如何配置jspservletbean的问题,于是总结了一下如何tomcat下配置jspservletben,希望对那些初学者有所帮助。
一、开发环境配置
第一步:下载j2sdktomcat:到sun官方站点(http://java.sun.com/j2se/1.4.2/download.html)下载j2sdk,注意下载版本为Windows Offline InstallationSDK,同时最好下载J2SE 1.4.2 Documentation,然后到tomcat官方站点(http://www.apache.org/dist/jakarta/tomcat-4/)下载tomcat(下载最新4.1.x版本的tomcat);
第二步:安装和配置你的j2sdktomcat:执行j2sdktomcat的安装程序,然后按默认设置进行安装即可。
1.
安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的j2sdk安装在c:\j2sdk1.4.2):
JAVA_HOME=c:\j2sdk1.4.2
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%\bin
接着可以写一个简单的java程序来测试J2SDK是否已安装成功:
public class Test{
public static void main(String args[]){
System.out.println("This is a test program.");
}
}
将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
javac Test.java
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
2.
安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat)
CATALINA_HOME=c:\tomcat
CATALINA_BASE=c:\tomcat
然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的(可以根据实际追加)servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;
接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
第三步:建立自己的jsp app目录
1.
Tomcat的安装目录的webapps目录,可以看到ROOTexamples, tomcat-docs之类Tomcat自带的的目录;
2.
webapps目录下新建一个目录,起名叫myapp
3.myapp
下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
4.WEB-INF
下新建一个文件web.xml,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
BR>PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

My Web Application

A application for test.


5.
myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:

Now time is:

6.重启 Tomcat
7.
打开浏览器,输 http://localhost:8080/myapp/index.jsp看到当前时间的话说明就成功了。
第四步:建立自己的 Servlet
1.
用你最熟悉的编辑器(建议使用有语法检查的 java ide)新建一个 servlet程序,文件名为 Test.java,文件内容如下:
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter ut=response.getWriter();
out.println("

This is a servlet test.

");
out.flush();
}
}
2 .编译
Test.java放在 c:\test下,使用如下命令编译:
C:\Test>javac Test.java
然后在 c:\Test下会产生一个编译后的 servlet文件: Test.class
3 .
将结构 test\Test.class剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes下,也就是剪切那个 test目录到 classes目录下,如果 classes目录不存在,就新建一个。现在 webapps\myapp\WEB-INF\classes下有 test\Test.class的文件目录结构
4 .
修改 webapps\myapp\WEB-INF\web.xml,添加 servletservlet-mapping
编辑后的 web.xml如下所示,红色为添加的内容 :
<?xml version="1.0" encoding="ISO-8859-1"?>
BR>PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

My Web Application

A application for test.


Test
Test
A test Servlet
test.Test


Test
/Test


这段话中的 servlet这一段声明了你要调用的 Servlet,而 servlet-mapping则是将声明的 servlet"映射 "到地址 /Test
5 .
好了,重启动 Tomcat,启动浏览器,输 http://localhost:8080/myapp/Test如果看到输出 This is a servlet test.就说明编写的 servlet成功了。
注意:修改了 web.xml以及新加了 class,都要重启 Tomcat
第四步:建立自己的 Bean
1.
用你最熟悉的编辑器(建议使用有语法检查的 java ide)新建一个 java程序,文件名为 TestBean.java,文件内容如下:
package test;
public class TestBean{
private String name = null;
public TestBean(String strName_p){
this.name=strName_p;
}
public void setName(String strName_p){
this.name=strName_p;
}
public String getName(){
return this.name;
}
}
2 .
编译
TestBean.java放在 c:\test下,使用如下命令编译:
C:\Test>javac TestBean.java
然后在 c:\Test下会产生一个编译后的 bean文件: TestBean.class
3 .
TestBean.class文件剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes\test下,
4 .
新建一个 TestBean.jsp文件,文件内容为:


TestBean testBean=new TestBean("This is a test java bean.");
%>
Java bean name is:

5 .好了,重启 Tomcat,启动浏览器,输 http://localhost:8080/myapp/TestBean.jsp如果看到输出 Java bean name is: This is a test java bean.就说明编写的 Bean成功了。
这样就完成了整个 Tomcat下的 jspservletjavabean的配置。接下来需要做的事情就是多看书、多读别人的好代码,自己多动手写代码以增强自己在这方面开发的能力了。

jvm
应填写到
c:\j2sdk\bin

给你一个简单的配置::::

JSP
环境配置心得
首先要说的是,使用 jdk+tomcat完全可以配置我们的 jsp服务器,不再需要其实任何东东,有很多文章介绍了 Apache,其实根本用不着,一般的学习调试 tomcat完全可以胜任了。
安装 jdk后, tomcat在安装之前会自动找到 jdk的安装路径,一路点击 "下一步 ",经过一段时间的文件复制,最后 "close",完成 comcat的安装。
您最好去下载一个版本较高的 tomcat,比如 4.1以上的,因为它不需要设置太多的系统变量,右击 "我的电脑 ",选择 "属性 "->"高级 "->"环境变量 "->"系统变量 ",新建一个 TOMCAT_HOME,值设置成你的 tomcat所在的路径,比如: D:\Program Files\Apache Group\Tomcat 4.1,配置完成。
从开始菜单中找到 tomcat选项,一般打开顺序是:开始 ->程序 ->Apache Tomcat 4.1,选择 "Start Tomcat",让 jsp服务器开始运行,此时会打开一个类似 Dos的窗口,会显示一些相关的信息。
如果您使用代理上网,一定要先撤掉代理,不然您的 jsp程序永远也得不到执行。如果不是代理的,这一步就跳过了。
打开浏览器,在地址栏中输入: http://localhost:8080,如果看到有老虎(我也不知道是老虎还是猫)的画面,恭喜您,您成功了一半。
先来享受一下成功的喜悦吧,请输入下面的代码:


First Page


Today is: h




将该程序保存为 :First.jsp,放到 TomcatROOT目录下,然后在浏览器的地址栏中输入: http://localhost:8080/First.jsp(First.jsp跟我们保存的文件名的大小写要一致 )回车,如果不出意外,应该可以看到形如 Today is: h Fri Apr 11 08:32:38 CST 2003 的结果。
注意: ROOTtomcat的默认虚拟目录,如果要改成自己的虚拟目录怎么办呢?请继续往下看吧。
要改成自己的虚拟目录,就要请出 server.xml来了,该文件是一个配置文件,在 Tomcat\conf目录下,使用任何文本编辑软件都能打开它,我们先找到下面一句:
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
这里的 port="8080"就是端口,我们完全可以用别的端口来代替,但不能是被系统占用的端口( 0--1023),这里简单提一下。
下面我们再往下找,会发现以下的语句:


我们就应该找到这两个语句,如果不懂 E文,您就认定这两个语句好了。然后我们将该语句更改如下:




这里的 path="/myjsp"就是我们就配置的虚拟目录了,以后在地址栏中输入 http://localhost:8080/myjsp即可。而 docBase="e:/myjsp" 则是机器本地路径,他们通过这个语句形成一个映射关系,其它照抄。
将上面的 First.jsp文件放到 e:/myjsp目录下,输入 http://localhost:8080/myjsp/First.jsp,是不是有一种喜上眉梢的感觉?
在论坛里我见得最多的就是很多人不知道 javaBean文件放到哪里,老实说开始我也不知道,更令人不解的是,十个人有九种不同的说法,这更让我们茫然。其实这问题也不是我们想像的那么复杂,我们以一个例子说明:
先建立一个 java程序,代码如下:
package hall;
public class SimpleBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
保存为 SimpleBean.java,编译后会生成一个包,其实就相当于一个目录,也就是 SimpleBean.class会存放在 hall目录中,暂且保存起来,将来备用。
再输入以下代码:


Reusing JavaBeans in JSP




Reusing JavaBeans in JSP





Message:



保存在我们刚才建立的虚拟目录 e:/myjsp下面,并命名为: BeanTest.jsp
现在我们应该将 hall(包)目录放在哪儿呢?别急,我们先在 e:/myjsp下建立一个文件夹 WEB-INF,然后再在 WEB-INF下建立一个 classes文件夹,最后将 hall目录放到 classes下,当然, hall下的字节码文件 SimpleBean.class也一并要移过来,而 SimpleBean.java就和 BeanTest.jsp放到同一目录吧(可以不需要放的,自己试试)。
好了,大功告成了,重新启动机器(如果您试了好多次都不行,这一步一定要做),在浏览器中输入: http://localhost:8080/myjsp/BeanTest.jsp,您看到了什么?呵,别告诉我您什么都没看到,那肯定是您设置的问题了。
好了,文章写完了,我也只是一只菜鸟,所以有写的不准备的地方请多多指教。祝您 jsp之旅一路顺风!!!
Java
学习 - 技术文章中心
初学者问的诸如:《怎样配置环境变量》《怎样运行 Servlet》啊?这样的问题太多了,现在我写一个初学者入门必读,以便对初学者有指导作用!
首先是下载工具:
我建议初学者用 EditplusJDK,我觉得如果用例如 JBEclipseJCreator,虽然刚开始的时候比较方便,但是确使初学者门不知道怎样配置环境变量,
从而难以达到知其然,知其所以然的地步
可以通过如下地址下载:
Editplus(
最新版本是 v2.11)http://count.skycn.com/softdown.php?id=3641&url=http://sc-http.skycn.net/down/epp211a_cn.exe(要照注册码就自己找吧,网上很多的)
JDK(
最新版本是 Java2sdk1_4_2)http://count.skycn.com/softdown.php?id=3116&url=http://sc-http.skycn.net/down/j2sdk-1_4_2-windows-i586.exe(这是 For Windows
然后就是安装 JDK,我是把它装到从 c:\JDK目录下面:
然后就是 CLASSPATH的问题了:
正如操作系统利用 PATH来搜索可执行程序一样, Java运行环境也会遍历 CLASSPATH来查找类,即便是 HelloWorld这样简单的程序, JVM也会遍历
CLASSPATH
定义的每一个路径,直到找到相应的文件为止。
相信大家用的系统不是 2k就是 XP,然后就应当如下设置 Path
我的电脑 ->属性 ->高级 ->环境变量
然后在环境变量的 Path后面追加 : C:\JDK\bin;.;C:\JDK\lib
也可以这样配置 :C:\JDK\bin;.;C:\JDK\lib\dt.jar;C:\JDK\lib\tools.jar
记住 :环境变量中的 . 切记不能少,它表示当前路径,如果少掉出现的错误等会就说!
dt.jar
是关于运行环境的类库, tools.jar是关于一些工具的类库
如果没有配置 :C:\JDK\bin,则会出现 " javac′ 不是内部或外部命令,也不是可运行的程序或批处理文件。 "这样的错误。
然后下面就该写程序了:
首先是 (HelloWorld.java),打开 Editplus,新建一个 Java文件,请照着如下输入,要一字不漏,并且分清大小写:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello,World!");
}
}
然后把这个文件保存 (ctrl + s)HelloWorld.java,记住大小写一定要分清,是 HelloWorld.java不是 helloworld.java或者其它的
下面就该运行了,开始 ->运行 ->cmd
在控制台中把目录切换到当前目录:
javac HelloWorld.java
java HelloWorld
你就会在控制台上看见输出的 Hello,World!(没出来?我把电脑吃了:) )
javac
是编译命令,它把 HelloWorld.java编译成 HelloWorld.class
java
就是解释命令, JVMHelloWorld.class解释执行 .
在这个时候:
1
。如果出现 Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
那就是你在环境变量中没有加上那个 .(dot)
2
。如果出现 Exception in thread "main" java.lang.NoSuchMethodError: main
或者 HelloWorld.java:1: Public class helloworld must be defined in a file called
"HelloWorld.java".
那就是你没有分清大小写的写入这个 HelloWorld,或者保存得时候没有保存为 HelloWorld.java
这个名字一定要跟 public class的名字一样
对于环境变量的问题就说到这里,下面我先所说怎么在 Editplus里面编译和运行,在 Tools>参数设置 ->配置用户工具
1.
添加工具(添加应用程序)
菜单文字: Compile Java Program
程序: C:\JDK\bin\javac.exe
参数:文件名称
初始目录:文件目录
2.
添加工具(添加应用程序)
菜单文字: Run Java Program
程序: C:\JDK\bin\java.exe
参数:文件名称(不含扩展名)
初始目录:文件目录
工具组名称可以随便添,比如 Debug Java Program
然后在 Tools的下拉菜单中,你就会看见 Compile Java Program以及 Run Java Program这两个选项,以后你就可以利用 ctrl + 1编译和 ctrl 2运行程序了

下面就讨论 Servlet的运行:
首先要运行 Servlet,则需要 JSP/Servlet container,我建议初学者用 Tomcat
Tomcat
(最新版本 5.0http://cvs.apache.org/builds/jakarta-tomcat-5/nightly/jakarta-tomcat-5-bin-20030725.zip
然后把这个压缩包解压到:
C:\Tomcat
然后再配置环境变量:
添加三个系统变量:
JAVA_HOME: C:\JDK
TOMCAT_HOME: C:\Tomcat
CLASSPATH: %JAVA_HOME%\lib;%TOMCAT_HOME%\lib
Tomcat
的环境变量就配置完毕了,下面检验 Tomcat是否能够运行:
在控制台中转到 C:\Tomcat\bin这个目录,运行 startup,然后回出现一个窗口,连跳一大串东西,最后表示 Server已经运行
在浏览器中输入 http://localhost:8080,出现欢迎界面,则表示 Tomcat没问题了
然后和上面一样,写入你的第一个 Servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
response.setContentType("text/html");
PrintWriter ut = response.getWriter();
out.println("");
out.println("This is my first Servlet");
out.println("");
out.println("

Hello,World!

");
out.println("");

}
}
然后照样用 javac HelloWorld.java来编译这个文件,如果出现无法 import javax.servlet.*
那么就是应该把 C:\Tomcat\common\lib里面的 servlet.jar(根据实际来看)文件拷贝到 C:\JDK\jre\lib\ext中,再次编译,就没有问题了!
然后在 Tomcat目录里面的 C:\Tomcat\webapps\ROOT里面按如下的文件结构:
ROOT\index.html
ROOT\welcom.jsp
ROOT\WEB-INF\lib\MyServlet.jar
(如果你的 servlet.class打成了 .jar文件,则放在 lib下面 )
ROOT\WEB-INF\classes\HelloWorld.class(
把上面生成的 HelloWorld.class文件放在这个里面 )
然后在浏览器中输入 http://localhost:8080/servlet/HelloWorld,于是 Server众望所归的报错了 :Error 404--Not Found
怎么回事呢?
Servlet
必须使用 C:\Tomcat\webapps\ROOT\WEB-INF这个目录下面的 web.xml文件进行注册,用 EP打开这个 web.xml文件,
在里面加入

HelloWorld
HelloWorld


HelloWorld
/servlet/helloworld

这样的结构

HelloWorld
HelloWorld

表示指定包含的 servlet.
而以下的结构

HelloWorld
/servlet/HelloWorld

表示指定 HelloServlet应当映射到哪一种 URL模式。
在修改 web.xml完毕过后,重新启动 Server,然后再输入 http://localhost:8080/servlet/HelloWorld,那么偌大一个 Hello,World!等着你呢,恭喜你

TOMCAT设置



1
、下载必要软件
①JDK 1.4.2
②Tomcat 4.0
2
、配置环境
windows
系统用户:
我的电脑------〉右键-------〉属性-------〉详细-------〉环境变数
path = x:\jdk1.4.2\bin

JAVA_HOME=x:\jdk1.4.2
CATALINA_HOME=x:\tomcat
(这里有的是TOMCAT_HOME=x:\tomcat
注:这里x为安装的驱动器。

这里要怎么设置取决于bin目录下的startup.bat文件。
我们可以在编辑状态下打开startup.bat,看究竟这个文件需要读取那个系统变量,我们就设置那个。比如当前我的版本tomcatstartup.bat文件内容如下:
@echo off
if "%OS%" == "Windows_NT" setlocal
rem ---------------------------------------------------------------------------
rem Start script. for the CATALINA Server
rem
rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $
rem --------------------------------------------------------------

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10343122/viewspace-231272/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10343122/viewspace-231272/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值