1. 程式人生 > >response.setContentType與 request.setCharacterEncoding 的區別

response.setContentType與 request.setCharacterEncoding 的區別

以下是轉載內容:

1、request.setCharacterEncoding()是設定從request中取得的值或從資料庫中取出的值

       指定後可以通過getParameter()則直接獲得正確的字串,如果不指定,則預設使用iso8859-1編碼。值得注意的是在執行setCharacterEncoding()之前,不能執行任何getParameter()。而且,該指定只對POST方法有效,對GET方法無效。分析原因,應該是在執行第一個getParameter()的時候,java將會按照編碼分析所有的提交內容,而後續的getParameter()不再進行分析,所以setCharacterEncoding()無效。而對於GET方法提交表單是,提交的內容在URL中,一開始就已經按照編碼分析提交內容,setCharacterEncoding()自然就無效。

get需在Tomcat的server.xml中的:

URIEncoding="GBK" />) 加入URIEncoding="GBK",解決get請求亂碼問題

2、response.setContentType("text/xml;charset=GBK")是設定頁面中為中文編碼 
前者是設定動態文字(引數,資料庫),後者設定頁面靜態文字

response.setContentType指定 HTTP 響應的編碼,同時指定了瀏覽器顯示的編碼. 
response.setCharacterEncoding設定HTTP 響應的編碼,如果之前使用response.setContentType設定了編碼格式,則使用response.setCharacterEncoding指定的編碼格式覆蓋之前的設定.
與response.setContentType相同的是,呼叫此方法,必須在getWriter執行之前或者response被提交之前


補充:
問題1 :從Jsp頁面頁面傳遞引數到Servlet顯示中文亂碼
解決辦法:

如果是post 方法提交 則加入以下程式碼:
request.setCharacterEncoding("GBK");//注意首先保證編碼一至,jsp頁面用什麼編碼在此就用什麼編碼(GBK/GB2312等),此程式碼只對post提交方式有效
response.setContentType("text/xml;charset=GBK")是設定頁面中為中文編碼
備註:以上兩行程式碼必須放在PrintWriterout=response.getWriter(); 之前
get 方法提交
如變數name 用
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"GBK");

問題2:解決get方式提交亂碼問題:

修改tomcat server.xml 檔案,加上紅色部分程式碼

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
              URIEncoding="GBK"/>

備註:以上字元編碼格式根據自己需要設定,只要保持一致即可


本文轉自https://blog.csdn.net/joywy/article/details/8006645

相關推薦

response.setContentType request.setCharacterEncoding 區別

http://blog.csdn.net/joywy/article/details/8006645 ps1:最初的版本只有response.setContentType,後來被request.setCharacterEncoding替代了。 ps2:request只對p

response.setContentType request.setCharacterEncoding區別

以下是轉載內容:1、request.setCharacterEncoding()是設定從request中取得的值或從資料庫中取出的值       指定後可以通過getParameter()則直接獲得正確的字串,如果不指定,則預設使用iso8859-1編碼。值得注意的是在執行s

response.sendRedirect()request.getRequestDispatcher().forward()的區別

JSP中response.sendRedirect()與request.getRequestDispatcher().forward(request,response)這兩個物件都可以使頁面跳轉,但是二者是有很大的區別的,分條來說,有以下幾點: ①respons

JSP學習筆記——response.sendRedirect()request.getRequestDispatcher().forward()區別

一、response.sendRedirect(url)-伺服器將新url傳送給瀏覽器,瀏覽器再根據新url請求 Request.getRequestDispatcher(url).forward(request,response);請求轉發到指定url(伺服器內部跳轉

response.sendRedirect()request.getRequestDispatcher("/index.jsp").forward(request, response)兩者辨析

com getname 傳遞 .get action 必須 caption dispatch 存在 知識點輪廓 一 辨析response.sendRedirect()與request.getRequestDispatcher("/index.jsp").forwar

response.sendRedirect(url)request.getRequestDispatcher(url).forward(request,response)的區別

get 地址 參數 bsp for 頁面 內部 .get 運用 response.sendRedirect(url)跳轉到指定的URL地址,產生一個新的request,所以要傳遞參數只有在url後加參數,如: url?id=1。request.getRequestDispa

javaweb中重定向和請求轉發(response.sendRedirect()和request.getRequestDispatcher(rul).forward(request,response)))的區別

客戶端 不起作用 這也 方法 cnblogs rect() 獲取url rec alt 先來兩張圖,方便理解: 可以看出,重定向時,是服務器向遊覽器重新發送了一個response命令,讓遊覽器再次向url2發送請求,以獲取url2的資源 而請求轉發時,類似於是服務器自己

responserequest回顧學習

你會 獲取數據 war javaweb throw 成功 資源 exce forward 一、response response是servlet.service方法的一個參數,它的類型是javax.servlet.http.HttpServletResponse,在客戶

response.sendRedirect()和request.getRequestDispatcher().forward(request,response)的區別

解決 新的 rain nbsp 響應 服務 war 站點 不知道 轉發方式:request.getRequestDispatcher().forward(); 重定向方式:response.sendRedirect(); 下面是HttpServletResponse.s

教你寫Android網路框架之Request Response請求佇列

                我正在參加部落格之星,點選這裡投我一票吧,謝謝~   前言在教你寫Android網路框架之基本架構一文中我們已經介紹了SimpleNet網路框架的基本結構,今天我們就開始從程式碼的角度來開始切入該網路框架的實現,在剖析的同時我們會分析設計思路,以及為什麼要這樣做,這樣做的好處是

JSP中out.println()response.getWriter().println()輸出的區別

首先說明兩者的主要區別(加*為重點) *1.兩者的類不同,out的類是JspWriter,response.getWriter()的類是PrintWriter。 *2.out是JSP的內建物件,直接就可以呼叫裡面的方法,而PrintWriter呼叫之前需要response.getWrit

JSP中頁面跳轉response.sendRedirect()和request.getRequestDispatcher()的區別

Java Web開發中,採用MVC模式的時候,在控制器完成模型的呼叫之後會選擇介面對使用者響應,用常有2種方式 1,通過response物件的sendRedirect方法重定向: response.

request.getParameterValuesrequest.getParameter的區別

一、 簡單的對比 request.getParameter用的比較多,相對熟悉 request.getParameterValues(String   name)是獲得如checkbox類(名字相同,但值有多個)的資料。   接收陣列變數 ,如checkobx型別 

重定向(response轉發(request

重定向 1.狀態碼:302 2.響應頭:‘location’代表重定向的地址 例: response.setatus(302); response.setHeader("location","/web/servlet2"); 釋:進入“servlet1”,他會自動跳轉到

Extjs form.submit()提交Ext.Ajax.request區別

 之前總是封不起Extjs中form.submit()提交與Ext.Ajax.request()的區別,現在仍是分不清,但是知道怎麼用不會出錯了。 方案1: java action中的程式碼 Java程式碼   String datastring = "

.NET Request.ParamsRequest.QueryString等的區別

Request.Form:獲取以POST方式提交的資料(接收Form提交來的資料); Request.QueryString:獲取位址列引數(以GET方式提交的資料) Request:包含以上兩種方式(優先獲取GET方式提交的資料),它會在QueryString、Fo

sockethttp的區別

單獨 計算機 是否 tcp協議 操作 end 不定 請求 釋放 1、TCP連接 手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網絡建立TCP連接。TCP協議可以對上層網絡提供接口,使上層網絡數據的傳輸建立在“無差別”的網絡之上。 建立起

getRequestURI()getRequestURL()的區別

roo pub ava size header oot apach print connect 引於: http://hi.baidu.com/cloudxpc request.getRequestURI() 返回值類似:/xuejava/requestdemo.jspre

java == equals的區別

rgs str test ring sys gte sta stat oid 兩者都是比較值的 equals更深層 返回的都是TRUE或者是FALSEpublic class StringTest{ public static void main(String[] a

IA64x64的區別

體系 處理 兼容性 不能 什麽 推出 而後 位操作 指令集 說到IA-64與x86-64可能很多人會比較陌生。不知道你在下載系統的時候有沒有註意過,有的地方標註了x86/64/ia-64全版本等字樣。那x86/x64/ia-64都是什麽東西的版本呢?答案就是CPU。 系 統