??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成av人片天堂网无码】,国产a v无码专区亚洲av,国产成人不卡亚洲精品91http://www.tkk7.com/Yang/category/4650.html学?所以修性也.??a,??性之所有也.学则?否则? p|是因为放?不放弃就不会有失?zh-cnThu, 01 Mar 2007 15:37:09 GMTThu, 01 Mar 2007 15:37:09 GMT60Fill table by JavaBeanhttp://www.tkk7.com/Yang/articles/37073.html飞扬飞扬Thu, 23 Mar 2006 10:29:00 GMThttp://www.tkk7.com/Yang/articles/37073.htmlhttp://www.tkk7.com/Yang/comments/37073.htmlhttp://www.tkk7.com/Yang/articles/37073.html#Feedback0http://www.tkk7.com/Yang/comments/commentRss/37073.htmlhttp://www.tkk7.com/Yang/services/trackbacks/37073.html     And what should we do now? Must i use type-translate? if we do like this the work is so hard to do.Yes! maybe you can speak it out "JavaBean"!
     let me see the model:
     BeanUtilities.java
code:
     package skyey.snow.*;
     import  java.util.*;
     import  javax.servlet.http.*;
     import  org.apache.commons.beanutils.BeanUtilities;

/*Some utilities to populate beand, usually based on incoming request parameters. Requires three packages
*from the Apache Commons libarary: beanutils,collection and logging.To obtain these packages,see
*http://jakarta.apache.org/commons/.Also,the book's source code archive (see http://www.coreservlets.com/)
*contains links to all URLs mentioned in the book,including to the specific sections of the Jakarta Commons package.
*<p>
*Note that this class in the skeyey.snow.beans package,so must be installed in ..../package/beans/.
*/

public class BeanUtilities
{
/** Examines all of the request parameters to see if any catch a bean property(i.i.,a setXXX method)in the project.
*If so,the request parameter values is passed to that method.If the method expects an int,Integer,double,Double,or any
*of the other primitive or wrapper types,parsing and conversion is done automatically.If the request parameter value is *malformed(cannot be converted into the expected type),numeric properties are assigned zero and boolean properties
*are assigned false:no exception is thrown.
*/
 public static void populateBean(Object formBean,HttpServletRequest request)
   {
      populateBean(formBean,request.getParameterMap());
/**Populates a bean beased on a Map: Map keys are the bean property names;Map values are the bean property values.
*Type conversion is performed automatically as described above.
*/
   }
public static void populateBean(Object bean,Map propertyMap)
  {
     try
       { 
          BeanUtilities.populate(bean,propertyMap);
        }
     catch(Exception e)
        {// Empty catch.The two possible exceptions are java.lang.IllegalAccessException and java.lang.reflect.
         //InvocationTargetExcepton.In both cases,just skip the bean operation.
         }
  }
}

飞扬 2006-03-23 18:29 发表评论
]]>
JSP开发中的常用技?/title><link>http://www.tkk7.com/Yang/articles/31751.html</link><dc:creator>飞扬</dc:creator><author>飞扬</author><pubDate>Tue, 21 Feb 2006 02:42:00 GMT</pubDate><guid>http://www.tkk7.com/Yang/articles/31751.html</guid><wfw:comment>http://www.tkk7.com/Yang/comments/31751.html</wfw:comment><comments>http://www.tkk7.com/Yang/articles/31751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Yang/comments/commentRss/31751.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Yang/services/trackbacks/31751.html</trackback:ping><description><![CDATA[<P>    通过q段旉对JSP的学?觉得在JSP开发中有一些技巧是需要掌握的,所以自己写出来也是对自pD|间学习JSP的一个ȝ?<BR>   <FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #ffffff"> 在不同页面或者用户之间传输数?<BR>    <FONT color=#000000>对于在不同页面之间传输数据可以由以下的这些办法来实现: 1.把数据存在Session?2.通过Cookie;3.通过隐含表单把数据提交到下一个页?4.通过ServeltContext对象;5.通过Application对象;如果在不同的用户之间传输数据,常用的方法是:1.ServletContext对象;2.通过Application对象;3.通过文gpȝ或者是数据?<BR>eg:<BR>  和Session不同的是,Cookie是存在于客户端的.׃客户端可能考虑安全因素会禁止用Cookies,q样使用Cookie时可能会遇到ȝ.例如:<BR> <<A href='mailto:%@page contnetType="text/html;charset=gb2312" language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.* com.mypackage.doing.*" errorPage="" %'>%@page contnetType="text/html;charset=gb2312" language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.* com.mypackage.doing.*" errorPage="" %</A>><BR> <%<BR> Cookie cookie=new Cookie("lastLoginTime",new java.util.Date().toLocaleString());<BR> Response.addCookie(cookie);<BR>%><BR></FONT>p样就已经在客L讄了Cookie,你可以在<a href="getCookie.jsp">q个面中来dq个Cookie<BR>                                <!--getCookie.jsp--><BR><<A href='mailto:%@page contentType="text/html;charset=gb2312" language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*,com.mypackage,doing.*" errorPage=""%'>%@page contentType="text/html;charset=gb2312" language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*,com.mypackage,doing.*" errorPage=""%</A><BR><% <BR>  Cookie[]  cookies=request.getCookies();<BR>  for(int i=0;i<cookies.length;i++)<BR> {<BR>     Cookie c=cookies[i];<BR>     String name=c.getName();<BR>     if(name.equals("lastLoginTime"))<BR>        out.println("您上ơ的d旉?"+c.getValue());<BR> }<BR>%><BR><FONT color=#000000>在不同的面之间传输数据,则可以用一个简单的聊天室来说明.<BR><BR></FONT><FONT color=#0000ff> 创徏错误面</FONT><BR><FONT color=#808080> </FONT><FONT color=#000000>E序在运行是隑օ会出现错误和异常.当处理JSP面?遇到的异常分Z个基本类?<BR></FONT></FONT><FONT color=#000000> A.~译时候出?BR></FONT><FONT color=#000000> B.q行时出?BR></FONT><FONT color=#000000>如果~译时候出错那么会产生内部错误.(错误代码500).如果是在JSP~译完后发生错误,那就是运行时的错?如果我们不对错误面q行处理那么Ҏ不同的服务器׃出现非常不友好的界面.</FONT><BR> 国际化问?BR></FONT><FONT color=#000000> 要考虑一个真正意义的全球资源,WEB览器的内容会对每个接收到的用户来说都是易读?所以要考虑?q个问题.q有一个就是中文ؕ码的问题,至于q个你可以用一个编码函数来解决.例如:<BR>eg:<BR><%<BR>       String trans(String chi)<BR>        {<BR>              String result=null;<BR>              byte temp[];<BR>              try<BR>                { <BR>                     temp=chi.getBytes("iso-8859-1");<BR>                     result=new String(temp);<BR>                 }<BR>             catch(UnsupportedEncodingException e)<BR>                 {<BR>                       System.out.println("e.toString()");<BR>                  }         <BR>               <BR>         }<BR>%><BR>  </FONT><FONT color=#0000ff>JSP中的文g操作<BR>  JSP中上传文?/FONT></P><img src ="http://www.tkk7.com/Yang/aggbug/31751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Yang/" target="_blank">飞扬</a> 2006-02-21 10:42 <a href="http://www.tkk7.com/Yang/articles/31751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天学习到的散列?/title><link>http://www.tkk7.com/Yang/articles/23784.html</link><dc:creator>飞扬</dc:creator><author>飞扬</author><pubDate>Wed, 14 Dec 2005 02:42:00 GMT</pubDate><guid>http://www.tkk7.com/Yang/articles/23784.html</guid><wfw:comment>http://www.tkk7.com/Yang/comments/23784.html</wfw:comment><comments>http://www.tkk7.com/Yang/articles/23784.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Yang/comments/commentRss/23784.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Yang/services/trackbacks/23784.html</trackback:ping><description><![CDATA[<P><FONT size=4>今天在学习的时候用C一个散列表。在不是很了解的情况下百度了一下,了解了不,所以写下来作ؓ以后参考。何为散列表Q散列表Q又UCؓ哈希表,是线性表中一U重要的存储方式和检索方法。在散列表中Q可以对节点q行快速检索。散列表法的基本思想是:q点的关键码值决定结点的存储地址Q即以关键码值k变量Q通过一定的函数关系hQ称为散列函敎ͼQ计出对应的函数值h(k)来,这个D释ؓl点的存储地址Q将l点存入该地址中,索时Q根据要索的关键码|用同L散列函数计算出地址Q然后,到相应的地址中去获取要找的结Ҏ据。因此,散列表有一个重要特征:q_索的长度不直接依赖于表中元素的个数?<BR>---- 散列表最重要的一个指标是负蝲因子Q即散列表中l点数目与表中能容纳的ȝҎ的比|它描qC散列表的饱和E度Q负载因子越接近1.0Q内存的使用效率高Q元素的L旉长Q同P负蝲因子接q?.0Q元素的L旉短Q但内存的浪费越大。Hashtablecȝ省的负蝲因子?.75. <BR>        Hashtablec?<BR>---- HashtablecMؓ我们提供了散列表完整的功能,可以让我们很方便地构造和使用散列表,查询信息?<BR>---- 1.创徏散列表对?<BR><BR>---- Hashtablecȝ构造器主要有下面几UŞ式: <BR><BR>public Hashtable(int initialCapacity, float loadFactor)Q?BR>public Hashtable(int initialCapacity)Q?BR>public Hashtable()Q?BR>在本文的实例中,我们使用了最单的一U:<BR>Hashtable stockInfo = new Hashtable();<BR><BR>---- 2.充填数据 <BR>---- 当构造了Hashtable对象后,我们可以将数据填入该对象中Q以便以后查询。HashtablecL供了putҎ来完成数据的装填Q其原型如下Q?<BR><BR>---- public synchronized Object put(Object key, Object value)Q?<BR><BR>---- 3.查询数据 <BR><BR>---- 查询数据可以使用getҎQ其原型如下Q?<BR><BR>---- public synchronized Object get(Object key) <BR><BR>---- 4.其它常用的方?<BR><BR>public int size();<BR>//q回散列表中的结Ҏ?BR>public boolean isEmpty();<BR>//判断散列表是否ؓI?BR>public boolean containsValue(Object value);<BR>//判断散列表中是否含有某?BR>public synchronized boolean containsKey(Object key);<BR>//判断散列表中是否含有某个l点<BR>public synchronized void clear();<BR>//清空整个散列?BR>       StringTokenizerc?<BR>---- StringTokenizercȝ主要用途是字W串以定界符为界Q分析ؓ一个个的tokenQ可理解为单词)Q定界符可以自己指定?<BR>---- 构造器有下面几UŞ式: <BR><BR>public StringTokenizer(String str, <BR>String delim, boolean returnTokens);<BR>public StringTokenizer(String str, String delim);<BR>public StringTokenizer(String str);<BR>其中Qstr为需分析的字W串Qdelim为定界符Q?BR>Tokens描述是否定界符作ؓ一个token?BR><BR>---- 其它常用的方法有Q?<BR>public boolean hasMoreTokens() ;<BR>//判断字符串中是否q有token<BR>public String nextToken();// <BR>StringTokenizer对象的下一个token<BR>我们来看一个简单的注册面。我们通过name.jsp面把数据传递到login.jsp<BR>  (Name.jsp)<BR><%@ page contentType="text/html; charset=gb2312" %><BR><html><BR><head><BR><title>Register Page</title><BR></head></FONT></P> <P><FONT size=4><body><BR><form name="form1" action="login.jsp" method="post"><BR><p>Please input your name that you wanna registered:<BR><input type="text" name="name" value="abc"><br><BR><p>Sendding by this button:<BR><input type="submit" name="submit" value="Sendding"><BR></form><BR></body><BR></html><BR>然后提交到login.jsp<BR><%@ page contentType="text/html; charset=gb2312" %><BR><%@ import page="java.util.*" %><BR><html><BR><head><BR><title>login.jsp</title><BR></head></FONT></P> <P><FONT size=4><body><BR><%!<BR>   Hashtable hashtable=new Hashtable();<BR>   public synchronized void putName(String s)<BR>   {<BR>     hashtable.put(s,s);<BR>   }<BR>%><BR><%<BR>  String name=request.getParameter("name");<BR>  if(name==null)<BR>     {<BR>    name="";<BR>  }<BR>  byte b[]=name.getBytes("ISO-8859-1");<BR>  name=new String(b);<BR>  if(!(hashtable.containsKey(name)))<BR>   {<BR>     putName(name);<BR>  out.print("<br>"+"你已l注册成?);<BR>  out.print("<br>"+"你注册的名字?+name);<BR>   }<BR>   else<BR>   {<BR>    out.print("<br>"+"该名字已l存在,h换个名字?);<BR>   }<BR>%><BR></body><BR></html><BR></FONT></P><img src ="http://www.tkk7.com/Yang/aggbug/23784.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Yang/" target="_blank">飞扬</a> 2005-12-14 10:42 <a href="http://www.tkk7.com/Yang/articles/23784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat中的server.xml元素详解 http://www.tkk7.com/Yang/articles/22951.html飞扬飞扬Thu, 08 Dec 2005 02:40:00 GMThttp://www.tkk7.com/Yang/articles/22951.htmlhttp://www.tkk7.com/Yang/comments/22951.htmlhttp://www.tkk7.com/Yang/articles/22951.html#Feedback0http://www.tkk7.com/Yang/comments/commentRss/22951.htmlhttp://www.tkk7.com/Yang/services/trackbacks/22951.htmltomcat中的server.xml元素详解

元素?/SPAN>

属?/SPAN>

解释

server

port

指定一个端口,q个端口负责监听关闭tomcat的请?/SPAN>

shutdown

指定向端口发送的命o字符?/SPAN>

service

name

指定service的名?/SPAN>

Connector(表示客户端和service之间的连?/SPAN>)

port

指定服务器端要创建的端口Pq在q个端口监听来自客户端的h

minProcessors

服务器启动时创徏的处理请求的U程?/SPAN>

maxProcessors

最大可以创建的处理h的线E数

enableLookups

如果?/SPAN>trueQ则可以通过调用request.getRemoteHost()q行DNS查询来得到远E客L的实际主机名Q若?/SPAN>false则不q行DNS查询Q而是q回?/SPAN>ip地址

redirectPort

指定服务器正在处?/SPAN>httph时收C一?/SPAN>SSL传输h后重定向的端口号

acceptCount

指定当所有可以用的处理h的线E数都被使用Ӟ可以攑ֈ处理队列中的h敎ͼ过q个数的h不予处?/SPAN>

connectionTimeout

指定时的时间数(以毫Uؓ单位)

Engine(表示指定service中的h处理机,接收和处理来?/SPAN>Connector的请?/SPAN>)

defaultHost

指定~省的处理请求的L名,它至与其中的一?/SPAN>host元素?/SPAN>name属性值是一L

Context(表示一?/SPAN>web应用E序Q通常?/SPAN>WAR文gQ关?/SPAN>WAR的具体信息见servlet规范)

docBase

应用E序的\径或者是WAR文g存放的\?/SPAN>

path

表示?/SPAN>web应用E序?/SPAN>url的前~Q这栯求的url?/SPAN>http://localhost:8080/path/****

reloadable

q个属性非帔R要,如果?/SPAN>trueQ则tomcat会自动检应用程序的/WEB-INF/lib ?/SPAN>/WEB-INF/classes目录的变化,自动装蝲新的应用E序Q我们可以在不重?/SPAN>tomcat的情况下改变应用E序

host(表示一个虚拟主?/SPAN>)

name

指定L?/SPAN>

appBase

应用E序基本目录Q即存放应用E序的目?/SPAN>

unpackWARs

如果?/SPAN>trueQ则tomcat会自动将WAR文g解压Q否则不解压Q直接从WAR文g中运行应用程?/SPAN>

Logger(表示日志Q调试和错误信息)

className

指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口

prefix

指定log文g的前~

suffix

指定log文g的后~

timestamp

如果?/SPAN>trueQ则log文g名中要加入时_如下?/SPAN>:localhost_log.2001-10-04.txt

Realm(表示存放用户名,密码?/SPAN>role的数据库)

className

指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口

Valve(功能?/SPAN>Logger差不多,?/SPAN>prefix?/SPAN>suffix属性解释和Logger 中的一?/SPAN>)

className

指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValvecd以记录应用程序的讉K信息

directory

指定log文g存放的位|?/SPAN>

pattern

有两个|common方式记录q程L名或ip地址Q用户名Q日期,W一行请求的字符ԌHTTP响应代码Q发送的字节数?/SPAN>combined方式?/SPAN>common方式记录的值更?/SPAN>

元素
它代表整个容?是Tomcat实例的顶层元?由org.apache.catalina.Server接口来定?它包含一?SERVICE>元素.q且它不能做ZQ何元素的子元?

1>className指定实现org.apache.catalina.Server接口的类.默认gؓorg.apache.catalina.core.StandardServer
2>port指定Tomcat监听shutdown命o端口.l止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命o.该属性是必须?
3>shutdown指定l止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字W串.该属性必设|?/P>

元素
该元素由org.apache.catalina.Service接口定义,它包含一?ENGINE>元素,以及一个或多个,q些Connector元素׃n用同一个Engine元素



W一?SERVICE>处理所有直接由Tomcat服务器接收的web客户h.
W二?SERVICE>处理所有由Apahce服务器{发过来的Web客户h

1>className 指定实现org.apahce.catalina.Service接口的类.默认为org.apahce.catalina.core.StandardService
2>name定义Service的名?/P>

元素
每个Service元素只能有一个Engine元素.元素处理在同一?SERVICE>中所?CONNECTOR>元素接收到的客户h.由org.apahce.catalina.Engine接口定义.

1>className指定实现Engine接口的类,默认gؓStandardEngine
2>defaultHost指定处理客户的默认主机名,?ENGINE>中的子元素中必须定义q一L
3>name定义Engine的名?/P>

?ENGINE>可以包含如下元素, , ,

元素
它由Host接口定义.一个Engine元素可以包含多个元素.每个的元素定义了一个虚拟主?它包含了一个或多个Web应用.

1>className指定实现Host接口的类.默认gؓStandardHost
2>appBase指定虚拟L的目?可以指定l对目录,也可以指定相对于的相对目?如果没有此项,默认?CATALINA_HOME>/webapps
3>autoDeploy如果此项设ؓtrue,表示Tomcat服务处于q行状态时,能够监测appBase下的文g,如果有新有web应用加入q来,会自q发布这个WEB应用
4>unpackWARs如果此项讄为true,表示把WEB应用的WAR文g先展开为开攄录结构后再运?如果设ؓfalse直接运行ؓWAR文g
5>alias指定L别名,可以指定多个别名
6>deployOnStartup如果此项设ؓtrue,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用.如果Web应用中的server.xml没有相应?CONTEXT>元素,采用Tomcat默认的Context
7>name定义虚拟L的名?/P>

?HOST>元素中可以包含如下子元素
, , ,


元素
它由Context接口定义.是用最频繁的元?每个可以包含多个元素.每个web应用有唯一
的一个相对应的Context代表web应用自n.servlet容器为第一个web应用创徏一?BR>ServletContext对象.

1>className指定实现Context的类,默认为StandardContextc?BR>2>path指定讉KWeb应用的URL入口,注意/myweb,而不是myweb了事
3>reloadable如果q个属性设为true, Tomcat服务器在q行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文g的改q?如果监视到有class文g被更?服务器自重新加蝲Web应用
3>cookies指定是否通过Cookies来支持Session,默认gؓtrue
4>useNaming指定是否支持JNDI,默认gؓ了true


?CONTEXT>元素中可以包含如下元?BR>, , ,

Connector元素
由Connector接口定义.元素代表与客L序实际交互的lg,它负责接收客戯?以及向客戯回响应结?


W一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTPh;W二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发q来的请?

Connector元素q属?BR>1>className指定实现Connector接口的类
2>enableLookups如果设ؓtrue,表示支持域名解析,可以把IP地址解析Z机名.WEB应用中调用request.getRemoteHostҎq回客户Z机名.默认gؓtrue
3>redirectPort指定转发端口.如果当前端口只支持non-SSLh,在需要安全通信的场?把客户h转发至SSL的redirectPort端口
HttpConnector元素的属?BR>1>className实现Connector的类
2>port讑֮Tcp/IP端口,默认gؓ8080,如果?080Ҏ80,则只要输?A href="http://localhost/">http://localhost卛_
因ؓTCP/IP的默认端口是80
3>address如果服务器有二个以上ip地址,此属性可以设定端口监听的ip地址.默认情况?端口会监听服务器上所有的ip地址
4>bufferSize讑֮q口创建的输入的~存大小.默认gؓ2048byte
5>protocol讑֮Http协议,默认gؓHTTP/1.1
6>maxThreads讑֮在监听端口的U程的最大数?q个g军_了服务器可以同时响应客户h的最大数?默认gؓ200
7>acceptCount讑֮在监听端口队列的最大客戯求数?默认gؓ10.如果队列已满,客户必须{待.
8>connectionTimeout定义建立客户q接时的时?如果?1,表示不限制徏立客戯接的旉
JkConnector的属?BR>1>className实现Connector的类
2>port讑֮AJP端口?BR>3>protocol必须讑֮为AJP/1.3



飞扬 2005-12-08 10:40 发表评论
]]>
Tomcat中文手册http://www.tkk7.com/Yang/articles/22950.html飞扬飞扬Thu, 08 Dec 2005 02:37:00 GMThttp://www.tkk7.com/Yang/articles/22950.htmlhttp://www.tkk7.com/Yang/comments/22950.htmlhttp://www.tkk7.com/Yang/articles/22950.html#Feedback0http://www.tkk7.com/Yang/comments/commentRss/22950.htmlhttp://www.tkk7.com/Yang/services/trackbacks/22950.html

Tomcat中文手册

(来源Qwww.qcsky.net)
Jakarta-Tomcat 明中文版用户指南W一部分

本文档提供关于Tomcat的基信息.主要内容如下:
Tomcat二进制版本安?BR>与Tomcat相关的脚本的主要内容
与server.xml相关的主要内?Tomcat的主要配|文?BR>如何讄Tomcat与宿主web服务器一起工作的说明
如何应用Tomcat配置一个现实中的web站点
希望此文档以新用户可以开始用Tomcat.如找不到某方面的内容?按以下顺?
查找Tomcat faq
查找Tomcat包宓?BR>向Tomcat用户邮g列表发出问题
如此疑问的答案不存在,我们鼓励把对疑问的解{放入Tomcat faq或此文档.如对此文档有意见或徏?请发送到Tomcat的邮件列?

Getting Started
Tomcat是一个带有jsp环境的servlet容器.servlet容器是一个根据用L行ؓ可以理和激zservlet的运行时的shell.
_略地可以将servlet容器分ؓ如下几类:

独立的servlet容器
内置有web服务器的一部分.指当使用ZJava的web服务器的情Ş,例如servlet容器是JavaWebServer的一个部? 独立的servlet容器是Tomcat的默认模?
大多数的web服务器ƈ非基于Java,因此,我们可以得出如下两种容器的模?


q程内的servlet容器
servlet容器作ؓweb服务器的插g和Java容器的实?Web服务器插件在内部地址I间打开一个JVM(java virtual machine)使Java容器得以在内部运?如有某个需要调用servlet的请?,插g取得对此请求的控制q将他传?使用JNI)lJava容器.q程内容器对于多U程,单进E的服务器非常合适ƈ且提供很好的q行速度,但׾~性有所不.


q程外的servlet容器
servlet容器q行于web服务器之外的地址I间且作为web服务器的插g和Java容器的实现的l合.web服务器插件和Java容器 JVM使用IPC机制(通常是TCP/IP)q行通讯.当一个调用servlet的请求到达时,插g取得对此请求的控制q将其传?使用IPC{?lJava容器,q程外容器的反应旉或进E外容器引擎不如q程内容?但进E外容器引擎在许多其他可比的范围内更?伸羃?E_性等).
Tomcat既可作ؓ独立的容?主要是用于开发与调试)又可作ؓ对现有服务器的附?当前支持Apache,IIS和Netscape服务?.即Q何时候配|Tomcat你都必须军_如何应用?如选择W二或第三种模式,你还需要安装一个web服务器接?
Tomcat与Jserv有何区别?Tomcat是Jserv?
q是个常见的误解.Jserv是Servlet API2.0兼容q与Apache一起用的容器.Tomcat是一个完全重写的q与Servlet API2.2和JSP1.1兼容的容?
Tomcat使用了一些ؓJserv而写的代?特别是Jserv的Apache接口,但这是唯一的相同之?
怎样安装Tomcat的二q制版本?
非常?只需:
下蝲 zip/tar.gz M压羃文g,从http://jakarta.apche.org/download/binindex.html?
解压~此文g到某目录(?foo).会生成一子目?名ؓ”tomcat?
转换到”tomcat”目录设|一新的环境变量(TOMCAT_HOME)指向你安装的tomcat的目?BR>WIN32q_,键入:
“set TOMCAT_HOME=foo\tomcat?BR>Unixq_:
如是bash/sh环境, 键入:”TOMCAT_HOME=foo/tomcat;export TOMCAT_HOME?BR>如是tcsh环境, 键入:”setenv TOMCAT_HOME foo/tomcat?BR>讄环境变量JAVA_HOME指向你JDK的目?然后dJAVA解释器到你的PATH环境变量.
好了!现在可以q行TOMCATq作Z个独立的Servlet容器(模式一)
启动与关闭Tomcat
使用”bin”目录中的脚本启动与关闭Tomcat.
启动:
uinx:bin/startup.sh
win32:bin\startup
关闭:
unix:bin/shutdown.sh
win32:bin\shutdown
Tomcat目录l构
假设你已Tomcat解压,你已得到下列目录l构:
目录?-描述
bin
包含启动/关闭脚本
conf
包含不同的配|文?
包括 server.xml(Tomcat的主要配|文?和ؓ不同的Tomcat配置的web应用讄~省值的文gweb.xml
doc
包含各种Tomcat文档
lib
包含Tomcat使用的jar文g.unixq_此目录下的Q何文仉被加到Tomcat的classpath?
logs
Tomcat摆放日志文g的地?
src
ServletAPI源文?先别高兴,q些只有些必dServlet容器内实现的I接口和抽象c?
webapps
包含web目CZ
此外你可以Tomcat会创建如下目?
work
Tomcat自动生成,攄Tomcatq行时的临时文g(如编译后的JSP文g).如在Tomcatq行时删除此目录.JSP面不能运?
classes
你可以创建此目录来添加一些附加的cdc\径中.M你加到此目录中的c都可在Tomcat的类路径中找到自w?
Tomcat的脚?BR>Tomcat是一个JavaE序,因此在设|好几个环境变量后即可用命o行的方式q行.然而设|Tomcat使用的每个环境变量和如下的命令行参数乏味且易?因此,Tomcat开发组提供了一些脚本启动和关闭Tomcat变得L.
注意:q些脚本仅仅是个便利的方法去启动和关闭Tomcat.你可修改他们来定制CLASSPATH,环境变量如PATH,LD_LIBRARY_PATH,{等,只要是生成一个正的命o行即?
q些脚本是什么呢?下表列出对一般用h重要的脚?
tomcat
主脚?讄合适的环境变量,包括CLASSPATH,TOMCAT_HOME和JAVA_HOME和用适合的命令行参数启动Tomcat

startup

在后台启动Tomcat.”tomcat start”命令的替换方式

shutdown

关闭Tomcat.”tomcat stop”命令的替换方式


对用h重要的脚本是tomcat(tomcat.bat/tomcat.sh).其他Tomcat相关的脚本作Z个简单的面向单Q务的指向Tomcat脚本(讄不同的命令行参数{?的入?


仔细考察tomcat.bat/tomcat.sh,它按以下步骤q行:

在Unix下的步骤Q?/P>

如未指定,推测 TOMCAT_HOME

如未指定,推测 JAVA_HOME

讄CLASS_PATH包含:

1.${TOMCAT_HOME}/classes目录(如果存在)

2.${TOMCAT_HOME}/lib的一切内?/P>

3.${JAVA_HOME}/lib/tools.jar(此jar文g包含工具javac,我们需要javac处理jsp文g.


q行带有讑֮Java环境变量的命令行参数的java命o,调入tomcat.home,和org.apache.tomcat.startup.Tomcat 作ؓ启始c?同时也传递命令行参数到org.apache.tomcat.startup.Tomcat ,例如:


执行start/stop/run {的操作

此Tomcatq程使用指向server.xml的\?

例如server.xml攄于etc/server_1.xmlq且用户意图在后台启动apache,?入如下命令行:

bin/tomcat.sh start –f /etc/server_1.xml

在Win32下的步骤Q??


由此可见,win32版的tomcat.bat与Unix版的几乎一?其在它不推TOMCAT_HOME和JAVA_HOME的?q且不将所有的jar文g攑օc\径中.


Tomcat的配|文?/P>

Tomcat的配|基于两个配|文?

1.server.xml - Tomcat的全局配置文g

2.web.xml - 在Tomcat中配|不同的关系环境


q一部分讲q如何用这些文?我们不会包含web.xml的内部机?q些内部机制深入CServlet API的细?因此,我们讨论涵盖servler.xml内容及web.xml在Tomcat关系环境中的用法.


server.xml

server.xml是Tomcat的主配置文g.完成两个目标:

1 提供Tomcatlg的初始配|?

2 说明Tomcat的结?含义,使得Tomcat通过实例化组件完成v动及构徏自n, 如在server.xml所指定?/P>

下表描述server.xmlU的重要元素:


元素及其描述

Server
server.xml文g中最重要的元?Server定义了一个Tomcat服务?一般你不用对他担心太多.Server元素能包含Logger和ContextManager元素cd

Logger
此元素定义一个Logger对象,每个Logger都有一个名字去标识,也有一个纪录Logger的输出和冗余U别(描述此日志?和包含日志文件的路径.通常有servlet的Logger(ServletContext.log()?,JSP和Tomcatq行时的Logger.

ContextManager
ContextManager说明一套ContextInterceptor, RequestInterceptor , Context和他们的Connectors的配|及l构.ContextManager有几个随同提供的Ҏ?
1. 用来U录调试信息的调试?
2. webapps/,conf/,logs/和所有已定义的环境的基本位置.用来使Tomcat可以在TOMCAT_HOME外的其他目录启动.
3. 工作目录的名?/P>

ContextInterceptor&RequestInterceptor
q些侦听?interceptors)侦听具体发生在ContextManager中的事g.例如,ContextInterceptor侦听Tomcat的启动及l止事g,RequestInterceptor监视在它服务q程中用戯求需要通过的不同阶D?Tomcat的管理员不必知道太多关于侦听器的知识;另外,开发者应该知道这是如何在Tomcat中实C个”全局”型的操?例如安全性及每个h日志)

Connector
Connector表示一个到用户的联?不管是通过web服务器或直接到用h览器(在一个独立配|中).Connector负责理Tomcat的工作线E和 ??q接C同用L端口?h/响应.Connector的配|包含如下信?

1.句柄c?/P>

2.句柄监听的TCP/IP端口

3.句柄服务器端口的TCP/IP的backlog.

E后我们在此文档中描述如何配置Connector.

Context
每个Context提供一个指向你攄你Web目的Tomcat的下属目录。每个Context包含如下配置Q?/P>

1. Context攄的\?可以是与ContextManagerȝ录相关的路径.

2.U录调试信息的调试?/P>

3.可重载的标志.开发Servlet?重蝲更改后的Servlet,q是一个非怾利的Ҏ?你可以调试或用Tomcat试C码而不用停止或重新启动Tomcat.要打开重蝲,把reloadable设ؓ真即?q虽p旉但可所发生的变?更重要的?鉴于,在一个装载类对象装入一个新的servlet?c装载触发器可能会掷Z些错?为避免这些问?你可以设|可重蝲为假,q将停止重蝲功能.


 

从另一个目录中启动Tomcat

作ؓ~省值将使用TOMCAT_HOME/conf/server.xml作ؓ配置文g.~省配置用TOMCT_HOME作ؓ关系环境的基.

使用 ?f/你的/目录/server.xml”选项你可改变q种情况,使用另一个服务器配置文g和设|关pȝ境管理器的目录属性你需要在ȝ录内讄以下几个文g:

Ø 一?webapps/目录(如果你已生成) ?所有war文g奖杯界压倒此目录而且所有子目录作为关pȝ境添?

Ø conf/目录 - 你可保存一个特D的web.xml文g和其他配|文?/P>

Ø logs/ - 所有日志文件将代替TOMCAT_HOME/logs/U录到此目录?/P>

Ø work/ - 关系环境的工作目?/P>

如server.xml中的ContextManager.home属性有兌,关联到到当前工作目?

web。xml

关于web。xml和web目l构Q包括目录服务及配置Q的详细描述可在Servlet API Spec的第9Q?0Q?4章中扑ֈ?/P>

然而有一个与Tomcat有关的小“特性“与web.xml有关。Tomcat可以让用户通过缺省的web.xml攑օconf目录中来定义所有关pȝ境的web.xml的缺省?建立一个新的关pȝ境时,Tomcat使用~省的web.xml文g作ؓ基本讄和应用项目特定的web.xml(攑֜应用目的WEB-INF/web.xml文g)来覆盖这些缺省?

讄Tomcat与Apache Web 服务?/P>

服务?/P>

到现在ؓ?我们未讨Z为服务器扩展的Tomcat,只讨Z作ؓ独立q行的服务器.但有一些问题需要说?

1. 当处理静态页面时,Tomcat不如Apacheq?

2. Tomcat不象Apache一样可配置.

3. Tomcat不象Apache一样强?

4. 有很多网站已在某一特定web server上投入了很长旉,例如,使用CGI脚本/Server API模组/perl/php…我们不能假设这些遗留下来的东西都会被丢?

Z以上原因,一个现实的|站使用一个Web服务?如Apache,为网站的静态页面请求提供服?q用Tomcat作ؓ一个Servlet/JSP插g.

我们不准备深入的讨论每个不同的配|?我们?

1. 늛Web服务器的基本行ؓ

2. 解释需要何U配|?/P>

3. 在Apache上的实例


Web 服务器操?/P>


单说来,web服务器L{待来自客户端的HTTPh。当h到达Ӟ服务器会提供一切必要的内容来满xh。加入一个Servlet容器某种E度上会改变此行为。但服务器仍需处理如下因素Q?/P>

载入servlet容器接口库ƈ初始化(处理h之前Q?/P>

当收C个请求时Q检查是否属于某ServletQ如是,则接口库接收此请求ƈ处理?/P>

另一斚wQ接口库需要知道他服务某U请求,通常是基于请求的URL的某U模式和此h导向何处?/P>

当用h要设|用虚拟主机的配置Ӟ事情会变得更加复杂,或者想多个开发者在一个服务器上进行开发但使用不同的Servlet容器的JVMs。以下我们将讨论q两个问题?/P>


必需q行的配|?/P>


应该考虑的是最明显的配|是servlet URLh对servlet容器中的servleth表示的责仅R很明显Q你必须知道传递什么到Servlet容器。我们仍需提供附加的配|项目到web-server或servlet-container的结合体?

l 考虑到Tomcatq程是否可取得,我们仍需提供配置和Tomcat正在监听的TCP/IP L?端口受?/P>

l 需要告知web服务器接口库的位|(因此我们可以在v始时装入Q?/P>

l 需要设|接口内部信息如日志记录在何处和如何纪录,{等?/P>

所有此cM息必d现在web服务器配|里或被接口使用的私有配|文件中。下面将讲述如何在Apache中如何实现这些配|?/P>


Apache上的实现

q一部分演示如何配置Apache与Tomcat一起工作;q试图解释深入到可能会用到的配置规范。在jserv 安装上可找到其他信息?



飞扬 2005-12-08 10:37 发表评论
]]>
Tomcat 4.0+apache 1.3完美整合http://www.tkk7.com/Yang/articles/22949.html飞扬飞扬Thu, 08 Dec 2005 02:36:00 GMThttp://www.tkk7.com/Yang/articles/22949.htmlhttp://www.tkk7.com/Yang/comments/22949.htmlhttp://www.tkk7.com/Yang/articles/22949.html#Feedback0http://www.tkk7.com/Yang/comments/commentRss/22949.htmlhttp://www.tkk7.com/Yang/services/trackbacks/22949.htmlTomcat 4.0+apache 1.3完美整合

板桥里h jdon.com 2001/10

1.Tomcat~省的jsp文g必须攄在examples目录?Njsp文g只能攑֜examples下吗Q?BR>2. 讉Kjsp只能用xxxx.com:8080讉K?

本文讨论如何l合Tomcat和Apache及其他脚本程序如PHP混合使用情况,如果一台服务器只运行jsp,那解军_法很?只要?EM>server.xml?080端口Ҏ80可?或将apache中的httpd.conf?0Ҏ8080也可?可以参? Using Apache Tomcat 4

Tomcat 3.23中很好做,相关文章介绍不少,Tomcat 4.0׃一样了,本hl过试验,摸烦册两个问题的简单方?q种方式可以和apachel合在一?假设域名L是sign.jdon.com 可以实现http://sign.jdon.com/讉K所有JSP文g,q一l果是很多朋友希望达到的,我下面介l一?

分两? 配置server.xml ?配置httpd.conf:

配置server.xml
首先介绍一下tomcat conf下的server.xml 我们的动作主要是在这里面操作:
server.xml有两部分l成:
1. service=Tomcat-Standalone q是Tomcat标准启动服务,使用端口8080讉K
2. service=Tomcat-Apache q是和apache整合部分,使用80008端口讉K ,同时需要在httpd.conf中加载mod_webapp.so

在上面两个serviceD中加入(在哪个service加入取决于你需要是以sign.jdon.com:8080 q是以sign.jdon.com/讉K):
我们是想以后者访?在service=Tomcat-Apache中加?

<Host name="虚拟L域名" debug="0" appBase="应用基本目录" unpackWARs="true">
<Context path="容器URL路径" docBase="容器目录" debug="0" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="自己的log文g?" suffix=".txt"
timestamp="true"/>
</Context> </Host>



1. reloadable="true"保你每ơ上传bean或servlet到WEB-INF/classes?pȝ自动装蝲最新的.

2. docBase="" 是你自己jsp目录的实际位|?Q如果是winNT, 可以是c:/jserv

3. Logger 是用来将/jserv的启动状态单独输Z个log文g?q里是localhost_jserv_log,q个文g在Tomcat 的logs目录下。可以用来监视你?jserv启动了没有?/P>

4.Ơ缺servlet或bean是放|在自己目录下的WEB-INF/classes中,你将eamples目录下的WEB-INF原封不动的拷贝过来,省事。你要修改这?׃改web.xml q些 上面推荐的英文文章中有介l?

我的server.xml是这?

<Service name="Tomcat-Apache">

<Connector className="org.apache.catalina.connector.warp.WarpConnector"
port="8008" minProcessors="5" maxProcessors="75"
enableLookups="true"
acceptCount="10" debug="0"/>

<!-- Replace "localhost" with what your Apache "ServerName" is set to -->
<Engine className="org.apache.catalina.connector.warp.WarpEngine"
name="Apache" debug="0" appBase="webapps">

<!-- Global logger unless overridden at lower levels -->
<Logger className="org.apache.catalina.logger.FileLogger" prefix="apache_log." suffix=".txt" timestamp="true"/>

<!-- Because this Realm is here, an instance will be shared globally -->
<Realm className="org.apache.catalina.realm.MemoryRealm" />

<!--下面是我加入?->
<Host name="sign.jdon.com" debug="0" appBase="/home/bqlr" unpackWARs="true">
<Context path="/" docBase="/home/bqlr/sign" debug="0" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="jdon.com_log." suffix=".txt"
timestamp="true"/>
</Context>
</Host>

</Engine>

</Service>

 

配置httpd.conf

讑֮sign.jdon.com 对应我的目录/home/bqlr/sign/ sign.jdon.com是虚拟主机名,我的部vҎ可以为特定虚拟主机域名提供JSP功能:
在自qapache 的conf下的httpd.conf加入:

LoadModule webapp_module libexec/mod_webapp.so
AddModule mod_webapp.c
WebAppConnection conn warp sign.jdon.com:8008

<VirtualHost 61.119.57.108>
ServerAdmin webmaster@jdon.com
DocumentRoot /home/bqlr/sign
ServerName sign.jdon.com
# WebAppDeploy examples conn /examples/
WebAppDeploy sign conn /
</VirtualHost>

 

1.本方法是适合apache 1.3版本?适合glibc2.1 我在RedHat 7.2 7.1 7.0 6.2 6.1都测试通过

2.如果你的linux安装的是glibc2.1 p自己下蝲mod_webapp.src自己~译Q编译前Q要先安装其目录下的APR.
q里是我~译好正在用的 mod_webapp.so ,可以下蝲直接copy到apache的libexec目录?/P>

3.使用httpd configtest 试httpd.conf可否启动,如果出现无效LoadModule提示 是因Z的apache没有使用module=so~译,重新~译apache |络上其他有介绍.

4.?home/bqlr/sign下安装WEB-INF/classes目录 最单的办法是copy -R tomcat/wepapps/examples/WEB-INF ?home/bqlr/sign?以后自己~译的bean或servlet攑֜q个目录?以后我有I?我公布我的jsp/bean的编ED?

最?重新启动Tomcat ?apache 你可以用sign.jdon.com讉K所有的Jsp 和servlet?



飞扬 2005-12-08 10:36 发表评论
]]>
Tomcat中文手册http://www.tkk7.com/Yang/articles/22948.html飞扬飞扬Thu, 08 Dec 2005 02:34:00 GMThttp://www.tkk7.com/Yang/articles/22948.htmlhttp://www.tkk7.com/Yang/comments/22948.htmlhttp://www.tkk7.com/Yang/articles/22948.html#Feedback0http://www.tkk7.com/Yang/comments/commentRss/22948.htmlhttp://www.tkk7.com/Yang/services/trackbacks/22948.html

Tomcat中文手册

(来源Qwww.qcsky.net)
Jakarta-Tomcat 明中文版用户指南W一部分

本文档提供关于Tomcat的基信息.主要内容如下:
Tomcat二进制版本安?BR>与Tomcat相关的脚本的主要内容
与server.xml相关的主要内?Tomcat的主要配|文?BR>如何讄Tomcat与宿主web服务器一起工作的说明
如何应用Tomcat配置一个现实中的web站点
希望此文档以新用户可以开始用Tomcat.如找不到某方面的内容?按以下顺?
查找Tomcat faq
查找Tomcat包宓?BR>向Tomcat用户邮g列表发出问题
如此疑问的答案不存在,我们鼓励把对疑问的解{放入Tomcat faq或此文档.如对此文档有意见或徏?请发送到Tomcat的邮件列?

Getting Started
Tomcat是一个带有jsp环境的servlet容器.servlet容器是一个根据用L行ؓ可以理和激zservlet的运行时的shell.
_略地可以将servlet容器分ؓ如下几类:

独立的servlet容器
内置有web服务器的一部分.指当使用ZJava的web服务器的情Ş,例如servlet容器是JavaWebServer的一个部? 独立的servlet容器是Tomcat的默认模?
大多数的web服务器ƈ非基于Java,因此,我们可以得出如下两种容器的模?


q程内的servlet容器
servlet容器作ؓweb服务器的插g和Java容器的实?Web服务器插件在内部地址I间打开一个JVM(java virtual machine)使Java容器得以在内部运?如有某个需要调用servlet的请?,插g取得对此请求的控制q将他传?使用JNI)lJava容器.q程内容器对于多U程,单进E的服务器非常合适ƈ且提供很好的q行速度,但׾~性有所不.


q程外的servlet容器
servlet容器q行于web服务器之外的地址I间且作为web服务器的插g和Java容器的实现的l合.web服务器插件和Java容器 JVM使用IPC机制(通常是TCP/IP)q行通讯.当一个调用servlet的请求到达时,插g取得对此请求的控制q将其传?使用IPC{?lJava容器,q程外容器的反应旉或进E外容器引擎不如q程内容?但进E外容器引擎在许多其他可比的范围内更?伸羃?E_性等).
Tomcat既可作ؓ独立的容?主要是用于开发与调试)又可作ؓ对现有服务器的附?当前支持Apache,IIS和Netscape服务?.即Q何时候配|Tomcat你都必须军_如何应用?如选择W二或第三种模式,你还需要安装一个web服务器接?
Tomcat与Jserv有何区别?Tomcat是Jserv?
q是个常见的误解.Jserv是Servlet API2.0兼容q与Apache一起用的容器.Tomcat是一个完全重写的q与Servlet API2.2和JSP1.1兼容的容?
Tomcat使用了一些ؓJserv而写的代?特别是Jserv的Apache接口,但这是唯一的相同之?
怎样安装Tomcat的二q制版本?
非常?只需:
下蝲 zip/tar.gz M压羃文g,从http://jakarta.apche.org/download/binindex.html?
解压~此文g到某目录(?foo).会生成一子目?名ؓ”tomcat?
转换到”tomcat”目录设|一新的环境变量(TOMCAT_HOME)指向你安装的tomcat的目?BR>WIN32q_,键入:
“set TOMCAT_HOME=foo\tomcat?BR>Unixq_:
如是bash/sh环境, 键入:”TOMCAT_HOME=foo/tomcat;export TOMCAT_HOME?BR>如是tcsh环境, 键入:”setenv TOMCAT_HOME foo/tomcat?BR>讄环境变量JAVA_HOME指向你JDK的目?然后dJAVA解释器到你的PATH环境变量.
好了!现在可以q行TOMCATq作Z个独立的Servlet容器(模式一)
启动与关闭Tomcat
使用”bin”目录中的脚本启动与关闭Tomcat.
启动:
uinx:bin/startup.sh
win32:bin\startup
关闭:
unix:bin/shutdown.sh
win32:bin\shutdown
Tomcat目录l构
假设你已Tomcat解压,你已得到下列目录l构:
目录?-描述
bin
包含启动/关闭脚本
conf
包含不同的配|文?
包括 server.xml(Tomcat的主要配|文?和ؓ不同的Tomcat配置的web应用讄~省值的文gweb.xml
doc
包含各种Tomcat文档
lib
包含Tomcat使用的jar文g.unixq_此目录下的Q何文仉被加到Tomcat的classpath?
logs
Tomcat摆放日志文g的地?
src
ServletAPI源文?先别高兴,q些只有些必dServlet容器内实现的I接口和抽象c?
webapps
包含web目CZ
此外你可以Tomcat会创建如下目?
work
Tomcat自动生成,攄Tomcatq行时的临时文g(如编译后的JSP文g).如在Tomcatq行时删除此目录.JSP面不能运?
classes
你可以创建此目录来添加一些附加的cdc\径中.M你加到此目录中的c都可在Tomcat的类路径中找到自w?
Tomcat的脚?BR>Tomcat是一个JavaE序,因此在设|好几个环境变量后即可用命o行的方式q行.然而设|Tomcat使用的每个环境变量和如下的命令行参数乏味且易?因此,Tomcat开发组提供了一些脚本启动和关闭Tomcat变得L.
注意:q些脚本仅仅是个便利的方法去启动和关闭Tomcat.你可修改他们来定制CLASSPATH,环境变量如PATH,LD_LIBRARY_PATH,{等,只要是生成一个正的命o行即?
q些脚本是什么呢?下表列出对一般用h重要的脚?
tomcat
主脚?讄合适的环境变量,包括CLASSPATH,TOMCAT_HOME和JAVA_HOME和用适合的命令行参数启动Tomcat

startup

在后台启动Tomcat.”tomcat start”命令的替换方式

shutdown

关闭Tomcat.”tomcat stop”命令的替换方式


对用h重要的脚本是tomcat(tomcat.bat/tomcat.sh).其他Tomcat相关的脚本作Z个简单的面向单Q务的指向Tomcat脚本(讄不同的命令行参数{?的入?


仔细考察tomcat.bat/tomcat.sh,它按以下步骤q行:

在Unix下的步骤Q?/P>

如未指定,推测 TOMCAT_HOME

如未指定,推测 JAVA_HOME

讄CLASS_PATH包含:

1.${TOMCAT_HOME}/classes目录(如果存在)

2.${TOMCAT_HOME}/lib的一切内?/P>

3.${JAVA_HOME}/lib/tools.jar(此jar文g包含工具javac,我们需要javac处理jsp文g.


q行带有讑֮Java环境变量的命令行参数的java命o,调入tomcat.home,和org.apache.tomcat.startup.Tomcat 作ؓ启始c?同时也传递命令行参数到org.apache.tomcat.startup.Tomcat ,例如:


执行start/stop/run {的操作

此Tomcatq程使用指向server.xml的\?

例如server.xml攄于etc/server_1.xmlq且用户意图在后台启动apache,?入如下命令行:

bin/tomcat.sh start –f /etc/server_1.xml

在Win32下的步骤Q??


由此可见,win32版的tomcat.bat与Unix版的几乎一?其在它不推TOMCAT_HOME和JAVA_HOME的?q且不将所有的jar文g攑օc\径中.


Tomcat的配|文?/P>

Tomcat的配|基于两个配|文?

1.server.xml - Tomcat的全局配置文g

2.web.xml - 在Tomcat中配|不同的关系环境


q一部分讲q如何用这些文?我们不会包含web.xml的内部机?q些内部机制深入CServlet API的细?因此,我们讨论涵盖servler.xml内容及web.xml在Tomcat关系环境中的用法.


server.xml

server.xml是Tomcat的主配置文g.完成两个目标:

1 提供Tomcatlg的初始配|?

2 说明Tomcat的结?含义,使得Tomcat通过实例化组件完成v动及构徏自n, 如在server.xml所指定?/P>

下表描述server.xmlU的重要元素:


元素及其描述

Server
server.xml文g中最重要的元?Server定义了一个Tomcat服务?一般你不用对他担心太多.Server元素能包含Logger和ContextManager元素cd

Logger
此元素定义一个Logger对象,每个Logger都有一个名字去标识,也有一个纪录Logger的输出和冗余U别(描述此日志?和包含日志文件的路径.通常有servlet的Logger(ServletContext.log()?,JSP和Tomcatq行时的Logger.

ContextManager
ContextManager说明一套ContextInterceptor, RequestInterceptor , Context和他们的Connectors的配|及l构.ContextManager有几个随同提供的Ҏ?
1. 用来U录调试信息的调试?
2. webapps/,conf/,logs/和所有已定义的环境的基本位置.用来使Tomcat可以在TOMCAT_HOME外的其他目录启动.
3. 工作目录的名?/P>

ContextInterceptor&RequestInterceptor
q些侦听?interceptors)侦听具体发生在ContextManager中的事g.例如,ContextInterceptor侦听Tomcat的启动及l止事g,RequestInterceptor监视在它服务q程中用戯求需要通过的不同阶D?Tomcat的管理员不必知道太多关于侦听器的知识;另外,开发者应该知道这是如何在Tomcat中实C个”全局”型的操?例如安全性及每个h日志)

Connector
Connector表示一个到用户的联?不管是通过web服务器或直接到用h览器(在一个独立配|中).Connector负责理Tomcat的工作线E和 ??q接C同用L端口?h/响应.Connector的配|包含如下信?

1.句柄c?/P>

2.句柄监听的TCP/IP端口

3.句柄服务器端口的TCP/IP的backlog.

E后我们在此文档中描述如何配置Connector.

Context
每个Context提供一个指向你攄你Web目的Tomcat的下属目录。每个Context包含如下配置Q?/P>

1. Context攄的\?可以是与ContextManagerȝ录相关的路径.

2.U录调试信息的调试?/P>

3.可重载的标志.开发Servlet?重蝲更改后的Servlet,q是一个非怾利的Ҏ?你可以调试或用Tomcat试C码而不用停止或重新启动Tomcat.要打开重蝲,把reloadable设ؓ真即?q虽p旉但可所发生的变?更重要的?鉴于,在一个装载类对象装入一个新的servlet?c装载触发器可能会掷Z些错?为避免这些问?你可以设|可重蝲为假,q将停止重蝲功能.


 

从另一个目录中启动Tomcat

作ؓ~省值将使用TOMCAT_HOME/conf/server.xml作ؓ配置文g.~省配置用TOMCT_HOME作ؓ关系环境的基.

使用 ?f/你的/目录/server.xml”选项你可改变q种情况,使用另一个服务器配置文g和设|关pȝ境管理器的目录属性你需要在ȝ录内讄以下几个文g:

Ø 一?webapps/目录(如果你已生成) ?所有war文g奖杯界压倒此目录而且所有子目录作为关pȝ境添?

Ø conf/目录 - 你可保存一个特D的web.xml文g和其他配|文?/P>

Ø logs/ - 所有日志文件将代替TOMCAT_HOME/logs/U录到此目录?/P>

Ø work/ - 关系环境的工作目?/P>

如server.xml中的ContextManager.home属性有兌,关联到到当前工作目?

web。xml

关于web。xml和web目l构Q包括目录服务及配置Q的详细描述可在Servlet API Spec的第9Q?0Q?4章中扑ֈ?/P>

然而有一个与Tomcat有关的小“特性“与web.xml有关。Tomcat可以让用户通过缺省的web.xml攑օconf目录中来定义所有关pȝ境的web.xml的缺省?建立一个新的关pȝ境时,Tomcat使用~省的web.xml文g作ؓ基本讄和应用项目特定的web.xml(攑֜应用目的WEB-INF/web.xml文g)来覆盖这些缺省?

讄Tomcat与Apache Web 服务?/P>

服务?/P>

到现在ؓ?我们未讨Z为服务器扩展的Tomcat,只讨Z作ؓ独立q行的服务器.但有一些问题需要说?

1. 当处理静态页面时,Tomcat不如Apacheq?

2. Tomcat不象Apache一样可配置.

3. Tomcat不象Apache一样强?

4. 有很多网站已在某一特定web server上投入了很长旉,例如,使用CGI脚本/Server API模组/perl/php…我们不能假设这些遗留下来的东西都会被丢?

Z以上原因,一个现实的|站使用一个Web服务?如Apache,为网站的静态页面请求提供服?q用Tomcat作ؓ一个Servlet/JSP插g.

我们不准备深入的讨论每个不同的配|?我们?

1. 늛Web服务器的基本行ؓ

2. 解释需要何U配|?/P>

3. 在Apache上的实例


Web 服务器操?/P>


单说来,web服务器L{待来自客户端的HTTPh。当h到达Ӟ服务器会提供一切必要的内容来满xh。加入一个Servlet容器某种E度上会改变此行为。但服务器仍需处理如下因素Q?/P>

载入servlet容器接口库ƈ初始化(处理h之前Q?/P>

当收C个请求时Q检查是否属于某ServletQ如是,则接口库接收此请求ƈ处理?/P>

另一斚wQ接口库需要知道他服务某U请求,通常是基于请求的URL的某U模式和此h导向何处?/P>

当用h要设|用虚拟主机的配置Ӟ事情会变得更加复杂,或者想多个开发者在一个服务器上进行开发但使用不同的Servlet容器的JVMs。以下我们将讨论q两个问题?/P>


必需q行的配|?/P>


应该考虑的是最明显的配|是servlet URLh对servlet容器中的servleth表示的责仅R很明显Q你必须知道传递什么到Servlet容器。我们仍需提供附加的配|项目到web-server或servlet-container的结合体?

l 考虑到Tomcatq程是否可取得,我们仍需提供配置和Tomcat正在监听的TCP/IP L?端口受?/P>

l 需要告知web服务器接口库的位|(因此我们可以在v始时装入Q?/P>

l 需要设|接口内部信息如日志记录在何处和如何纪录,{等?/P>

所有此cM息必d现在web服务器配|里或被接口使用的私有配|文件中。下面将讲述如何在Apache中如何实现这些配|?/P>


Apache上的实现

q一部分演示如何配置Apache与Tomcat一起工作;q试图解释深入到可能会用到的配置规范。在jserv 安装上可找到其他信息?



飞扬 2005-12-08 10:34 发表评论
]]>
我对于抽象类和接口的显理解http://www.tkk7.com/Yang/articles/19096.html飞扬飞扬Thu, 10 Nov 2005 02:55:00 GMThttp://www.tkk7.com/Yang/articles/19096.htmlhttp://www.tkk7.com/Yang/comments/19096.htmlhttp://www.tkk7.com/Yang/articles/19096.html#Feedback0http://www.tkk7.com/Yang/comments/commentRss/19096.htmlhttp://www.tkk7.com/Yang/services/trackbacks/19096.html怿接触qC++的h都知道在C++里有一个Vituralc,它就是和Java中等Labstractc,我们UC们ؓ抽象cR在C++中包含虚函数的类UCؓ虚基c?用Vicural关键字来表示。虚基类只能用于l承Q而不能创造虚基类的对象。虚函数是只有函数原型而没有函C的函敎ͼ它必dl承cM重新来定义。而在Java中是用abstract关键字来表示抽象cdҎ?BR>接口Q接口就是包含了一l抽象方法的抽象cRJava中不支持多重l承Q但支持多个接口。要实现接口必须用implements关键子?BR>抽象cL用来实现同一层次cM间的l承关系Q接口是用来实现不同层次cM间的l承关系?BR>eg:
package MyPackage
abstract class Customer   //定义Customerc?BR>{

   abstract String getName();
};
public interface Account           //定义了Account接口
{
   public float getBalance();
};
public interface Debit            //定义Debit接口
{
  public void deductAmout(float amt);
};
public interface Credit     //定义Credit接口
{
 public void addAmount(float amt);
};
public class CustomerAccount extends Customer implements Account Debit Credit
{
 public String getName()
 {
    //重写抽象cCustomer的方法getName()
 }
 public float getBalance()
   {
    //重写接口Account的方法getBalance()
  }
 public float deducAmount(float amt)
 {
   //重写接口Debit的方法deducAmount(float amt)
 }
public void addAmount(float amt)
 {
   //重写接口Credit的方法addAmount(float amt)
 }
};
定义了这些接口后可以在McM实现q些接口了,当然q只是我最为基的理解,怿在以后的学习和实践中会得到更为深ȝ认识?/FONT>

飞扬 2005-11-10 10:55 发表评论
]]>
վ֩ģ壺 ߹ۿһ| Ƭ߹ۿ| Ʒۺߵһ| ĻƵ| 㽶žžþþƷ| ŷղר| һƵ| ޹Ů޹| þþþþþƷͼƬ | 椸Ƶ߹ۿ| ձþһva| ޾Ʒվ| Դ°߹ۿ| 91Ƶ91| ޾Ʒ߹ۿ| ѿһëƬ| ݺady޾Ʒ| ҹ˾ƷӰ߹ۿ| һȫƵ| þƷww47| 99Ʒaѿ| ޾Ʒ߹ۿ| ձh߾Ʒѹۿ| ݺɫۺվɫ| 츾˾Ʒһ| ˳Ƶx8x8| ձ岻aվ| 㽶Ƶ| ԸŮƵ߹ۿѾƷ | ѹۿ| ɫվWWWĻ | þþƷվѹۿ| ˸һþ| ߾ƷһӰȷ| Ƶһ| ޾Ʒŷۺ| ˳ӰԺ밴Ħ| 91ƷѲ߹ۿ| avպƷþþþþa| ޾Ʒþþþþþþþþþ | ޾Ʒþþþ|