关于tomcat操作
2017-07-04 10:29
120 查看
Linux操作系统环境下Tomcat的安装与配置
http://tomcat.apache.org/download-60.cgi
下载core的tar.gz
注意:windows版本的tomcat要根据操作系统的位数来选择进行下载。
Deployer:为开发版本,存在不稳定因素。
# mvapache-tomcat-6.0.43.tar.gz /opt/
第二步:解压目录
# tar zxvfapache-tomcat-6.0.43.tar.gz 解压完毕后会看到apache-tomcat-6.0.43 文件夹。
第三步:为了方便,最好更好一下文件夹名字
# mv apache-tomcat-6.0.43tomcat6
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html
# mvjdk-6u45-linux-x64.bin /opt/
第二步:赋予 jdk-6u45-linux-x64.bin 可执行权限
# chmod +xjdk-6u45-linux-x64.bin
第三步:执行 ./jdk-6u45-linux-x64.bin 进行安装。安装完毕后会看到一个jdk1.6.0_37 文件夹。
#vim .bash_profile
在最后添加:
JAVA_HOME=/opt/jdk1.6.0_37#JDK安装路径
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
export PATHJAVA_HOME
使用 source .bash_profile 生效。
修改前:
<Connector port="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
修改后:
<Connectorport="80" maxHttpHeaderSize="8192" maxThreads="1000"minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443"acceptCount="2000" connectionTimeout="20000"disableUploadTimeout="true" URIEncoding="UTF-8或者GBK" />
Port:端口号。
maxHttpHeaderSize:客户端Http请求、响应的Header的最大限制。
maxThreads:Tomcat可创建的最大线程数。
minSpareThreads:Tomcat初始化时创建的线程数。
maxSpareThreads:一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort:指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
connectionTimeout:指定超时的时间数(以毫秒为单位)。
URIEncoding:采用的编码格式设定。
修改前:
<!--
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log."suffix=".txt" pattern="common"resolveHosts="false"/>
-->
修改后:
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log." suffix=".txt"pattern='%t %a %A %p "%r" %s %D "%{USER-AGENT}i""%{Referer}i" "%h" "%H" "%b""%m" "%q" "%S" "%U" "%T""%I" "%{X-FORWARDED-FOR}i" "%{cookie}i""%{CONTENT-TYPE}o"
"%{Via}i" "%{X-UP-BEAR-TYPE}i""%{X-UP-CALLING-ID}i" "%{X-WAP-PROFILE}i"' resolveHosts="false"/>
日志输出如下:
[18/Mar/2015:10:25:26+0800] 10.168.17.108 10.162.74.231 80 "POST /newsdk_json_login.doHTTP/1.1" 200 25 "Jakarta Commons-HttpClient/3.1" "-""10.168.17.108" "HTTP/1.1" "172" "POST""" "-" "/newsdk_json_login.do" "0.025""http-80-103" "-" "-" "-" "-""-" "-" "-"
参数详解:
className:实现的Java类名。必须被设置成org.apache.catalina.valves.AccessLogValve。
Directory:日志存储的路径。
Prefix:生成日志的前缀,可根据自己需要进行修改。
Suffix:生成日志的后缀名。
resolveHosts:将远端主机的IP地址通过DNS查询转换成主机名,设为true。如果为false,忽略DNS查询,报告远端的IP地址。
Pattern:access的最主要部门,日志的格式定义。
属性说明:
%t :日志和时间,使用通常的Log格式
%a:远端IP地址
%A:本地IP地址
%p :收到请求的本地端口号
%r :请求的第一行,包含了请求的方法和URI
%s:响应的状态码
%D:处理请求的时间,以毫秒为单位
%{USER-AGENT}i:
%{Referer}i
%h:远端主机名
%H:请求协议
%b:发送的字节数,不包括HTTP头,如果为0,使用"-"
%m:请求的方法(GET,POST,等)
%q:查询字符串(如果存在,以 '?'开始)
%S:用户的session ID
%U:请求的URI路径
%T:处理请求的时间,以秒为单位
%I:从identd返回的远端逻辑用户名(总是返回 '-')
%{X-FORWARDED-FOR}i
%{cookie}i
%{CONTENT-TYPE}o
%{Via}i
%{X-UP-BEAR-TYPE}i
{X-UP-CALLING-ID}i
%{X-WAP-PROFILE}i
另外还可以将cookie, 客户端请求中带的HTTP头(incoming header), 会话(session)或是ServletRequest中的数据都写到Tomcat的访问日志中,你可以用下面的语法来引用。
%{xxx}i – 记录客户端请求中带的HTTP头xxx(incoming headers)
%{xxx}c – 记录特定的cookie xxx
%{xxx}r – 记录ServletRequest中的xxx属性(attribute)
%{xxx}s – 记录HttpSession中的xxx属性(attribute)
<Hostname="localhost" appBase="webapps"
unpackWARs="true"autoDeploy="true"
xmlValidation="false"xmlNamespaceAware="false">
</Host>
Name:默认为localhost,可根据实际情况设置成自己的域名,例如:test.gamecomb.com。
appBase:appBase为自己的实际开发目录。
<HostappBase="webroot" autoDeploy="true"name="yjsg.gamecomb.com" unpackWARs="true"xmlNamespaceAware="false" xmlV
alidation="false">
<ContextdocBase="/opt/tomcat6/webroot/yjsg" path=""reloadable="true"/>
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs" suffix=".txt" pattern="%t %a %A %p "%r"%s %D "%{User-Agent}i""fileDateFormat="yyyy-MM-dd" resolveHosts="false"prefix="yjsg_access_log."/>
</Host>
docBase:相对于appBase来说,可以为相对路径,也可以为绝对路径。
设置catalina localhost managerhost-manager日志级别为FINE级别:
1catalina.org.apache.juli.FileHandler.level= FINE
1catalina.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix= catalina.
2localhost.org.apache.juli.FileHandler.level= FINE
2localhost.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix= localhost.
3manager.org.apache.juli.FileHandler.level= FINE
3manager.org.apache.j
4000
uli.FileHandler.directory= ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix= manager.
4host-manager.org.apache.juli.FileHandler.level= FINE
4host-manager.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix= host-manager.
禁止catalina localhost managerhost-manager的所有日志输出:
1catalina.org.apache.juli.FileHandler.level= OFF
1catalina.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix= catalina.
2localhost.org.apache.juli.FileHandler.level= OFF
2localhost.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix= localhost.
3manager.org.apache.juli.FileHandler.level= OFF
3manager.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix= manager.
4host-manager.org.apache.juli.FileHandler.level= OFF
4host-manager.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix= host-manager.
<mime-mapping>
<extension>zip</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
将值设置为false即可。
修改$CATALINA_HOME/bin/catalina.sh,添加如下代码:
JAVA_OPTS="-server-Xms512m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=2048m -XX:-UseGCOverheadLimit"
-Xms:JVM初始化堆的大小,默认为64M,最大不能超过物理内存的80%。
-Xmx:JVM堆的最大值,最大不超过物理内存的80%,一般和-Xms设置的大小一样。
-XX:PermSize:设置非堆内存的初始值默认是物理内存的1/64。
-XX:MaxPermSize:设置最大非堆内存的大小默认是物理内存的1/4。
服务器为64位、2G内存:
JAVA_OPTS='-server-Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
# wgethttp://cronolog.org/download/cronolog-1.6.2.tar.gz
2、解压缩
# tar zxvfcronolog-1.6.2.tar.gz
3、进入cronolog安装文件所在目录
# cd cronolog-1.6.2
4、运行安装
# ./configure
# make
# make install
5、查看cronolog安装后所在目录(验证安装是否成功)
# which cronolog
一般情况下显示为:/usr/local/sbin/cronolog
6.进入Tomcat的bin目录,打开catalina.sh文件,找到tomcat启动的相关行,或者你直接查找catalina.out,一般我们修改下面行中的内容(因为我们一般不会在-security条件下运行),
else
“$_RUNJAVA” $JAVA_OPTS$CATALINA_OPTS \
-Djava.endorsed.dirs=”$JAVA_ENDORSED_DIRS” -classpath “$CLASSPATH” \
-Dcatalina.base=”$CATALINA_BASE” \
-Dcatalina.home=”$CATALINA_HOME” \
-Djava.io.tmpdir=”$CATALINA_TMPDIR” \
org.apache.catalina.startup.Bootstrap “$@” start \
>> “$CATALINA_BASE”/logs/catalina.out2>&1 &
if [ ! -z "$CATALINA_PID" ]; then
echo $! > $CATALINA_PID
fi
fi
修改
org.apache.catalina.startup.Bootstrap“$@” start \
>> “$CATALINA_BASE”/logs/catalina.out2>&1 &
为
org.apache.catalina.startup.Bootstrap“$@” start2>&1 \
|/usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out>> /dev/null &
同时,上面有一行
touch “$CATALINA_BASE”/logs/catalina.out
可以注释掉,完成之后重起Tomcat就可以了,在logs目录下可以看到catalina.2015-02-18.out的日志,是按日生成的。
一、Tomcat安装及JDK安装
1.Tomcat下载:
可根据实际需要选择要下载的Tomcat,我们大多数用的为tomcat6,最新版本为tomcat6.0.43http://tomcat.apache.org/download-60.cgi
下载core的tar.gz
注意:windows版本的tomcat要根据操作系统的位数来选择进行下载。
Deployer:为开发版本,存在不稳定因素。
2.Tomcat安装:
第一步:将下载的tar.gz报移动到要安全的目录下,我们习惯在/opt下。# mvapache-tomcat-6.0.43.tar.gz /opt/
第二步:解压目录
# tar zxvfapache-tomcat-6.0.43.tar.gz 解压完毕后会看到apache-tomcat-6.0.43 文件夹。
第三步:为了方便,最好更好一下文件夹名字
# mv apache-tomcat-6.0.43tomcat6
3.下载JDK:
根据自己操作系统的版本和操作系统位数来选择要下载的jdk版本。http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html
4. JDK安装:
第一步:将下载的.bin安装文件移动到要安装的目录下,通常为/opt/目录下# mvjdk-6u45-linux-x64.bin /opt/
第二步:赋予 jdk-6u45-linux-x64.bin 可执行权限
# chmod +xjdk-6u45-linux-x64.bin
第三步:执行 ./jdk-6u45-linux-x64.bin 进行安装。安装完毕后会看到一个jdk1.6.0_37 文件夹。
5.配置环境变量:
# cd /root/#vim .bash_profile
在最后添加:
JAVA_HOME=/opt/jdk1.6.0_37#JDK安装路径
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
export PATHJAVA_HOME
使用 source .bash_profile 生效。
6.启动测试:
二、Tomcat配置及优化:
1.配置端口及编码格式(解决中文乱码和静态化某些符号乱码):
修改$CATALINA_HOME/conf/server.xml中:修改前:
<Connector port="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
修改后:
<Connectorport="80" maxHttpHeaderSize="8192" maxThreads="1000"minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443"acceptCount="2000" connectionTimeout="20000"disableUploadTimeout="true" URIEncoding="UTF-8或者GBK" />
Port:端口号。
maxHttpHeaderSize:客户端Http请求、响应的Header的最大限制。
maxThreads:Tomcat可创建的最大线程数。
minSpareThreads:Tomcat初始化时创建的线程数。
maxSpareThreads:一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort:指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
connectionTimeout:指定超时的时间数(以毫秒为单位)。
URIEncoding:采用的编码格式设定。
2.Access日志格式设定:
修改$CATALINA_HOME/conf/server.xml中:修改前:
<!--
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log."suffix=".txt" pattern="common"resolveHosts="false"/>
-->
修改后:
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log." suffix=".txt"pattern='%t %a %A %p "%r" %s %D "%{USER-AGENT}i""%{Referer}i" "%h" "%H" "%b""%m" "%q" "%S" "%U" "%T""%I" "%{X-FORWARDED-FOR}i" "%{cookie}i""%{CONTENT-TYPE}o"
"%{Via}i" "%{X-UP-BEAR-TYPE}i""%{X-UP-CALLING-ID}i" "%{X-WAP-PROFILE}i"' resolveHosts="false"/>
日志输出如下:
[18/Mar/2015:10:25:26+0800] 10.168.17.108 10.162.74.231 80 "POST /newsdk_json_login.doHTTP/1.1" 200 25 "Jakarta Commons-HttpClient/3.1" "-""10.168.17.108" "HTTP/1.1" "172" "POST""" "-" "/newsdk_json_login.do" "0.025""http-80-103" "-" "-" "-" "-""-" "-" "-"
参数详解:
className:实现的Java类名。必须被设置成org.apache.catalina.valves.AccessLogValve。
Directory:日志存储的路径。
Prefix:生成日志的前缀,可根据自己需要进行修改。
Suffix:生成日志的后缀名。
resolveHosts:将远端主机的IP地址通过DNS查询转换成主机名,设为true。如果为false,忽略DNS查询,报告远端的IP地址。
Pattern:access的最主要部门,日志的格式定义。
属性说明:
%t :日志和时间,使用通常的Log格式
%a:远端IP地址
%A:本地IP地址
%p :收到请求的本地端口号
%r :请求的第一行,包含了请求的方法和URI
%s:响应的状态码
%D:处理请求的时间,以毫秒为单位
%{USER-AGENT}i:
%{Referer}i
%h:远端主机名
%H:请求协议
%b:发送的字节数,不包括HTTP头,如果为0,使用"-"
%m:请求的方法(GET,POST,等)
%q:查询字符串(如果存在,以 '?'开始)
%S:用户的session ID
%U:请求的URI路径
%T:处理请求的时间,以秒为单位
%I:从identd返回的远端逻辑用户名(总是返回 '-')
%{X-FORWARDED-FOR}i
%{cookie}i
%{CONTENT-TYPE}o
%{Via}i
%{X-UP-BEAR-TYPE}i
{X-UP-CALLING-ID}i
%{X-WAP-PROFILE}i
另外还可以将cookie, 客户端请求中带的HTTP头(incoming header), 会话(session)或是ServletRequest中的数据都写到Tomcat的访问日志中,你可以用下面的语法来引用。
%{xxx}i – 记录客户端请求中带的HTTP头xxx(incoming headers)
%{xxx}c – 记录特定的cookie xxx
%{xxx}r – 记录ServletRequest中的xxx属性(attribute)
%{xxx}s – 记录HttpSession中的xxx属性(attribute)
3.添加站点域名:
修改$CATALINA_HOME/conf/server.xml中:<Hostname="localhost" appBase="webapps"
unpackWARs="true"autoDeploy="true"
xmlValidation="false"xmlNamespaceAware="false">
</Host>
Name:默认为localhost,可根据实际情况设置成自己的域名,例如:test.gamecomb.com。
appBase:appBase为自己的实际开发目录。
4.Tomcat支持多站点域名:
如果想要添加多个虚拟主机,则需要添加多个host,在上一个</Host>后面添加:<HostappBase="webroot" autoDeploy="true"name="yjsg.gamecomb.com" unpackWARs="true"xmlNamespaceAware="false" xmlV
alidation="false">
<ContextdocBase="/opt/tomcat6/webroot/yjsg" path=""reloadable="true"/>
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs" suffix=".txt" pattern="%t %a %A %p "%r"%s %D "%{User-Agent}i""fileDateFormat="yyyy-MM-dd" resolveHosts="false"prefix="yjsg_access_log."/>
</Host>
docBase:相对于appBase来说,可以为相对路径,也可以为绝对路径。
5.修改Tomcat的日志输出等级:
修改conf/logging.properties中:设置catalina localhost managerhost-manager日志级别为FINE级别:
1catalina.org.apache.juli.FileHandler.level= FINE
1catalina.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix= catalina.
2localhost.org.apache.juli.FileHandler.level= FINE
2localhost.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix= localhost.
3manager.org.apache.juli.FileHandler.level= FINE
3manager.org.apache.j
4000
uli.FileHandler.directory= ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix= manager.
4host-manager.org.apache.juli.FileHandler.level= FINE
4host-manager.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix= host-manager.
禁止catalina localhost managerhost-manager的所有日志输出:
1catalina.org.apache.juli.FileHandler.level= OFF
1catalina.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix= catalina.
2localhost.org.apache.juli.FileHandler.level= OFF
2localhost.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix= localhost.
3manager.org.apache.juli.FileHandler.level= OFF
3manager.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix= manager.
4host-manager.org.apache.juli.FileHandler.level= OFF
4host-manager.org.apache.juli.FileHandler.directory= ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix= host-manager.
6.添加tomcat下可以打开的文件格式:
修改conf/web.xml:例如添加支持zip格式<mime-mapping>
<extension>zip</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
7.禁止程序目录以列表形式显示:
修改conf/web.xml<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
将值设置为false即可。
8.Tomcat虚拟内存配置:
配置虚拟内容的作用是为了防止tomcat内存溢出和堆栈溢出。修改$CATALINA_HOME/bin/catalina.sh,添加如下代码:
JAVA_OPTS="-server-Xms512m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=2048m -XX:-UseGCOverheadLimit"
-Xms:JVM初始化堆的大小,默认为64M,最大不能超过物理内存的80%。
-Xmx:JVM堆的最大值,最大不超过物理内存的80%,一般和-Xms设置的大小一样。
-XX:PermSize:设置非堆内存的初始值默认是物理内存的1/64。
-XX:MaxPermSize:设置最大非堆内存的大小默认是物理内存的1/4。
服务器为64位、2G内存:
JAVA_OPTS='-server-Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
9.Tomcatcronolog日志自动切割
1、下载(最新版本)# wgethttp://cronolog.org/download/cronolog-1.6.2.tar.gz
2、解压缩
# tar zxvfcronolog-1.6.2.tar.gz
3、进入cronolog安装文件所在目录
# cd cronolog-1.6.2
4、运行安装
# ./configure
# make
# make install
5、查看cronolog安装后所在目录(验证安装是否成功)
# which cronolog
一般情况下显示为:/usr/local/sbin/cronolog
6.进入Tomcat的bin目录,打开catalina.sh文件,找到tomcat启动的相关行,或者你直接查找catalina.out,一般我们修改下面行中的内容(因为我们一般不会在-security条件下运行),
else
“$_RUNJAVA” $JAVA_OPTS$CATALINA_OPTS \
-Djava.endorsed.dirs=”$JAVA_ENDORSED_DIRS” -classpath “$CLASSPATH” \
-Dcatalina.base=”$CATALINA_BASE” \
-Dcatalina.home=”$CATALINA_HOME” \
-Djava.io.tmpdir=”$CATALINA_TMPDIR” \
org.apache.catalina.startup.Bootstrap “$@” start \
>> “$CATALINA_BASE”/logs/catalina.out2>&1 &
if [ ! -z "$CATALINA_PID" ]; then
echo $! > $CATALINA_PID
fi
fi
修改
org.apache.catalina.startup.Bootstrap“$@” start \
>> “$CATALINA_BASE”/logs/catalina.out2>&1 &
为
org.apache.catalina.startup.Bootstrap“$@” start2>&1 \
|/usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out>> /dev/null &
同时,上面有一行
touch “$CATALINA_BASE”/logs/catalina.out
可以注释掉,完成之后重起Tomcat就可以了,在logs目录下可以看到catalina.2015-02-18.out的日志,是按日生成的。
相关文章推荐
- Liunx下的有关于tomcat的相关操作 && Liunx 常用指令
- 关于Cookie 的HttpOnly属性(java/web操作cookie+Tomcat操作jsessionid)
- liunx下关于tomcat一些操作命令liunx下关于tomcat一些操作命令
- 关于Cookie 的HttpOnly属性(java/web操作cookie+Tomcat操作jsessionid)
- 关于远程操作Linux下的项目和重启tomcat服务
- 关于Cookie 的HttpOnly属性(java/web操作cookie+Tomcat操作jsessionid)
- update操作中关于,传值的想法
- tomcat设置关于目录
- 关于网友"Flex-Tomcat-MySql"结合的问题!
- CString Management (关于CString的所有操作)
- 关于在win2003上安装share point service,让sps与visual studio.net 2003共存的操作
- 关于tomcat连接池的配置,Eclipse+lomboz环境。
- 关于窗口的操作详谈
- 关于PHP操作文件的一些FAQ总结
- 字符集问题的初步探讨(七)----关于字符集更改的内部操作
- 关于系统操作、多线程
- 关于tomcat奇怪问题
- 关于JAVA的分页查询操作技术
- 关于Eclipse 3 + Lomboz 3 + Tomcat 5 设置的文档。
- 几篇关于Eclipse 3 + Lomboz 3 + Tomcat 5的设置文章