謹以此文送給所有正在使用TOMCAT或者打算使用的人們
一
TOMCAT最新版本是
如果在WINDOWS下它可以自動找到你的JDK或者set JAVA_HOME=c:/jdk
在LINUX下需要先解壓
export JAVA_HOME=/usr/local/jdk
設置完畢後就可以運行tomcat服務器了
啟動服務後在浏覽器裡輸//localhost:
Bin
Conf
Work
Webapp
Logs
Comm
沒有什麼好說的
元素名
屬性
解釋
server
port
指定一個端口
shutdown
指定向端口發送的命令字符串
service
name
指定service的名字
Connector(表示客戶端和service之間的連接)
port
指定服務器端要創建的端口號
minProcessors
服務器啟動時創建的處理請求的線程數
maxProcessors
最大可以創建的處理請求的線程數
enableLookups
如果為true
redirectPort
指定服務器正在處理http請求時收到了一個SSL傳輸請求後重定向的端口號
acceptCount
指定當所有可以使用的處理請求的線程數都被使用時
connectionTimeout
指定超時的時間數(以毫秒為單位)
Engine(表示指定service中的請求處理機
defaultHost
指定缺省的處理請求的主機名
Context(表示一個web應用程序
docBase
應用程序的路徑或者是WAR文件存放的路徑
path
表示此web應用程序的url的前綴
reloadable
這個屬性非常重要
host(表示一個虛擬主機)
name
指定主機名
appBase
應用程序基本目錄
unpackWARs
如果為true
Logger(表示日志
className
指定logger使用的類名
prefix
指定log文件的前綴
suffix
指定log文件的後綴
timestamp
如果為true
Realm(表示存放用戶名
className
指定Realm使用的類名
Valve(功能與Logger差不多
className
指定Valve使用的類名
directory
指定log文件存放的位置
pattern
有兩個值
TOMCAT管理能力很強大
^_^
一
作為一個J
網上有各種各樣的連接池代碼
這裡介紹如何配置TOMCAT的連接池
步驟
SQLSERVER的JDBC驅動其實就是三個JAR文件
步驟
具體代碼如下
<Context path=
<Logger className=
<Resource name=
<ResourceParams name=
<parameter>
<name>factory</name>
<value>mons
</parameter>
<!
<parameter>
<name>maxActive</name>
<value>
</parameter>
<!
<parameter>
<name>maxIdle</name>
<value>
</parameter>
<!
<parameter>
<name>maxWait</name>
<value>
</parameter>
<!
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<!
<parameter>
<name>driverClassName</name>
<value>com
</parameter>
<!
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://
<!
</parameter>
</ResourceParams>
</Context>
步驟三
package dbmanage;
import java
import java
import java
import java
import java
import java
import java
import java
import java
import java
import javax
import javax
import javax
import util
public class dbManager {
/************************************
* @param static private boolean VERBOSE ;
* @param Statement theStatement;
* @param PreparedStatement thePstmt;
* @param Connection theConnection;
************************************/
final static private boolean VERBOSE = true; //打印控制台控制
//static Logger logger = Logger
private Context initCtx = null;
private Context ctx = null;
private DataSource ds = null;
private long timeout =
private Statement theStatement = null;
private PreparedStatement thePstmt = null;
/************************************
* 初試化initCtx
* 取得數據源對象
************************************/
public
dbManager() {
try {
initCtx = new InitialContext();
//init context
if (initCtx == null) {
throw new Exception(
}
ctx = (Context) initCtx
//find
if (ctx != null) {
ds = (DataSource) ctx
}
if (ds == null) {
throw new Exception(
}
}
catch (Exception e) {
log(e
}
}
/************************************
* get Connection
* @return Connection
************************************/
public synchronized
Connection getConnection() {
//get connection and set to delay time
long startTime = new java
Connection con = null;
while (con == null) {
con = newConnection();
if (con != null) {
//log(
break;
}
try {
log(
wait(timeout);
}
catch (InterruptedException e) {
log(e
}
if ( (new java
log(
break;
}
}
return con;
}
private
Connection newConnection() {
Connection con = null;
try {
con = ds
if (con == null) {
throw new Exception(
}
}
catch (Exception e) {
log(
System
}
return con;
}
/************************************
* release the connection
* @param conn Connection
* @param stmt Statement
* @param pstmt PreparedStatement
************************************/
public synchronized
void freeConnection(Connection conn
Statement stmt
PreparedStatement pstmt) {
try {
//close Statement
if (stmt != null) {
stmt
stmt = null;
//log(
}
//close PreparedStatement
if (pstmt != null) {
pstmt
pstmt = null;
//log(
}
}
catch (Exception e) {
System
}
try {
//close Connection
if (conn != null) {
conn
conn = null;
//log(
}
}
catch (SQLException e) {
log(e
}
}
/************************************
* write log file
* @param s String
************************************/
private
void log(String s) {
if (VERBOSE) {
System
//(new java
}
}
/************************************
* write log file
* @param ex Object
************************************/
private
void logerr(Object ex) {
if (VERBOSE) {
//System
//logger
}
}
/************************************
* write log file
* @param e Throwable
* @param msg String
************************************/
private
void log(Throwable e
System
//(new java
}
……
}
OK
二
每個國家(或區域)都規定了計算機信息交換用的字符編碼集
現在大部分具有國際化特征的軟件核心字符處理都是以 Unicode 為基礎的
Java 語言內部是用 Unicode 表示字符的
其實解決 JAVA 程序中的漢字編碼問題的方法往往很簡單
new String(request
但這樣的代碼相信不是一個解決的辦法
前提條件
<%@ page contentType=
<meta http
地球人都知道的東西
步驟
在TOMCAT中找到這
步驟
在web
……
<filter>
<filter
<filter
<init
<param
<param
</init
</filter>
<filter
<filter
<url
</filter
……
看到沒有?這樣你就不用寫那些麻煩的轉換代碼了
步驟
在server
<Connector port=
maxThreads=
enableLookups=
debug=
disableUploadTimeout=
<Connector className=
port=
enableLookups=
acceptCount=
useURIValidationHack=
protocolHandlerClassName=
URIEncoding=
OK
三
Apache和tomcat都是很優秀的軟件
把
步驟
apache
_
tomcat
JDK(這個不用說了吧^_^)
mod_jk_
安裝apache\ tomcat\JDK
步驟
設置我的電腦\屬性\高級\環境變量\新建系統變量 變量名
測試一下
把連接器mod_jk_
步驟
在d:\Apache
查找AddDefaultCharset設置為AddDefaultCharset off
在最後添加如下代碼
<VirtualHost *:
ServerAdmin #你的mail地址
DocumentRoot F:/uutang/uutang #你的項目組根目錄
ServerName dark #你的服務名
ErrorLog logs/ErrorLog
CustomLog logs/CustomLog
JkMount /servlet/* ajp
JkMount /*
JkMount /*
</VirtualHost>
LoadModule jk_module modules/mod_jk_
JkWorkersFile
JkLogFile
JkLogLevel info
步驟
在d:\Tomcat
workers
workers
ps=\
worker
worker
worker
worker
worker
修改TOMCAT的server
<!
<Connector className=
port=
enableLookups=
acceptCount=
useURIValidationHack=
protocolHandlerClassName=
URIEncoding=
讓TOMCAT知道ajp
測試一下
jk
步驟
下載jakarta
步驟
在/conf中加入一個work
<!
[shm]
file=D:/ /Apache
size=
<!
#The socket channel
[channel
port=
host=localhost
<!
#define the worker
[ajp
channel=channel
<!
#uri mapping
[uri:/*] #和第一種方式一樣吧^_^
[uri:/*
[uri:/*
worker=ajp
在中
LoadModule jk
在最後加入這句
JkSet config
這是告訴apache去哪裡找jk的配置的
還要修改一下DirectoryIndex
當然還有我們的虛擬目錄
<VirtualHost *:
ServerAdmin
DocumentRoot F:/uutang/uutang
ServerName dark
ErrorLog logs/ErrorLog
CustomLog logs/CustomLog
#JkMount /servlet/* ajp
#JkMount /*
#JkMount /*
</VirtualHost>
步驟
Tomcat的端口設置為
在/conf文件夾加入jk
# Set the desired handler list
handler
#
# Override the default port for the socketChannel
channelSocket
TOMCAT自己已經生成了這個文件
注意
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27947.html