Tomcat全攻略

tommcat配置

Tomcat全攻略
 

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

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

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

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服务器了,进入tomcat的bin目录,win98下用startup启动tomcat,linux下用startup.sh,相应的关闭tomcat的命令为shutdown和shutdown.sh。  

启动后能够在浏览器中输入[url]http://localhost:8080/[/url]测试,因为tomcat自己具备web服务器的功能,所以咱们没必要安装apache,固然其也能够与apache集成到一块儿,下面会介绍。  

下面你能够测试其自带的jsp和servlet示例。  

三:应用  

(一):目录结构  
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的前缀,这样请求的url为[url]http://localhost:8080/path/[/url]****  
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差很少,其prefix和suffix属性解释和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:还有一些元素咱们没有介绍,如Parameter,loader,你能够经过tomcat的文档获取这些元素的信息。  

(三):管理  

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

打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:  
<user name="zf" password="zf" roles="standard,manager"/>  




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

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

2:应用程序列表  
在浏览器中输入[url]http://localhost:8080/manager/list[/url],浏览器将会显示以下的信息:  
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:从新装载应用程序  
在浏览器中输入 [url]http://localhost:8080/manager/reload?path=/examples[/url],浏览器显示以下: 
OK - Reloaded application at context path /examples  




表示example应用程序装载成功,若是咱们将server.xml的Context元素的reloadable属性设为true(见上面表格),则不必利用这种方式从新装载应用程序,由于tomcat会自动装载。  

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

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

第二步:安装和配置你的j2sdk和tomcat:执行j2sdk和tomcat的安装程序,而后按默认设置进行安装便可。  
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中访问[url]http://localhost:8080[/url]  
若是看到tomcat的欢迎页面的话说明安装成功了。

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

<!DOCTYPE web-app  
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
" ' target=_blank>[url]http://java.sun.com/dtd/web-app_2_3.dtd[/url]"> 

<web-app>  
<display-name>My Web Application</display-name>  
<description>  
A application for test.  
</description>  
</web-app>  
5.在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容以下:  
<html><body><center>  
Now time is: <%=new java.util.Date()%>  
</center></body></html>  
6.重启Tomcat  
7.打开浏览器,输入[url]http://localhost:8080/myapp/index.jsp[/url] 看到当前时间的话说明就成功了。  

第四步:创建本身的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("<html><body><h1>This is a servlet test.</h1></body></html>");  
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,添加servlet和servlet-mapping  
编辑后的web.xml以下所示,红色为添加的内容:  
<?xml version="1.0" encoding="ISO-8859-1"?>  

<!DOCTYPE web-app  
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
" ' target=_blank>[url]http://java.sun.com/dtd/web-app_2_3.dtd[/url]"> 

<display-name>My Web Application</display-name>  
<description>  
A application for test.  
</description>  
<servlet>  
<servlet-name>Test</servlet-name>  
<display-name>Test</display-name>  
<description>A test Servlet</description>  
<servlet-class>test.Test</servlet-class>  
</servlet>  
<servlet-mapping>  
<servlet-name>Test</servlet-name>  
<url-pattern>/Test</url-pattern>  
</servlet-mapping>  
</web-app>  
这段话中的servlet这一段声明了你要调用的Servlet,而servlet-mapping则是将声明的servlet“映射”到地址/Test上  
5 .好了,启动Tomcat,启动浏览器,输入[url]http://localhost:8080/myapp/Test[/url] 若是看到输出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文件,文件内容为:  
<%@ page import="test.TestBean" %>  
<html><body><center>  
<%  
TestBean testBean=new TestBean("This is a test java bean.");  
%>  
Java bean name is: <%=testBean.getName()%>  
</center></body></html>  
5 .好了,重启Tomcat,启动浏览器,输入[url]http://localhost:8080/myapp/TestBean.jsp[/url] 若是看到输出Java bean name is: This is a test java bean.就说明编写的Bean成功了。  

这样就完成了整个Tomcat下的jsp、servlet和javabean的配置。接下来须要作的事情就是多看书、多读别人的好代码,本身多动手写代码以加强本身在这方面开发的能力了。  

////////////////////
JSP中tomcat的SQL 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) <env-entry>--环境入口,设置应用程序如何***做。
2) <resource-ref>--资源参数,通常是数据库驱动程序、JavaMail Session、自定义类工厂等。
3) <resource-env-ref>--在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) <Environment>--设置域个可变的JNDI InitialContext入口的名字和值(同上面说的<env-entry>等价)。
2) <Resource>--设置应用程序可用的资源的名字和类型(同上面说的<resource-ref>等价)。
3) <ResourceParams>--设置Java资源类工厂的名称或将用的JavaBean属性。
4) <ResourceLink>--给全局JNDI环境(JNDI Context)添加一个连接。
上述这些标志符必须放在<Context>和</Context>之间(针对专门的网页应用程序)或<DefaultContext>和</DefaultContext>之间。
此外,设在网页应用环境描述(Web Application Descriptor)(/WEB-INF/web.xml)里的名字和值也在初始环境(Initial Context)里被设置,当被<Environemt>元素值容许时将被重设初始值。
全局变量能在<Server>子元素的<GlobalNamingResources>里设置。

数据库链接池概述:
数据库链接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤其突出。对数据库链接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库链接池正是针对这个问题提出来的。
数据库链接池负责分配、管理和释放数据库链接,它容许应用程序重复使用一个现有的数据库链接,而再不是从新创建一个;释放空闲时间超过最大空闲时间的数据库链接来避免由于没有释放数据库链接而引发的数据库链接遗漏。这项 技术能明显提升对数据库***做的性能。
数据库链接池在初始化时将建立必定数量的数据库链接放到链接池中,这些数据库链接的数量是由最小数据库链接数来设定的。不管这些数据库链接是否被使用,链接池都将一直保证至少拥有这么多的链接数量。链接池的最大数据库链接数量限定了这个链接池能占有的最大链接数,当应用程序向链接池请求的链接数超过最大链接数量时,这些请求将被加入到等待队列中。数据库链接池的最小链接数和最大链接数的设置要考虑到下列几个因素:
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里设置数据库链接池:
下面是配置的代码,必须放在<Host>和</Host>之间。

<Context path="/quality" docBase="quality" debug="0" reloadable="true" crossContext="true"><Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_quality_log." suffix=".txt" timestamp="true"/><Resource name="jdbc/connectDB" auth="Container" type="javax.sql.DataSource"/><ResourceParams name="jdbc/connectDB"> <parameter>  <name>maxActive</name>  <!-- Maximum number of DB connections in pool.Set to 0 for no limit. -->  <value>100</value> </parameter> <parameter>  <name>maxIdle</name>  <!-- Maximum number of idle DB connections to retain in pool.Set to 0 for no limit. -->  <value>30</value> </parameter> <parameter>  <name>maxWait</name>  <!-- 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. -->  <value>10000</value> </parameter> <parameter>  <name>removeAbandoned</name>  <!-- Abandoned DB connections are removed and recycled -->  <value>true</value> </parameter> <parameter>  <name>removeAbandonedTimeout</name>  <!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned.  -->  <value>60</value> </parameter> <parameter>  <name>logAbandoned</name>  <!-- Log a stack trace of the code which abandoned -->  <value>false</value> </parameter> <parameter>  <name>factory</name>  <!-DBCP Basic Datasource Factory -->  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter>  <name>username</name>  <!-- Database User Name -->  <value>Iorishinier</value> </parameter> <parameter>  <name>password</name>  <!-- User Password -->  <value>mypasswd</value> </parameter> <parameter>  <name>driverClassName</name>  <!-- Database Driver Class Name -->  <value>net.sourceforge.jtds.jdbc.Driver</value> </parameter> <parameter>  <name>url</name>  <!-- Database Address -->  <value>jdbc:jtds:sqlserver://127.127.127.127:1433/Northwind</value> </parameter></ResourceParams></Context>

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

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

<!-- Database Config start --><resource-ref><description>connectDB test</description><res-ref-name>jdbc/connectDB</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref><!-- Database Config end -->


下面是一下参数的必要说明:
1) description 对被引用的资源的描述。
2) res-ref-name 资源名称。见上面的<ResourceParams name="jdbc/connectDB">
3) res-type 资源类型。见上面的<Resource name="jdbc/connectDB" auth="Container" type="javax.sql.DataSource"/>

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

<%@ page contentType="text/html;charset=GBK"%><%@ page errorPage="error.jsp"%><%@ page import="javax.naming.*"%><%@ page import="javax.sql.*"%><%@ page import="java.sql.*"%><html> <head> </head> <body>  <%   ………………   ………………   // 数据库***做   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();   }    %> </body></html>


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


/////
Tomcat下JSP、Servlet和JavaBean环境的配置  

常常看到jsp的初学者问tomcat下如何配置jsp、servlet和bean的问题,因而总结了一下如何tomcat下配置jsp、servlet和ben,但愿对那些初学者有所帮助。  
1、开发环境配置  
第一步:下载j2sdk和tomcat:到sun官方站点([url]http://java.sun.com/j2se/1.4.2/download.html[/url])下载j2sdk,注意下载版本为Windows Offline Installation的SDK,同时最好下载J2SE 1.4.2 Documentation,而后到tomcat官方站点([url]http://www.apache.org/dist/jakarta/tomcat-4/[/url])下载tomcat(下载最新4.1.x版本的tomcat);  
第二步:安装和配置你的j2sdk和tomcat:执行j2sdk和tomcat的安装程序,而后按默认设置进行安装便可。  
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中访问[url]http://localhost:8080[/url],若是看到tomcat的欢迎页面的话说明安装成功了。  
第三步:创建本身的jsp app目录  
1.到Tomcat的安装目录的webapps目录,能够看到ROOT,examples, tomcat-docs之类Tomcat自带的的目录;  
2.在webapps目录下新建一个目录,起名叫myapp;  
3.myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;  
4.WEB-INF下新建一个文件web.xml,内容以下:  
<?xml version="1.0" encoding="ISO-8859-1"?>  
<!DOCTYPE web-app  
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
" ' target=_blank>[url]http://java.sun.com/dtd/web-app_2_3.dtd[/url]"> 
<web-app>  
<display-name>My Web Application</display-name>  
<description>  
A application for test.  
</description>  
</web-app>  
5.在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容以下:  
<html><body><center>  
Now time is: <%=new java.util.Date()%>  
</center></body></html>  
6.重启Tomcat  
7.打开浏览器,输[url]http://localhost:8080/myapp/index.jsp[/url]看到当前时间的话说明就成功了。  
第四步:创建本身的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("<html><body><h1>This is a servlet test.</h1></body></html>");  
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,添加servlet和servlet-mapping  
编辑后的web.xml以下所示,红色为添加的内容:  
<?xml version="1.0" encoding="ISO-8859-1"?>  
<!DOCTYPE web-app  
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
" ' target=_blank>[url]http://java.sun.com/dtd/web-app_2_3.dtd[/url]"> 
<web-app>  
<display-name>My Web Application</display-name>  
<description>  
A application for test.  
</description>  
<servlet>  
<servlet-name>Test</servlet-name>  
<display-name>Test</display-name>  
<description>A test Servlet</description>  
<servlet-class>test.Test</servlet-class>  
</servlet>  
<servlet-mapping>  
<servlet-name>Test</servlet-name>  
<url-pattern>/Test</url-pattern>  
</servlet-mapping>  
</web-app>  
这段话中的servlet这一段声明了你要调用的Servlet,而servlet-mapping则是将声明的servlet"映射"到地址/Test上  
5 .好了,重启动Tomcat,启动浏览器,输[url]http://localhost:8080/myapp/Test[/url]若是看到输出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文件,文件内容为:  
<%@ page import="test.TestBean" %>  
<html><body><center>  
<%  
TestBean testBean=new TestBean("This is a test java bean.");  
%>  
Java bean name is: <%=testBean.getName()%>  
</center></body></html>  
5 .好了,重启Tomcat,启动浏览器,输[url]http://localhost:8080/myapp/TestBean.jsp[/url]若是看到输出Java bean name is: This is a test java bean.就说明编写的Bean成功了。  
这样就完成了整个Tomcat下的jsp、servlet和javabean的配置。接下来须要作的事情就是多看书、多读别人的好代码,本身多动手写代码以加强本身在这方面开发的能力了。  

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程序永远也得不到执行。若是不是代理的,这一步就跳过了。  
打开浏览器,在地址栏中输入:[url]http://localhost:8080[/url],若是看到有老虎(我也不知道是老虎仍是猫)的画面,恭喜您,您成功了一半。  
先来享受一下成功的喜悦吧,请输入下面的代码:  
<html>  
<head>  
<title>First Page</title>  
</head>  
<body>  
<H3>Today is: h  
<%= new java.util.Date() %>  
</H3>  
</body>  
</html>  
将该程序保存为:First.jsp,放到Tomcat的ROOT目录下,而后在浏览器的地址栏中输入:[url]http://localhost:8080/First.jsp[/url],(First.jsp跟咱们保存的文件名的大小写要一致)回车,若是不出意外,应该能够看到形如Today is: h Fri Apr 11 08:32:38 CST 2003 的结果。  
注意:ROOT是tomcat的默认虚拟目录,若是要改为本身的虚拟目录怎么办呢?请继续往下看吧。  
要改为本身的虚拟目录,就要请出server.xml来了,该文件是一个配置文件,在Tomcat\conf目录下,使用任何文本编辑软件都能打开它,咱们先找到下面一句:  
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"  
port="8080" minProcessors="5" maxProcessors="75"  
enableLookups="true" redirectPort="8443"  
acceptCount="100" debug="0" connectionTimeout="20000"  
useURIValidationHack="false" disableUploadTimeout="true" />  
这里的port="8080"就是端口,咱们彻底能够用别的端口来代替,但不能是被系统占用的端口(0--1023),这里简单提一下。  
下面咱们再往下找,会发现如下的语句:  
</Context>  
</Host>  
咱们就应该找到这两个语句,若是不懂E文,您就认定这两个语句好了。而后咱们将该语句更改以下:  
</Context>  
<Context path="/myjsp" debug="0" docBase="e:/myjsp" reloadable="true">  
</Context>  
</Host>  
这里的path="/myjsp"就是咱们就配置的虚拟目录了,之后在地址栏中输入[url]http://localhost:8080/myjsp[/url]便可。而docBase="e:/myjsp" 则是机器本地路径,他们经过这个语句造成一个映射关系, 其它照抄。  
将上面的First.jsp文件放到e:/myjsp目录下,输入[url]http://localhost:8080/myjsp/First.jsp[/url],是否是有一种喜上眉梢的感受?  
在论坛里我见得最多的就是不少人不知道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目录中,暂且保存起来,未来备用。   再输入如下代码:   <HTML>   <HEAD>   <title>Reusing JavaBeans in JSP</title>   </HEAD>   <BODY>   <CENTER>   <TABLE BORDER=5>   <TR><TH CLASS="title">   Reusing JavaBeans in JSP</TABLE>   </CENTER>   <P>   <jsp:useBean id="test" class="hall.SimpleBean" />   <jsp:setProperty name="test" property="message" value="Hello WWW" />   <H1>Message: <I>   <jsp:getProperty name="test" property="message" />   </I></H1>   </BODY>   保存在咱们刚才创建的虚拟目录e:/myjsp下面,并命名为:BeanTest.jsp。   如今咱们应该将hall(包)目录放在哪儿呢?别急,咱们先在e:/myjsp下创建一个文件夹WEB-INF,而后再在WEB-INF下创建一个classes文件夹,最后将hall目录放到classes下,固然,hall下的字节码文件SimpleBean.class也一并要移过来,而SimpleBean.java就和BeanTest.jsp放到同一目录吧(能够不须要放的,本身试试)。   好了,大功告成了,从新启动机器(若是您试了好屡次都不行,这一步必定要作),在浏览器中输入:[url]http://localhost:8080/myjsp/BeanTest.jsp[/url],您看到了什么?呵,别告诉我您什么都没看到,那确定是您设置的问题了。   好了,文章写完了,我也只是一只菜鸟,因此有写的不许备的地方请多多指教。祝您jsp之旅一帆风顺!!!   Java学习 - 技术文章中心   初学者问的诸如:《怎样配置环境变量》《怎样运行Servlet》啊?这样的问题太多了,如今我写一个初学者入门必读,以便对初学者有指导做用!   首先是下载工具:   我建议初学者用Editplus+JDK,我以为若是用例如***,Eclipse,JCreator,虽然刚开始的时候比较方便,可是确使初学者门不知道怎样配置环境变量,   从而难以达到知其然,知其因此然的地步   能够经过以下地址下载:   Editplus(最新版本是v2.11):[url]http://count.skycn.com/softdown.php?id=3641&url=http://sc-http.skycn.net/down/epp211a_cn.exe[/url](要照注册码就本身找吧,网上不少的)   JDK(最新版本是Java2sdk1_4_2):[url]http://count.skycn.com/softdown.php?id=3116&url=http://sc-http.skycn.net/down/j2sdk-1_4_2-windows-i586.exe[/url](这是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就是解释命令,JVM把HelloWorld.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.0)[url]http://cvs.apache.org/builds/jakarta-tomcat-5/nightly/jakarta-tomcat-5-bin-20030725.zip[/url]   而后把这个压缩包解压到:   C:\Tomcat   而后再配置环境变量:   添加三个系统变量:   JAVA_HOME: C:\JDK   TOMCAT_HOME: C:\Tomcat   CLASSPATH: %JAVA_HOME%\lib;%TOMCAT_HOME%\lib   Tomcat的环境变量就配置完毕了,下面检验Tomcat是否可以运行:   在控制台中转到C:\Tomcat\bin这个目录,运行startup,而后回出现一个窗口,连跳一大串东西,最后表示Server已经运行   在浏览器中输入[url]http://localhost:8080[/url],出现欢迎界面,则表示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("<html><head><title>");   out.println("This is my first Servlet");   out.println("</title></head><body>");   out.println("<h1>Hello,World!</h1>");   out.println("</body></html>");   }   }   而后照样用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文件放在这个里面)   而后在浏览器中输入[url]http://localhost:8080/servlet/HelloWorld[/url],因而Server众望所归的报错了:Error 404--Not Found   怎么回事呢?   Servlet必须使用C:\Tomcat\webapps\ROOT\WEB-INF这个目录下面的web.xml文件进行注册,用EP打开这个web.xml文件,   在里面加入   <servlet>   <servlet-name>HelloWorld</servlet-name>   <servlet-class>HelloWorld</servlet-class>   </servlet>   <servlet-mapping>   <servlet-name>HelloWorld</servlet-name>   <url-pattern>/servlet/helloworld</url-pattern>   </servlet-mapping>   这样的结构   <servlet>   <servlet-name>HelloWorld</servlet-name>   <servlet-class>HelloWorld</servlet-class>   </servlet>   表示指定包含的servlet类.   而如下的结构   <servlet-mapping>   <servlet-name>HelloWorld</servlet-name>   <url-pattern>/servlet/HelloWorld</url-pattern>   </servlet-mapping>   表示指定HelloServlet应当映射到哪种URL模式。   在修改web.xml完毕事后,从新启动Server,而后再输入[url]http://localhost:8080/servlet/HelloWorld[/url],那么偌大一个Hello,World!等着你呢,恭喜你