1. 程式人生 > >Tomcat下開發websocket進行二維碼掃碼登入

Tomcat下開發websocket進行二維碼掃碼登入

一、開發環境:

tomcat(apache-tomcat-7.0.64),Java API for WebSocket(JSR 356),ssh(struts2-2.3.36,spring-3.2.7.RELEASE, hibernate-3.6.10.Final)

1:Tomcat從7.0.27開始支援WebSocket,從7.0.47開始支援JSR-356。剛開始本想使用apache-tomcat-7.0.90.但是啟動後導致系統報錯:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC。經查詢發現是由於在tomcat 7.0.73新增對http請求url的規範限制,不允許使用包含未編碼的花括號的url進行請求。當然這個不是重點,重點是這個限制在tomcat 7.0.73中是必選的,這就導致一些現有網站要升級tomcat的時候出現嚴重的問題。所以在tomcat 7.0.73版本中,有人指出該限制做成必選屬於BUG。於是在7.0.73版本後,tomcat維護者把該限制做成可選的,這個修改體現在tomcat中的 catalina.properties 檔案中,該檔案新增一個屬性 tomcat.util.http.parser.HttpParser.requestTargetAllow=|。這個屬性是用來決定是否限制不經過編碼的花括號({})的,預設是注掉的,也就是說預設是限制的。但是把註釋去掉後還是報錯,所以選擇了apache-tomcat-7.0.64。

2:程式碼開發

pom中增加:

		<dependency>
			<groupId>org.apache.tomcat</groupId>
		    <artifactId>tomcat-websocket-api</artifactId>
		    <version>7.0.64</version>
		    <scope>provided</scope>
		</dependency>

web程式碼:使用qrcode.js,瀏覽器自帶websocket。