程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> servlet 處理亂碼成績

servlet 處理亂碼成績

編輯:關於JAVA

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後,前面的語句就會報錯,如許就阻攔了統一個頁面停止了屢次跳轉。不愛好的網友誤噴,感謝協作,感激幫我挑錯的網友,由於如許我才會赓續提高,真心感激你們

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved