我和Tomcat的相愛相殺

今天寫這片博客,記錄一下我使用Tomcat遇到的一些問題,雖然現在的技術發展到spring boot、spring cloud等技術時代,可能使用Tomcat 做服務器部署項目的時代要過去了,但是也有一些需要維護的項目可能使用tomcat,或者在一些學校教學或者個人開發一些小項目可能或用到,所以記錄一下,希望能解決您的問題。同時,文章中若有不正之處或者沒有涉及到的問題,歡迎大家留言評論指正。

1.剛裝上Tomcat,startup.bat啓動閃退什麼鬼?

問題描述:tomcat解壓路徑/bin/stratup.bat(windows環境下)啓動tomcat,出現黑窗口閃退情況.

這種情況一般是是解壓版的tomcat,此時需要在startup.bat文件的頭部加上jdk和tomcat的環境變量。(別忘了在shutdown.bat文件裏面也加上哦)

SET TOMCAT_HOME=E:\tomcat-7.0 (解壓後的tomcat文件目錄)
SET JAVA_HOME=D:\Java\jdk1.7 (java jdk目錄)

2.tomcat啓動成功歡迎頁面出來了,我扔了一個靜態頁面,爲什麼不顯示?

3.表單填完數據,後臺爲何獲取到是中文亂碼?

問題2,3,可能都是編碼格式惹的禍

<!-- 修改編碼問題 -->
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />

4.web項目Run As發佈了,爲何訪問不了?

你修改項目的發佈路徑了嗎?

在這裏插入圖片描述

5.編碼改成UTF-8了,中文怎麼還是亂碼?

server.xml文件改了編碼格式,改的只是get請求的編碼格式。對於post請求的編碼格式你注意了嗎?

一、在HTML頁面中使用meta標記可以確保瀏覽器按照指定的字符集進行解碼頁面,並限定表單提交時的數據編碼方式
<meta http-equiv="content-type" content="text/html;charset=utf-8">
★在服務器端需要在調用getParameter()方法讀取參數之前,告訴瀏覽器如何解碼,使用如下代碼即可完成該設置:
request.setCharacterEncoding("utf-8");
★注意該方法一定要要放在所有request.getParameter()方法之前。
★這種方式只針對POST請求有效。
二、也可以使用轉碼:String username = request.getParameter("username");
username = new String(username.getBytes("iso-8859-1"),"UTF-8");

對於項目中使用了spring這樣的框架的項目,在項目的web.xml配置字符過濾器就可以了。

<!-- 設置servlet編碼開始 -->
	<filter>
		<filter-name>Set Character Encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<async-supported>true</async-supported>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>Set Character Encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 設置servlet編碼結束 -->

6.ajax明明傳值了,可contorller裏的參數會是null?

先說一下出現這個問題的需求,首先頁面加載一張後臺的圖片,然後使用canvas在圖片上做一些繪製,然後再把圖片保存回服務器。

在圖片繪製完成後,我是用的base64將圖片轉成字符串保存到傳到後臺,然鵝在後臺卻接到的參數都是null,打開瀏覽器的network裏面顯示請求request heards裏面參數是有的可把我納悶死了。後來發現是圖片轉成字符串導致參數數據過大,被tomcat給屏蔽掉了。

解決方案:tomcat/conf/server.xml

<Connector port="2018" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxPostSize="-1"/>

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章