亚洲女同成人AⅤ人片在线观看,亚洲香蕉成人AV网站在线观看,亚洲AV无码之日韩精品http://www.tkk7.com/sutao/category/24296.html用文字記錄學習的體驗!zh-cnSat, 24 Nov 2007 20:59:08 GMTSat, 24 Nov 2007 20:59:08 GMT60tomcat常識(apache)http://www.tkk7.com/sutao/archive/2007/11/24/162781.html蘇醄蘇醄Sat, 24 Nov 2007 01:10:00 GMThttp://www.tkk7.com/sutao/archive/2007/11/24/162781.htmlhttp://www.tkk7.com/sutao/comments/162781.htmlhttp://www.tkk7.com/sutao/archive/2007/11/24/162781.html#Feedback0http://www.tkk7.com/sutao/comments/commentRss/162781.htmlhttp://www.tkk7.com/sutao/services/trackbacks/162781.html一、小貓TOMCAT其實很可愛

2003年底,我換公司了,同樣也換了WEBAPP,TOMCAT出現在我的面前(以前使用weblogic),我有點茫然,免費的東西真的能用的好么?擔心ING……(其實是在火星呆太久)出門一打聽,原來此貓出自名門-jakarta項目,2001年度最具創新的java產品(Most Innovative Java Product),又有JAVA的老大SUN的力捧(官方推薦的servlet和jsp容器),以后就靠它吃飯了。不說二話,搞起來先:

1、 安裝

TOMCAT最新版本是5.0.29(http://jakarta.apache.org/site/binindex.cgi)

如果在WINDOWS下它可以自動找到你的JDK或者set JAVA_HOME=c:/jdk

在LINUX下需要先解壓,然后設置JAVA_HOME

export JAVA_HOME=/usr/local/jdk

2、 RUN

設置完畢后就可以運行tomcat服務器了,進入tomcat的bin目錄,WINDOWS下用startup啟動tomcat,linux下用startup.sh,相應的關閉tomcat的命令為shutdown和shutdown.sh。

啟動服務后在瀏覽器里輸入http://localhost:8080來測試一下

3、 目錄結構

Bin:存放啟動和關閉tomcat腳本。

Conf:包含不同的配置文件,server.xml(Tomcat的主要配置文件)。

Work:存放jsp編譯后產生的class文件。

Webapp:存放應用程序示例,以后你要部署的應用程序也要放到此目錄。

Logs:存放日志文件

Comm./server/shared:這三個文件夾下的LIB文件夾放jar文件。

1、 配置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為http://localhost:8080/path/****

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方式記錄的值更多

2、 管理

TOMCAT管理能力很強大,進入http://localhost:8080/,自己慢慢管吧。實踐出真知,我喜歡這樣搞:

^_^,一切盡在掌握http://localhost:8080/manager/html 。

一、讓數據庫連接池轉起來

作為一個J2EE程序員大家手上可能會有現成的JDBC 數據庫連接池,其實這沒有太大的必要,因為象weblogic……企業級WEBAPP都有自己的連接池,大家不要費力直接使用吧,效率也很不錯,再也不用羨慕.NET的ADO了(以前作MS從來不擔心數據連接,ADO確實用起來很爽),如果想實現一個 JDBC connection pool 的注意事項有:

1. 有一個簡單的函數從連接池中得到一個 Connection。

2. close 函數必須將 connection 放回 數據庫連接池。

3. 當數據庫連接池中沒有空閑的 connection, 數據庫連接池必須能夠自動增加 connection 個數。

4. 當數據庫連接池中的 connection 個數在某一個特別的時間變得很大,但是以后很長時間只用其中一小部分,應該可以自動將多余的 connection 關閉掉。

5. 如果可能,應該提供debug 信息報告沒有關閉的 new Connection 。

網上有各種各樣的連接池代碼,抄過來改改吧,嘿嘿~

這里介紹如何配置TOMCAT的連接池,以SQLSERVER為例:

步驟1:安裝SQLSERVER的JDBC驅動

SQLSERVER的JDBC驅動其實就是三個JAR文件,msbase.jar/mssqlserver.jar/msutil.jar,將這三個文件拷貝到你的/tomcat_home/common/lib目錄下去就可以了。

步驟2:修改server.xml文件

具體代碼如下:

<Context path="test" docBase="F:\yourroot" debug="5" reloadable="true" crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBTest_log." suffix=".txt" timestamp="true"/>

<Resource name="jdbc/SqlServerDB" auth="Container" type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/SqlServerDB">

<parameter>

<name>factory</name>

<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

</parameter>

<!-- Maximum number of dB connections in pool. Make sure you configure your mysqld max_connections large enough to handle all of your db connections. Set to 0 for no limit.-->

<parameter>

<name>maxActive</name>

<value>50</value>

</parameter>

<!-- Maximum number of idle dB connections to retain in pool. Set to 0 for no limit.-->

<parameter>

<name>maxIdle</name>

<value>20</value>

</parameter>

<!-- Maximum time to wait for a dB connection to become available in ms, in this example 0.5 seconds. An Exception is thrown if this timeout is exceeded. Set to -1 to wait indefinitely. -->

<parameter>

<name>maxWait</name>

<value>500</value>

</parameter>

<!-- msSQL dB username and password for dB connections -->

<parameter>

<name>username</name>

<value>sa</value>

</parameter>

<parameter>

<name>password</name>

<value>sa</value>

</parameter>

<!-- Class name for SQLServer2000 JDBC driver -->

<parameter>

<name>driverClassName</name>

<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

</parameter>

<!-- The JDBC connection url for connecting to your MS SQL Server dB.The autoReconnect=true argument to the url makes sure that the mm.Sql Server JDBC Driver will automatically reconnect if mysqld closed the connection. mysqld by default closes idle connections after 8 hours.-->

<parameter>

<name>url</name>

<value>jdbc:microsoft:sqlserver://10.0.254.11:1433;databaseName=yourdb</value>

<!--must use & not use & -->

</parameter>

</ResourceParams>

</Context>

步驟三:程序調用

package dbmanage;

import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.Date;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Enumeration;

import java.util.Hashtable;

import java.util.Vector;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.sql.DataSource;

import util.smartDateFormat;

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.getLogger(dbManager.class.getName());

private Context initCtx = null;

private Context ctx = null;

private DataSource ds = null;

private long timeout = 5000;

private Statement theStatement = null;

private PreparedStatement thePstmt = null;

/************************************

* 初試化initCtx

* 取得數據源對象

************************************/

public

dbManager() {

try {

initCtx = new InitialContext();

//init context,read config web.xml

if (initCtx == null) {

throw new Exception("Initial Failed!");

}

ctx = (Context) initCtx.lookup("java:comp/env");

//find "jdbc/SqlServerDB" object this configruation in the SERVER.XML of Tomcat

if (ctx != null) {

ds = (DataSource) ctx.lookup("jdbc/SqlServerDB");

}

if (ds == null) {

throw new Exception("Look up DataSource Failed!");

}

}

catch (Exception e) {

log(e, "Can't get the Context!");

}

}

/************************************

* get Connection

* @return Connection

************************************/

public synchronized

Connection getConnection() {

//get connection and set to delay time

long startTime = new java.util.Date().getTime();

Connection con = null;

while (con == null) {

con = newConnection();

if (con != null) {

//log("Create New Connection!");

break;

}

try {

log("連接超時,重新連接,等待" + timeout + "ms");

wait(timeout);

}

catch (InterruptedException e) {

log(e, "連接超時!");

}

if ( (new java.util.Date().getTime() - startTime) >= timeout) {

log("Connection timeout!");

break;

}

}

return con;

}

private

Connection newConnection() {

Connection con = null;

try {

con = ds.getConnection();

if (con == null) {

throw new Exception("Create Connection Failed!");

}

}

catch (Exception e) {

log("Create Connection Failed!");

System.out.println(e.getMessage());

}

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.close();

stmt = null;

//log("Close Statement......");

}

//close PreparedStatement

if (pstmt != null) {

pstmt.close();

pstmt = null;

//log("Close PreparedStatement......");

}

}

catch (Exception e) {

System.out.println(e.getMessage());

}

try {

//close Connection

if (conn != null) {

conn.close();

conn = null;

//log("Close Connection......");

}

}

catch (SQLException e) {

log(e, "釋放資源出錯!");

}

}

/************************************

* write log file.

* @param s String

************************************/

private

void log(String s) {

if (VERBOSE) {

System.out.println(new java.util.Date() + ":" + s);

//logger.info(new java.util.Date()+s);

}

}

/************************************

* write log file.

* @param ex Object

************************************/

private

void logerr(Object ex) {

if (VERBOSE) {

//System.out.println(new java.util.Date()+":"+s);

//logger.error(ex);

}

}

/************************************

* write log file.

* @param e Throwable

* @param msg String

************************************/

private

void log(Throwable e, String msg) {

System.out.println(new java.util.Date() + ": " + msg);

//logger.info(new java.util.Date() + ": " + msg, e);

}

……

}

OK,你現在可以方便的使用連接池了,想要一個得一個,記得要釋放哦,連接池的數量總是有限的。

二、中文問題照樣很簡單

每個國家(或區域)都規定了計算機信息交換用的字符編碼集,如美國的擴展 ASCII碼, 中國的 GB2312-80,日本的 JIS 等,作為該國家/區域內信息處理的基礎,有著統一編碼的重要作用。字符編碼集按長度分為 SBCS(單字節字符集),DBCS(雙字節字符集)兩大類。早期的軟件(尤其是操作系統),為了解決本地字符信息的計算機處理,出現了各種本地化版本(L10N),為了區分,引進了 LANG, Codepage 等概念。但是由于各個本地字符集代碼范圍重疊,相互間信息交換困難;軟件各個本地化版本獨立維護成本較高。因此有必要將本地化工作中的共性抽取出來,作一致處理,將特別的本地化處理內容降低到最少。這也就是所謂的國際化(I18N)。各種語言信息被進一步規范為 Locale 信息。處理的底層字符集變成了幾乎包含了所有字形的 Unicode。

現在大部分具有國際化特征的軟件核心字符處理都是以 Unicode 為基礎的,在軟件運行時根據當時的 Locale/Lang/Codepage 設置確定相應的本地字符編碼設置,并依此處理本地字符。在處理過程中需要實現 Unicode 和本地字符集的相互轉換,甚或以 Unicode 為中間的兩個不同本地字符集的相互轉換。這種方式在網絡環境下被進一步延伸,任何網絡兩端的字符信息也需要根據字符集的設置轉換成可接受的內容。

Java 語言內部是用 Unicode 表示字符的,遵守 Unicode V2.0。Java 程序無論是從/往文件系統以字符流讀/寫文件,還是往 URL 連接寫 HTML 信息,或從 URL 連接讀取參數值,都會有字符編碼的轉換。這樣做雖然增加了編程的復雜度,容易引起混淆,但卻是符合國際化的思想的。從理論上來說,這些根據字符集設置而進行的字符轉換不應該產生太多問題。而事實是由于應用程序的實際運行環境不同,Unicode 和各個本地字符集的補充、完善,以及系統或應用程序實現的不規范,轉碼時出現的問題時時困擾著程序員和用戶。

其實解決 JAVA 程序中的漢字編碼問題的方法往往很簡單,但理解其背后的原因,定位問題,還需要了解現有的漢字編碼和編碼轉換。相信這樣的東西大家都見過了

new String(request.getParameter("test").getBytes("iso-8859-1"),"GBK")

但這樣的代碼相信不是一個解決的辦法,這樣會增加程序的復雜度,寫數據庫,提交表單,URL中傳中文參數,到處都是中文問題!作為一個連走路都要算計最短距離的懶人,當然不愿天天叨念著new String(request.getParameter("test").getBytes("iso-8859-1"),"GBK"),然漢戰戰兢兢的處理各種字符轉換的問題,我跋山涉水,翻山越嶺,終于找到了完美的解決方式,在TOMCAT中只需要簡單的配置,引入2個文件就可以輕松搞定。

前提條件,每個頁面使用

<%@ page contentType="text/html; CHARSET=utf8" language="java" import="java.sql.*" errorPage="" %>

<meta http-equiv="Content-Type" content="text/html; CHARSET=utf8">

地球人都知道的東西。

步驟1:添加過濾器

在TOMCAT中找到這2個文件RequestDumperFilter.java, SetCharacterEncodingFilter.java,他們位于D:\Tomcat5.0.27\webapps\jsp-examples \WEB-INF\classes\filters,加到你的工程文件里去,編譯他們。

步驟2:配置WEB.XML

在web.xml里加入這一段

……

<filter>

<filter-name>Set Character Encoding</filter-name>

<filter-class>filters.SetCharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>GBK</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>Set Character Encoding</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

……

看到沒有?這樣你就不用寫那些麻煩的轉換代碼了,當然這樣還不足以解決問題。

步驟3:修改server.xml

在server.xml修改2個地方

<Connector port="8080"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

debug="0" connectionTimeout="20000"

disableUploadTimeout="true" URIEncoding='GBK'/>

<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"

port="8009" minProcessors="5" maxProcessors="75"

enableLookups="true" redirectPort="8443"

acceptCount="10" debug="0" connectionTimeout="0"

useURIValidationHack="false" protocol="AJP/1.3"

protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"

URIEncoding='GBK'/>

OK,搞定!

三、APACHE和TOMCAT他們倆關系非同一般

Apache和tomcat都是很優秀的軟件,更可貴的是它們是免費的。其實他們2個都是jakarta項目的重要組成部分。按輩分來講, TOMCAT是APACHE的兒子,APACHE的專長是解析靜態文件,CGI,PHP……圖片……,兒子當然不能搶了老爹的飯碗,所以TOMCAT只有在J2EE這個上面發憤圖強,其實TOMCAT并非不能干他老爹的活,只是穩定性差點而已(偶沒有明顯的感覺,可能是商業炒作吧),現在大家明白為什么把他們2個扯一起了吧,上陣還靠父子兵呢~

把2個家伙整一起有大致有2種方法,一種是利用mod_jk2.so,一種是利用mod_jk_1.2.5_2.0.47.dll。這2個東東叫聯接器(TOMCAT就是通過這家伙與apache勾搭上的)

1、 利用mod_jk_1.2.5_2.0.47.dll在WINDOWS下整合

步驟1:準備材料

apache2.0.52

http://apache.te8.com/dist/httpd/binaries/win32/apache_2.0.52-win32-x86-no_ssl.msi

tomcat5.0.27

http://apache.linuxforum.net/dist/jakarta/tomcat-5/v5.0.19/bin/jakarta-tomcat-5.0.27.exe

JDK(這個不用說了吧^_^)

mod_jk_1.2.5_2.0.47.dll(關鍵是這個東東啊,找了我N久),據說在下面連接可以下到,最后在我同事那找到的。

http://apache.linuxforum.net/dist/jakarta/tomcat-connectors/jk/binaries/win32/mod_jk_1.2.5_2.0.47.dll

安裝apache\ tomcat\JDK。

步驟2:安裝后設置環境變量

設置我的電腦\屬性\高級\環境變量\新建系統變量 變量名:JAVA_HOME 變量值:C:\JBuilderX\jdk1.4 (指向JDK的實際安裝路徑);TOMCAT_HMOM 變量值:Tomcat5.0.27;lasspath 編輯變量值中加上 ……;%JAVA_HOME%\bin;%JAVA_HOME%\lib;%TOMCAT_HOME%\bin;.;

測試一下,訪問http://localhost和http://localhost:8080,默認安裝是不會有什么錯誤的^_^

把連接器mod_jk_1.2.5_2.0.47.dll COPY到D:\Apache2\modules\下。

步驟3:apache配置

在d:\Apache2\conf下找到httpd.conf,找到DirectoryIndex,在index.html后添加index.jsp;查找“listen”用于本機測試時:Listen 127.0.0.1:80,我的是這樣設置的Listen *:80

查找AddDefaultCharset設置為AddDefaultCharset off,這樣APACHE將以你頁面定義的字符集解析頁面。

在最后添加如下代碼:

<VirtualHost *:80> #localhost為本機,你可用本機ip

ServerAdmin darkxie@hotmail.com #你的mail地址

DocumentRoot F:/uutang/uutang #你的項目組根目錄

ServerName dark #你的服務名,若你的機器有域名,設為域名

ErrorLog logs/ErrorLog.txt #錯誤日志

CustomLog logs/CustomLog.txt common #訪問日志

JkMount /servlet/* ajp13 #讓Apache支持對servlet傳送,用以Tomcat解析

JkMount /*.jsp ajp13 #讓Apache支持對jsp傳送,用以Tomcat解析

JkMount /*.do ajp13 #讓Apache支持對struts的action傳送,用以Tomcat解析

</VirtualHost>

LoadModule jk_module modules/mod_jk_1.2.5_2.0.47.dll

JkWorkersFile "D:/Tomcat5.0.27/conf/workers.properties"

JkLogFile "D:/Tomcat5.0.27/logs/mod_jk2.log"

JkLogLevel info

步驟4:tomcat配置

在d:\Tomcat5\conf下新建一個workers.properties文件 .內容如下:

workers.tomcat_home=d:\Tomcat5 #讓mod_jk模塊知道Tomcat

workers.java_home=d:\jdk1.3 #讓mod_jk模塊知道j2sdk

ps=\

worker.list=ajp13 #模塊版本,現有ajp13了,不要修改

worker.ajp13.port=8009 #工作端口,若沒占用則不用修改

worker.ajp13.host=localhost #主機,若上面的Apache主機不為localhost,作相應修改

worker.ajp13.type=ajp13 #類型

worker.ajp13.lbfactor=1 #代理數,不用修改

修改TOMCAT的server.xml文件:

<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->

<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"

port="8009" minProcessors="5" maxProcessors="75"

enableLookups="true" redirectPort="8443"

acceptCount="10" debug="0" connectionTimeout="0"

useURIValidationHack="false" protocol="AJP/1.3"

protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"

URIEncoding='GBK'/>

讓TOMCAT知道ajp13協議,apache和tomcat倆父子間靠這個協議溝通。

測試一下,訪問http://localhost和http://localhost:8080,看到相同的頁面沒有?細心點,其實很簡單,看看E文的幫助,搞定不成問題。

2、 利用mod_jk2.so(也叫JK2)整合

jk2是一個jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip文件,主要用的是其中的mod_jk2.so。其實利用mod_jk2.so整合和利用mod_jk_1.2.5_2.0.47.dll整合大同小異,只是換了個聯接器而已,現在一步一步整起來~

步驟1:沒有多說的,安裝好TOMCAT和APACHE

下載jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip,解壓,將mod_jk2放到apache的安裝文件夾下的modules文件夾中。

步驟2:apache配置

在/conf中加入一個work.properties文件,其內容如下:

<!--這個文件的作用不是很清楚,總之路徑設置正確就行了。我的apache裝在D:/Apache2,根據情況自己修改。-->

[shm]

file=D:/ /Apache2/logs/shm.file

size=1048576

<!--這個socket channel是必須的,port和host對應于tomcat端的設置。-->

#The socket channel

[channel.socket:localhost:8009]

port=8009

host=localhost

<!--worker,必須的。-->

#define the worker

[ajp13:localhost:8009]

channel=channel.socket:localhost:8009

<!--url mapping,我的主要是.jsp和struts的.do,servlet的話設置成[uri:/xxx/*]之類的。-->

#uri mapping

[uri:/*] #和第一種方式一樣吧^_^

[uri:/*.jsp]

[uri:/*.do]

worker=ajp13:localhost:8009

在httpd.conf中,在LoadModule那里加入這句:

LoadModule jk2_module modules/mod_jk2.so

在最后加入這句:

JkSet config.file "conf/work.properties"

這是告訴apache去哪里找jk的配置的,根據具體情況修改。

還要修改一下DirectoryIndex,DirectoryIndex index.html index.html.var index.jsp查找“listen”用于本機測試時:Listen 127.0.0.1:80,我的是這樣設置的Listen *:80。

當然還有我們的虛擬目錄:

<VirtualHost *:80>

ServerAdmin darkxie@hotmail.com

DocumentRoot F:/uutang/uutang

ServerName dark

ErrorLog logs/ErrorLog.txt

CustomLog logs/CustomLog.txt common

#JkMount /servlet/* ajp13

#JkMount /*.jsp ajp13

#JkMount /*.do ajp13

</VirtualHost>

步驟3:tomcat配置

Tomcat的端口設置為8080。

在/conf文件夾加入jk2.properties文件,其內容如下:

# Set the desired handler list

handler.list=apr,request,channelSocket

#

# Override the default port for the socketChannel

channelSocket.port=8009

TOMCAT自己已經生成了這個文件,找到相關的地方把注視去掉改一下就成。

注意:用這種方式整合最好是自己編譯mod_jk2.so文件,特別是在unix/linux下,我沒有環境,制作mod_webapp.so沒有自己作過。具體方法,自己去找吧



蘇醄 2007-11-24 09:10 發表評論
]]>
你的孩子需要掌握的26個在學校中所學不到的技能http://www.tkk7.com/sutao/archive/2007/08/23/138867.html蘇醄蘇醄Thu, 23 Aug 2007 07:59:00 GMThttp://www.tkk7.com/sutao/archive/2007/08/23/138867.htmlhttp://www.tkk7.com/sutao/comments/138867.htmlhttp://www.tkk7.com/sutao/archive/2007/08/23/138867.html#Feedback0http://www.tkk7.com/sutao/comments/commentRss/138867.htmlhttp://www.tkk7.com/sutao/services/trackbacks/138867.htmlJuly 9, 2007

原文地址:27 Skills Your Child Needs to Know That She’s Not Getting In School

譯文地址:你的孩子需要掌握的26個在學校中所學不到的技能

翻譯:Angelived ︱個人發展

每個人都熟悉我們的教育系統,一般而言,并沒有教會我們小孩基本的閱讀、寫作、科學的技能,而這些都是他們在即將到來的高科技時代中競爭的必備技能(至少,這是擺在我們面前的現實,我們不在這里對它進行爭論)。

但是,生活中需要的技能遠比在學校中學習的基本學科多,除非你遇到一個愿意打破常規的老師, 否則你的孩子將無法學到他應該在生活中掌握的至關重要的技能。

思考一下你自己的經驗。當你高中畢業后,你知道你要在生活中生存下來所需要的所有東西嗎?如果你幸運的話,你知道怎么閱讀,掌握了一些基本的歷史知識和數學技能,如果你更幸運的話,你掌握了一個好的學習習慣,那會讓你在大學中更容易適應。

但是你為生活準備好了嗎?大多數好像還沒有吧,除非你有一個非常關切你的父母(教會你那些技能)。實際上,我們中的很多人迷茫地度過了成年的早起階段(20歲-30歲),就是因為我們沒有掌握那些技能。我們正在為此付出代價。

那個階段(指從小學到高中)是生活中必經的階段,你可能會說,在畢業之后再學習那些課程(指必備的技能)。但是我們也能讓小孩在獨立之前掌握其中的一些技能,如果學校不能教會他們這些的話,那就讓我們自己動手吧。

接下來所要談的就是孩子在成人之前需要學習的課程(技能)。或許你也可以添加其他的技能在這張列表中,但是至少這張列表是一開始時應該學習的要點。

需要注意的是要如何教會他們這些東西:這些課程不能通過說教或者課本來教授,它們只能通過實例、交談、演示和允許孩子自己去做這些事情(剛開始要給 予一定的監督指導),從而教會他們。一旦你告訴了他們某個技能,就要演示給他們如何去做,然后讓他們在監督之下自己做幾次,給孩子獨立做這些事情的自信, 讓他從錯誤中學習經驗。不時的通過交談檢驗他們所學到的技能。(譯者:我認為孩子是父母的鏡子,要想讓孩子掌握這些技能,父母一定要以身作則,才能起到正 確的指導作用。)

理財

  • 存錢 。花的錢不要比賺的多,這是多么簡單的道理,很多年輕人都懂得這個道理,知道該怎么遵守它。從小就教會你的小孩把他收到的或者賺到的零用錢存在銀行里。教導他如何設定一個節省計劃,然后讓他學會節省,最后用這些錢給他購買任何他想要買的東西。
  • 預算 。我們(指成年人)當中的很多人害怕這個工作,因為它而遭受許多麻煩,這是因為我們缺乏做細致的預算的 理解和技能。教會孩子 簡單的預算技能,這樣一來,他們在長大時做預算的話就沒問題了。你可以等到他們到了十幾歲的時候在教他們——這也是個好事,因為這會告訴他們為什么學習數 學是必要的。
  • 付款 。給他們帳單讓他們自己付款,并且教育他們付款要準時,在網上或者實地支付。教會他們如何寫支票,證件以及如何在網上支付,以及如何確定支付不會遲到——不論是立即支付還是自動支付。
  • 投資 。什么是投資?為什么投資是必要的?你是怎樣投資的?有哪些不同投資的方式?你是怎樣研究一項投資的?投資是怎樣隨著時間變化的?這是一個與你的孩子進行談話的好話題。(譯者:應該從小就培養孩子投資的意識,人生就是一項投資)
  • 節儉 。這是應該從小就教會他們的。在購物時節省,比較不同價格和質量的產品;使用耐用的物品,不要浪費;在家里吃飯,不要在外邊花太多的錢吃飯;控制購物的欲望。當我們外出大量購物的時候,包括圣誕節前,我們也要教導他們節儉。
  • 信用 。這是大多數成人所面臨的一個主要問題。教育他們對信用負責,如何避免欠過多的債務,如何安全的使用信用卡。
  • 退休 。努力工作然后退休,還是終生工作(只有很短的退休時間)呢?這是個個人問題,但是你的孩子應該知道如何 在前者與后者之間做出 選擇,并且知道應該各要怎么去做,為何要在年輕的時候考慮退休的事情,這兩個選擇有什么不同,以及如何自動去做。(這一段翻譯的不大清楚,我也沒有完全弄 明白后幾句是什么意思)
  • 慈善事業 。告訴他們為什么這是錢的一項很重要的用途,以及如何將它培養成一種習慣。這不但是一個財務問題,更是一個社會問題。也要引導他們如何無償奉獻自己的時間和努力。

思考

  • 批判性思維 。這是一項在學校中所沒有教的重要技能。目前,我們被教導成為機器人,聽從老師的話,不要問為什 么,接受老師告訴我們的 東西,不用去思考,做老實的雇員,閉上嘴。如果你是一個老板,你可能會希望你的員工像上邊說的那樣,如果你是一個政客,你可能會希望你的市民像上邊說的那 樣。但是你想要你的孩子也成為那個樣子么?一個沒有疑問、無知的市民/雇員/學生?如果是那樣的話,請繼續看下一個技能,如果不是的話,就開始介紹給你的 孩子,為什么要養成質問的習慣,并培養他們如何尋找答案的技能。怎樣權威的發問——沒有一個正確的答案來回答這個問題。談話是一個不錯的方式來完成這個技 能的教導。
  • 閱讀 。當然,我們在上學的時候學過月的。但是學校通常所教的令人厭煩。將學校之外精彩的世界展示給你的孩子,指導他們如何通過網絡找到材料,并且告訴他們如何評價他們閱讀材料的可信性、邏輯性以及真實性。

成功

  • 樂觀的思考 。雖然嚴密的思考是一項非常重要的技能,對未來生活的前景充滿樂觀也同樣重要。當然,事情有時候會很糟糕,但是它們會好起來的。積極地去尋找解決問題的方案而不是抱怨,最重要的是,要讓他們學會相信自己的能力,不要抱有任何消極的念頭。
  • 動力 。讓他們知道,實現目標的關鍵不是紀律,而是動力。如何激發自己的動力,有什么不同的方法,并讓他們感受到實現目標的快感。剛開始給他們設定小的、容易實現的目標,讓他們逐漸發展這個技能。
  • 不要拖延 。拖延是大多數成年人(甚至是小孩)所面對的問題。現在,我認為應該可以抽出一段時間來無聊地打發,可以偷懶一會,娛樂一下。但是當我們必須做某些事情的時候,我們應該如何自己去做它呢?分析一下拖延背后的原因,如何克服拖延,這是你能夠教會孩子的一項基本技能。
  • 激情 。成功的一個重要途徑就是找到某個你充滿激情的東西,并以它為生。你的孩子在年輕的時候不知道這個問題的答案,但是你應該指引他如何找到他的激情所在以及如何繼續發展它,并且告訴他為什么這是如此重要。

社交

  • 反對競爭主義 。當我們還是小孩的時候,我們被灌輸的是競爭主義。在成人的世界里,競爭也是我們行為表現。那會 導致卑鄙的手段、怨恨 以及其他類似的東西。相反的,給你的孩子講授許多成功的人的經歷,讓他們知道如果你幫助他人成功的話,你也會更容易成功,以及他人會如何以幫助你作為回 報。讓他們明白結交朋友或同盟比樹立敵人的好處更多,并告訴他們如何去結交朋友。讓他們在競爭之前學會合作與團隊精神。
  • 同情 。這在學校中是沒有教過的。實際上,學校不但沒有教會孩子如何同情他人,幫助他們減少痛苦,相反的學校經 常教育孩子增加他人的 苦難(作者為什么會這樣想呢?可能美國與國內的情況不同吧)。學會站在對方的角度看待問題,嘗試著理解他們,并且幫助他們擺脫苦難,這是你應該教導孩子 的。
  • 關愛 。關愛是同情的同胞胎兄弟,不同的是,它不但希望為對方減少痛苦,同時希望對方快樂。這兩者都是至關重要的,因此教會你的孩子擁有一顆關愛的心,他的生活也會充滿快樂。
  • 傾聽 。我們的孩子在學校中學會如何傾聽了么?或者如何與他人交談?或許這就是為什么許多成年人沒有掌握這個至關重要的技能的原因。學習如何真正地傾聽他人講話,去理解他們所說的話,去領會其中的涵義。這對于交往非常重要,你的孩子應該學會。
  • 交談 。與傾聽有著密切的聯系,但是交談的藝術是在學校中所沒有教的。事實上,小孩接受的教育是在大多數情況下 交談是不好的(比如說 上課談話、與陌生人聊天),但是大多數情況,交談是必須的,而不是演講。這是一個非常重要的社交技能,它應該從小在家中就培養。學會與你的孩子交流,而不 要只讓他聽你講話。

基本技能

  • 開車 。為什么需要汽車(不,不是為了擺酷),如何買一輛實用的汽車,如何保養汽車,發動機是如何工作的,汽車拋錨了該怎么處理,如何修理汽車。這些都是你應該教會孩子的基本技能。
  • 家務 。如何修理屋子里的器具以及如何保養它們。鉛制品,電器,加熱器和制冷器,油漆,草坪,一切的器具。基本的維護和修理的工具和技能,以及如何打電話請專業的人員幫忙。
  • 清潔 。太多的成年人不知道如何洗衣服,不知道如何打掃房屋,不知道如何保持屋子干凈整潔,甚至不知道每周或者每月進行一次打掃。教會你的孩子所有這些事情,而不要只告訴他們要做什么。
  • 組織 。教會他們如何使每樣東西各就其位,如何列一個活動安排表,如何解決日常事務,以及如何集中精力在重要的事務上面。

快樂

  • 享受生活的樂趣 。小孩在這一點上沒有多大的問題,但是知道它的重要性以及如果做到這一點,即使對一個大人,也會非常有幫助的。為你的孩子樹立一個好的榜樣,你的孩子會跟你學的。
  • 找到目標 。無論是崇高的宗教信仰,還是使你的家庭快樂的愿望,抑或是找到工作的目標,生活里有一個目標是非常重要的。教育你的孩子目標的重要性,以及如何自己找到目標。
  • 發展親密的關系 。教會你的孩子這個技巧最好的方法就是與你的孩子建立親密的關系,以你與配偶或者其他人為模范。教會他們發展這些類型的關系的技巧,告訴他們這一點的重要性,以及如何克服遇到的難題。在與人交往中總會有摩擦,但是掌握了正確的溝通、折衷的技巧,他們就能輕易的解除誤會。

你有其他的技巧要添加到這個列表中嗎?不妨在評論中告訴大家。

PS:原文為27個技能,本文刪去了比較難翻譯過來的一點,嘿嘿,還請原諒。這篇文章是為廣大的父母寫的,目的是告訴你應該怎么樣對孩子進行早期教 育,如果你想讓你的孩子成才,那么文章中所提到的這些技能應該盡早教給孩子,這些都是他們在這個社會中立足的基本技能。做為一個剛剛成年的大學生,我深刻 的體會到以上技能的重要性,我正因為缺乏某些技能而煩惱。如果你希望你的孩子在將來能夠有一個更好的發展,能夠更好的成才的話,那么這些技能是必須教給他 們的。學校不做這個工作,就讓家長們自己動手來做吧!




蘇醄 2007-08-23 15:59 發表評論
]]>
主站蜘蛛池模板: 一级女性全黄生活片免费看| mm1313亚洲国产精品无码试看| 国产免费福利体检区久久| 免费观看国产精品| www亚洲精品久久久乳| 一区二区三区亚洲视频| 美女黄色免费网站| 亚洲色偷拍区另类无码专区| 一道本不卡免费视频| 久久久久亚洲精品男人的天堂| 成人无码精品1区2区3区免费看| 亚洲国产无套无码av电影| 日韩精品免费视频| 亚洲综合色丁香麻豆| 欧洲黑大粗无码免费| 亚洲av无码专区亚洲av不卡| www.亚洲色图| 久章草在线精品视频免费观看| 99久久精品国产亚洲| 成年网站免费视频A在线双飞| 亚洲熟妇自偷自拍另欧美| 免费中文字幕在线观看| 一区二区三区在线观看免费| 亚洲AV日韩AV天堂一区二区三区| 97人妻无码一区二区精品免费| 亚洲人成色在线观看| 亚洲片一区二区三区| 国产高清不卡免费视频| 77777亚洲午夜久久多喷| 国产午夜无码视频免费网站| 中文字幕免费观看全部电影| 亚洲首页在线观看| 日韩特黄特色大片免费视频| 色www永久免费网站| 中文字幕在线观看亚洲视频| 亚洲成a人片在线播放| 中文字幕免费在线| 五月婷婷免费视频| 亚洲精彩视频在线观看| 亚洲性久久久影院| 成人毛片18女人毛片免费视频未|