1.下载
http://www.eu.apache.org/dist/jakarta/tomcat-5/这里注意,在jakarta-tomcat-5.0.28.exe以前是有默认的admin模块,在jakarta-tomcat-5.5.9.exe则没有安装默认的admin模块,这时
http://127.0.0.1:8080/admin打开时则会出现Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it.
因此我们现在需要下载"admin"package 包
把jakarta-tomcat-5.5.x.zip 与 jakarta-tomcat-5.5.x-compat.zip 与 jakarta-tomcat-5.5.x-admin.zip
三个文件解压在同一个目录中
(如果使用jdk1.4,才需要compat.zip用jdk1.5就可以免了这个。)
2.修改jakarta-tomcat-5.5.x\conf\tomcat-users.xml.
添加管理员账号lizongbo,密码为lizongbopass.
新xml如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="lizongbo" password="lizongbopass" roles="admin,manager"/>
</tomcat-users>
有时在%CATALINA_HOME%\server\webapps\admin\WEB-INF\web.xml里面也要做些修改
<!-- Security is active on entire directory -->
<security-constraint>
<display-name>Tomcat Server Configuration Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<!-- Define the context-relative URL(s) to be protected -->
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.do</url-pattern>
<url-pattern>*.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- Anyone with one of the listed roles may access this area -->
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<!-- Login configuration uses form-based authentication -->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Tomcat Server Configuration Form-Based Authentication Area</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<!-- Security roles referenced by this web application -->
<security-role>
<description>
The role that is required to log in to the Administration Application
</description>
<role-name>admin</role-name>
</security-role>
无论是 Authetication ( 身份验证
还是 Authorization ( 权限管控 都只有设置相关的 admin ROLE, 当你想要新增或修改相关的 AA, 就必须修改这一个文件, 来符合你的环境.3.修改jakarta-tomcat-5.5.x\conf\server.xml来解决编码问题。
(给Connector 添加URIEncoding参数,参考
http://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx)(可以设置成GB18030)
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="200"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"
compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"/>
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="GBK"/>
4.启用支持gzip压缩.
(
http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&i=81169)添加下列属性
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
5.设置虚拟主机。
在jakarta-tomcat-5.5.x\下建立文件夹vhost\www.mydomain.com。
然后修改jakarta-tomcat-5.5.x\conf\server.xml
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="vhost/www.mydomain.com" name="
http://www.mydomain.com/"></Host>
<Host appBase="webapps" name="localhost">
</Host>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
</Engine>
6.添加数据库驱动,更新mail.jar和actiovation.jar
复制mysql-connector-java-3.0.16-ga-bin.jar,pg74.215.jdbc3.jar到 jakarta-tomcat-5.5.x\common\lib还有javamail 1.3.2的mail.jar,jaf-1_0_2的 activation.jar
msSQl 2000 JDBC sp3,msbase.jar,msutil,jar,mssqlserver.jar
7.配置SSL
参考
http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.htmlD:\j2sdk1.4.2_06\bin>%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
输入keystore密码: lizongbossl
您的名字与姓氏是什么?
[tomcat5.5.x]: tomcat5.5.x
您的组织单位名称是什么?
[jakarta]: jakarta
您的组织名称是什么?
[apache]: apache
您所在的城市或区域名称是什么?
[hzcity]: hzcity
您所在的州或省份名称是什么?
[gdp]: gdp
该单位的两字母国家代码是什么
[CN]: CN
CN=tomcat5.5.x, OU=jakarta, O=apache, L=hzcity, ST=gdp, C=CN 正确吗?
[否]: y
输入<tomcat>的主密码
(如果和 keystore 密码相同,按回车):
(必须密码一致,因此直接回车)
然后再把userhome(例如:C:\Documents and Settings\lizongbo\)下的.keystore复制到
tomcat的conf\目录下。
(例如:D:\jakarta-tomcat-5.5.x\conf\.keystore
配置jakarta-tomcat-5.5.x\conf\server.xml
加上
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/.keystore"
keystorePass="lizongbossl"> <!--与先前设置的密码一致-->
</Connector>
8.禁止文件目录列表,
修改jakarta-tomcat-5.5.x\conf\web.xml,把listing设置为false
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
9.指定了自己的javaEncoding
(参考
http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>javaEncoding</param-name>
<param-value>GB18030</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
10.添加rar,iso等的mime-type映射
避免在浏览器里直接打开。
<mime-mapping>
<extension>mht</extension>
<mime-type>text/x-mht</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rar</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>iso</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ape</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rmvb</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ico</extension>
<mime-type>image/x-icon</mime-type>
</mime-mapping>
10.1对html静态页面设置编码
<!-- 修改下面两行以支持静态超文本的自动编码
-->
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html;charset=gb2312</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=gb2312</mime-type>
</mime-mapping>
</web-app>
11.添加welcome-file-list,并调整顺序。
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
tyllr 发表于 >2005-5-24 7:37:34 [全文] [评论] [引用] [推荐] [档案] [推给好友]
2005-5-22
"包"机制是java中特有的,也是java中最基础的知识。一些初学java的朋友,通常象学其它语言一样从教材上copy一些程序来运行,可是却常常遇到莫名其妙的错误提示。这些问题事实上都出在对"包"的原理不够清楚。本文将就此问题进行深入阐述。
一、为什么java中要有"包"的概念?
以一言概之,java中"包"的引入的主要原因是java本身跨平台特性的需求。因为java中的所有的资源也是以文件方式组织,这其中主要包含大量的类文件需要组织管理。java中同样采用了目录树形结构。虽然各种常见操作系统平台对文件的管理都是以目录树的形式的组织,但是它们对目录的分隔表达方式不同,为了区别于各种平台,java中采用了"."来分隔目录。
二、java中包结构和平台的衔接
java中的资源存在于不同平台下时必然会有很大差异。因此跨平台的java包结构和平台之间必须通过一种方式来衔接到一起。事实上它们就是通过我们很熟悉的classpath的设置来衔接到一起的。举个例子:
我在Windows2000环境下的classpath设置如下:
classpath = d:\jdk1.4.2\lib\dt.jar; d:\cjm
类的衔接关系可以用下图来表达:
从图中可以看出,java中的类的组织是"悬空"的,这样的话,它们可以随意放在任意平台下,但是要在该平台下正确找到一个类,则必须使用classpath来设置类所在目录的前面一部分(即区别于平台的部分)。在java中常常把一棵类树压缩成一个.jar文件,如图中的rt.jar,这并不影响对类的查找,在指定环境变量时可以指定.jar文件所在目录,也可以具体指明.jar的完全查找路径,即上例中的classpath中也可描述成:
classpath = d:\jdk1.4.2\lib; d:\cjm
当正确设置了平台下的classpath环境变量时,java跨平台的特性就体现出来了。即你在编写程序中,描述一个类时,就不用具体指明它的完整路径,而是仅仅指明java中的类路径就可以了,即指出图1中竖线右边的查找路径就可以了。这样的话,你编写的程序拿到任何平台下时,只需要根据类文件的存放目录来书写相应的classpath环境变量,而不用因为类的存放环境变化而修改程序。
注意:java中对于某个类的查找是把classpath中的每一项逐一连接,当一个连接能够正确找到相关类后,便不再向后查找。
三、正确使用"包"
在使用包的过程中有很多需要注意的小细节,这里把常见的问题都列举如下:
1、对类路径的设置通常有两种方法:
i)在系统的环境变量中设置,设置方法依据平台而变;
ii)以命令参数的形式来设置。
如:javac -classpath d:\jdk1.4.2\libd:\cjm\edu\test\TestFile.java
java -classpath .;d:\jdk1.4.2\lib; d:\cjm edu.test.TestFile
注意:i)javac和java命令有很大区别,可以这样区分,javac是一个平台命令,它对具体的平台文件进行操作,要指明被编译的文件路径。而java是一个虚拟机命令,它对类操作,即对类的描述要用点分的描述形式,并且不能加扩展名,还要注意类名的大小写。
ii)有一个很奇怪的问题,即javac命令后面的classpath默认包含当前目录(符合windows的习惯),可是在java命令后面的classpath却不包含当前目录,所以在它的classpath中一定不能忘了加上当前目录的描述,即加上"."。
2、在java程序中对类路径的描述用"."分隔,而且也有当前目录的概念。如要运行图1中的TestFile必须指明为 edu.test.TestFile。但是如果在类TestFile中要调用和它在同一目录中的TestString,则不必指明目录前缀。
3、在java程序中所有使用到的类都应该清楚的指明这个类的查找路径。一般有两种方法指明:
i)在程序的开始使用import关键字指明。如类TestFile中要用到FileInputStream类,则在程序头中加入import java.io.FileReader; 或import java.io.*;
ii)在程序中用到FileFileReader类处直接写完整路径,如: java.io.FileFileReader fin = new java.io.FileReader(“filename”);
注意:java.lang包总是被默认导入的。
4、类的目录结构一定要和类中第一句"包声明"一致。如类TestFile.class对应的.java文件的第一句必须包含:package edu.test;
确保类的存放路径和类中指明的"包路径"一致的方法一般有两种:
i)编写.java文件时存放的目录事先确定好,如TestFile.java就直接放在edu\test目录下,然后用下面的语句编译:
javac -classpath d:\jdk1.4.2\libd:\cjm\edu\test\TestFile.java
当编译完成后,产生的TestFile.class文件会出现在编译命令中java文件的描述路径中。即出现在d:\test\edu\test中
ii)通过-d参数的使用来编译程序。如使用下面的语句来编译:
javac -d d:\cjm d:\temp\TestFile.java
将在-d后指定的目录d:\cjm下面自动按照packagek中指定的目录结构来创建目录,并且将产生的.class文件放在这个新建的目录下,即在d:\cjm下面建立\edu\test目录,然后产生的TestFile.class放在d:\cjm\edu\test目录下。
5、为了便于工程发布,可以将自己的类树打成.jar文件。如将图1中的edu下面的所有类文件打成一个.jar文件,可以先转到d:\cjm目录,再用下面的命令:
jar -cvf test.jar edu这时会在d:\test下产生一个test.jar文件,此.jar文件中包含edu\下的完整目录结构和文件。使用这个.jar文件时,只需在classpath中指明.jar文件的存放路径即可。
6、对其它资源的使用,如图标文件,文本等资源文件的使用必须要注意,查找资源文件不应从类文件所在的目录开始,而是应该从package指定的类路径的起点开始(图1中从edu所在目录开始)。如图1中看到的文本文件word.txt在resource下面,而类文件TestFile.class在edu\test下,在TestFile.class中要使用到resource中的word.txt,要按如下操作:
fin= new FileReader(“resource/word.txt”);
而不应该是:fin= new FileReader(“../../resource/word.txt”);
四、举例
本例用于统计一个文本文件中的单词数,注释中的编号对应前一节的编号:
// TestFile.java
package edu.test; // --------------------------------------- 4
import java.io.FileReader; // ------------------------------ 3
import java.io.LineNumberReader;
class TestFile{
public static void main(String []argv){
TestString ts = new TestString(); // ---------------- 2
FileReader fin;
LineNumberReader line = null;
int wordNum = 0;
try{
fin= new FileReader(“resource/word.txt”); // ---- 6
line = new LineNumberReader(fin);
}catch(Exception e){
e.printStackTrace();
System.exit(0);
}
while(true){
try{
String temp = line.readLine();
wordNum += ts.CountWord(temp);
}catch(Exception e){
break;
}
}
try{
line.close();
}catch(Exception e){};
System.out.println("Word count is:" + wordNum);
}
}
// TestString.java
package edu.test;
import java.util.*;
class TestString {
int CountWord(String str){
StringTokenizer token = new StringTokenizer(str);
return token.countTokens();
}
}
两个.java文件存放在d:\temp目录下,当前目录为d:\temp使用下面的命令进行编译:
d:\temp>javac -classpath d:\jdk1.4.2\lib -d d:\test *.java
用下面的命令运行:
// --------------------------------- 1
d:\temp> java -classpath .;d:\jdk1.4.2\lib; d:\test\com edu.test.TestFile
如果需要打包的话,先转到d:\test,然后用下面命令:
// --------------------------------- 5
jar -cvf test.jar edu这时可产生一个test.jar文件,可将此文件置于任何平台下使用。
tyllr 发表于 >2005-5-22 14:22:20 [全文] [评论] [引用] [推荐] [档案] [推给好友]
2005-5-13
1、切断和你过去失败经验的所有关系,消除你脑海中的那些与积极心态背道而驰的所有不良因素。
2、找出你一生中最希望的到的东西,并立即住手去得到它,借着帮助他人得到同样好处的方法,去追寻你的目标。
3、确定你需要的资源之后,便制订如何得到这些资源的计划,所定的计划一定不要太过渡,也不要不足,别以为自己要求的太少,记住,贪婪是野心家失败的最主要因素。
4、培养每天说或做一些时他人感到舒服的话或事,你可以利用电话、明信片,或一些简单的善意动作达到此目的。例如给他人一本励志的书,就是为他带来一些可使他的生命充满奇迹的东西。日行一善,可永远保持无忧无虑的心情。
5、使你自己了解一点,打倒你的不是挫折,而是你面对挫折时所抱的心态,训练自己在每一次不如意的处境中都能发现与挫折等值的积极一面。
6、务必使自己养成精益求精的习惯,并以你的爱心和热情发挥你的这种习惯,如果能使这种习惯变成一种嗜好,那是最好不过的了。如果不能的话,至少你应该记住:懒散的心态,很快就会变成消极的心态。
7、当你找不到解决问题的答案时,不妨帮助他人解决问题,并从中找出你所需要的答案。在你帮助他人解决问题的同时,你也正在洞察解决自己问题的方法。
8、每周阅读一次爱默生的《报酬随笔》,直道你能领悟其中的道理为止。这本著作可使你确信,能从积极心态获得好处。
9、彻底“盘点”一次你的财产,你会发现你所拥有的最有价值的财产就是健全的思想,有了它你就可以决定自己的命运。
10、和你曾经以不合理态度冒犯过的人联络,并向他致以最诚挚的歉意,这项任务愈困难,你就愈能在完成道歉是,摆脱掉内心的消极心态。
11、我们在这个世界上到底能占有多少空间,与我们为他人利益所提供的服务的质与量以及提供服务时所产生的心态成正比。
12、改掉你的坏习惯,连续一个月每天减少一项恶习,并在一周结束时反省一下成果。如果你需要顾问或帮助时,切勿让你的自尊心是你却步。
13、要知道自怜是独立精神的毁灭者,请相信你自己才是惟一可以随时依靠的人。
14、把你一生中所发生的所有事件都看做是激励你上进而发生的事件,因为只要你能给事件减少你烦恼的机会的话,即使是最悲伤的经验,也会为你带来最多的财产。
15、放弃想要控制别人的念头,在这个念头摧毁你之前先摧毁它,把你的激励转而用来控制你自己。
16、把你的全部思想用来做你想做的事,而不要留半点思维空间给那些胡思乱想的念头。
17、向每天的生活索取合理的回报,而不要光等着回报跑到你的手中,你会因为得到许多尼所希望的东西而感到惊讶——虽然你可能一直没有察觉到。
18、以适合你生理和心理的方式生活,别浪费时间以免落于他人之后。
19、除非有人愿意以足够的证据,证明他的建议具有一定的可靠性,否则别接受任何人的建议,你将会因谨慎而避免被误导,或被当成傻瓜。
20、务必了解人的力量并非全然来自物质而已。甘地领导他的人民争取自由所依靠的并非财富。
21、是自己多多活动以保持自己的健康状态,胜利上的疾病很容易造成心理的失调,你的身体和你的思想一样保持活动,以维持积极的行动。
22、增加自己的耐性,并以开阔的心胸包容所有事物,同时也应与不同种族和不同信仰的人多接触,学习接受他人的本性,而不要一味的要求他人照着你的意思行事。
23、你应承认,“爱”是你生理和心理疾病的最佳药物,爱会改变并且调适你体内的化学元素,以使它们有助于你表现出积极的心态,爱也会扩展你的包容力。接受爱的最好方法就是付出你自己的爱。
24、以相同或更多的价值回报给你好处的人,“报酬增加律”最后还会给你带来好处,而且可能会为你带来所有你应得到的东西的能力。
25、记住,当你付出之后,必然会得到等价或更高价值的东西,抱着这种念头,可使你驱除对年老的恐惧。
26、你要相信,你可以为所有的问题找到适当的解决方法,但也要注意你所找到的解决方法未必都是你想要的解决方法。
27、参考别人的例子提醒自己,任何不利情况都是可以克服的。虽然爱迪生只接受过三个月的正规教育,但他却是最伟大的发明家。虽然海伦•凯勒失去了视觉、听觉和说话能力,但她却鼓舞了数万人。明确目标的力量必然胜过任何限制。
28、对于善意的批评应采取接受的态度,而不应采取消极的反应,接受学习他人如何看待你的机会,利用这种机会做一番反省,并找出应该改善的地方,别害怕批评,你应勇敢地面对它。
29、和其他献身于成功原则的人组成智囊团,讨论你们的进程,并从更宽广的经验中获取好处,务必以积极面作为基础进行讨论。
30、分清楚愿望、希望、欲望,以及强烈欲望与达到目标之间的差别,其中只有强烈的欲望会给你驱动力,而且只有积极心态才能供给产生驱动力所需的燃料。
31、避免任何具有负面意义的说话形态,尤其应根除吹毛求疵、闲言闲语或中伤他人名誉的行为,这些行为会使你的思想朝向消极面发展。
32、锻炼你的思想,使它能够导引你的命运朝着你希望的方向发展,把握住“报酬”信封里的每一项利益,并将它们据为己有。
33、随时随地都应表现出真实的自己,没有人会相信骗子的。
34、相信无穷智慧的存在,它会使你产生为掌握思想和导引思想而奋斗所需要的所有力量。
35、信任和你共事的人,并承认如果和你共事的人不值得你信任时,就表示你选错人了。