servlet 處理亂碼成績。本站提示廣大學習愛好者:(servlet 處理亂碼成績)文章只能為提供參考,不一定能成為您想要的結果。以下是servlet 處理亂碼成績正文
關於servlet年夜家應當都很熟習了,明天再溫習一下,假如有哪裡寫的欠好或纰謬的所在願望寬大的網友批駁斧正。明天只評論辯論get和post兩w種方法,他們之間有許多的分歧點,所以處理編碼的方法也會紛歧樣,post的亂碼成績好處理一點,上面先簡略說下http協定,以便我能更好的記憶道理性的器械和他們之間的分歧點。
get方法和post方法都是基於http協定的,它的目標是為了供給一種宣布和吸收html頁面的辦法,由客戶端提議要求,辦事器端停止呼應。
一個完全的要求新聞包含:一個要求行,若干新聞頭和要求實體內容
要求行包含要求方法(get或post), 資本途徑(要拜訪的地址),http版本號(http1.1)
若干新聞頭(好比原諒了閱讀器的內核信息(user-agent),翻開它的父頁面是誰(refer)等
在要求實體內容和新聞頭中有一行空行,將新聞頭和要求實體內容離開,實體內容有效戶提交的
一個完全的呼應新聞包含:狀況行,一個或多個應對頭,一個空行,呼應實體
狀況行:包含http協定版本號,狀況碼和緣由論述
罕見狀況碼:200 正常
404:要求資本不存在
500:辦事器外部毛病
粗略說完http後可以引見get和post方法的分歧的地方了
get方法:
get方法是將提交的內容放到url的前面,長度有所限制,post和get都是基於http協定的,get方法是放到了要求行裡,由於它的參數是在url中的,而post方法是放到要求實體內容裡的,post方法絕對平安,閱讀器不保存緩存信息,而get方法會wk保存緩存,可以從閱讀器的汗青記載裡檢查提交的內容,而且get方法長度無限制,而post沒有。
恰是由於get方法和post方法提交數據時在http協定的地位分歧,處理他們的編碼方法也會分歧
post方法亂碼成績處理:
在servlet的service辦法(doGet或doPost辦法也能夠)中,將request的編碼設置為UTF-8
req.setCharacterEncoding("UTF-8");
如許,request的編碼就沒有成績了,然後將response的編碼也設置為UTF-8;
resp.setCharacterEncoding("UTF-8");
如許,response的編碼也沒有成績了,然則如許寫了今後到閱讀器照樣能夠會出成績的,由於閱讀器不曉得你的編碼格局是甚麼,所以就按著閱讀器的默許格局來顯示,所以要把閱讀器停止顯示時的編碼方法也要設置為UTF-8,語句以下:
resp.setContextType("text/html;charset=utf-8");
同時還要包管你的開辟對象編碼和項目標編碼分歧,否則能夠會湧現亂碼成績,這裡都是以UTF-8為例
get方法亂碼成績處理:
get方法除下面的操作外還要在tomcat的conf目次下的server.xml設置裝備擺設文件外面加上一句話,找到上面這句話,
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修正後為
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" userBodyEncodingForURI="true" />
這類改法比擬靈巧,讓URL的編碼格局隨著頁面的編碼格局一樣,也能夠設置為固定的某一種格局,如
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" EncodingForURI="UTF-8" />
如許就根本上沒有甚麼成績了,假如還有成績,就得用String裡的辦法,將頁面的亂碼改成你想要的格局了,不外,假如下面的方法都對了,這類方法就不怎樣會用到了。
除下面的操作外,也要把數據庫的編碼格局設為與項目標一樣才行,這裡就是改成UTF-8了,由於時光無限,所以寫的比擬粗拙,還有許多器械也都給省略了,不外處理servlet的編碼方法應當是夠了的。
挪用時可以用js,如:
function ceshi() { window.location.href = "UserServlet?uname=zhangsan&realname=" + encodeURIComponent("年夜家好"); }
如許就將年夜家好就不會再顯示漢字到地址欄了(把這句話綁定到提交按扭上),便可以提交到響應的servlet了。這類處理亂碼的方法異樣也實用於jsp
對了,還得再說點跟servlet有關系的,那就是forward和redirect,forward只能是在以後項目停止跳轉,redirect可以跳轉到裡面去,固然,他們還有其余差別,這裡我只說一點我認為主要的器械,那就是不管應用哪種,寫完了forward和redirect後,必定要加上return,假如不加,前面的語句照樣會被履行的,加上return後,前面的語句就會報錯,如許就阻攔了統一個頁面停止了屢次跳轉。不愛好的網友誤噴,感謝協作,感激幫我挑錯的網友,由於如許我才會赓續提高,真心感激你們