tomcat配置及中文亂碼問題的解決方案
本文要解決的問題:
掌握tomcat的配置,同時解決使用過程中一系列的亂碼問題。
tomcat中文亂碼問題
一、Java中文問題的由來
Java的核心和class檔案是基於unicode的,這使Java程式具有良好的跨平臺性,但也帶來了一些中文亂碼問題的麻煩。原因主要有兩方面,Java和JSP檔案本身編譯時產生的亂碼問題和Java程式於其他媒介互動產生的亂碼問題。
首先Java(包括JSP)原始檔中很可能包含有中文,而Java和JSP原始檔的儲存方式是基於位元組流的,如果Java和JSP編譯成class檔案過程中,使用的編碼方式與原始檔的編碼不一致,就會出現亂碼。基於這種亂碼,建議在Java檔案中儘量不要寫中文(註釋部分不參與編譯,寫中文沒關係),如果必須寫的話,儘量手動帶引數-ecoding GBK或-ecoding
gb2312或-ecoding UTF-8編譯;對於JSP,在檔案頭加上<%@ page contentType="text/html;charset=UTF-8"%>或
本節要重點討論的是第二類亂碼,即Java程式與其他儲存媒介互動時產生的亂碼。很多儲存媒介,如資料庫,檔案,流等的儲存方式都是基於位元組流的,Java程式與這些媒介互動時就會發生字元(char)與位元組(byte)之間的轉換,例如從頁面提交表單中提交的資料在Java程式裡顯示亂碼等情況。
如果在以上轉換過程中使用的編碼方式與位元組原有的編碼不一致,很可能就會出現亂碼。
二、解決方法
對於流行的Tomcat來說,有以下兩種解決方法:
1) 更改 D:\Tomcat\conf\server.xml,指定瀏覽器的編碼格式為“簡體中文”:
方法是找到 server.xml 中的
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"
標記,粗體字是我新增的。
b)更改 Java 程式,我的程式是這樣的:
public class ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
...
}
}
粗體字是必需要有的,它的作用是讓瀏覽器把Unicode字元轉換為UTF-8。這樣頁面的內容和瀏覽器的顯示模式都設成了UTF-8,就不會亂碼了。
tomcat的環境配置
1、Tomcat 7.0 (請到官網下載)的免安裝版的配置(假如將Tomcat 解壓到D:\Program Files目錄,目錄結構為:D:\Program Files\apache-tomcat-7.0.11
1、新增環境變數:在 我的電腦->屬性->高階->環境變數
2、新建系統變數,變數名:CATALINA_HOME 變數值:D:\Program Files\apache-tomcat-7.0.11 (Tomcat 解壓到的目錄)。
3、在系統變數 Path的最後面新增%CATALINA_HOME%\lib;%CATALINA_HOME%\lib\servlet-api.jar;%CATALINA_HOME%\lib\jsp-api.jar 注意它們之間的分號,一定是英文的分號。
4、Tomcat 7.0的管理員的配置,進入D:\Program Files\apache-tomcat-7.0.11(Tomcat目錄)下的conf目錄,編輯tomcat-users.xml,找到最後的:
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
-->
在上面這段後面 新增上:
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="veryhuocom" roles="admin-gui"/>
<user username="tomcat" password="veryhuocom" roles="manager-gui"/>
到這應該知道我們新增的管理員的使用者名稱和密碼是多少了吧!
5、進入Tomcat 目錄下的bin目錄,雙擊startup.bat 啟動Tomcat 在命令列視窗會出來英文提示。
6、瀏覽器輸入:http://localhost:8080 可以看到Tomcat的歡迎頁面就說明配置成功了,點選右上角上manager連線,輸入上面配置的使用者名稱和密碼,就可以進入管理頁面。