亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Servlet 采用 forward 時,頁面出現漢字亂碼問題

系統 1603 0

經常有人問到,在servlet里面forward到一個頁面之后,瀏覽器總是漢字的亂碼。經調試發現,是由于在servlet里面不能正確調用 response.getWriter()方法造成的。

servlet 如下,如果去掉注釋,則會出現亂碼

package ?test;

import ?java.io.IOException;
import ?java.io.PrintWriter;
import ?javax.servlet.RequestDispatcher;
import ?javax.servlet.ServletException;
import ?javax.servlet.http.HttpServlet;
import ?javax.servlet.http.HttpServletRequest;
import ?javax.servlet.http.HttpServletResponse;

public ? class ?TestServlet? extends ?HttpServlet? ... {
??@Override
??
public ? void ?doGet(HttpServletRequest?request,?HttpServletResponse?response)? throws ?IOException,?ServletException? ... {
// ????PrintWriter?out?=?response.getWriter();
????RequestDispatcher?requestDispatcher? = ?request.getRequestDispatcher( " /test/test2.jsp " );
????requestDispatcher.forward(request,?response);
??}

}

曾經嘗試增加如下語句,問題依然存在

package ?test;

import ?java.io.IOException;
import ?java.io.PrintWriter;
import ?javax.servlet.RequestDispatcher;
import ?javax.servlet.ServletException;
import ?javax.servlet.http.HttpServlet;
import ?javax.servlet.http.HttpServletRequest;
import ?javax.servlet.http.HttpServletResponse;

public ? class ?TestServlet? extends ?HttpServlet? ... {
??@Override
??
public ? void ?doGet(HttpServletRequest?request,?HttpServletResponse?response)? throws ?IOException,?ServletException? ... {
????PrintWriter?out?
= ?response.getWriter();
????response.setCharacterEncoding(
" UTF-8 " );
????response.setContentType(
" text/html;charset=UTF-8 " );
????RequestDispatcher?requestDispatcher?
= ?request.getRequestDispatcher( " /test/test2.jsp " );
????requestDispatcher.forward(request,?response);
??}

}

去掉后,就可以正常顯示漢字了,

再次測試,發現是語句的順序有問題,需要調整為如下的代碼即可

package ?test;

import ?java.io.IOException;
import ?java.io.PrintWriter;
import ?javax.servlet.RequestDispatcher;
import ?javax.servlet.ServletException;
import ?javax.servlet.http.HttpServlet;
import ?javax.servlet.http.HttpServletRequest;
import ?javax.servlet.http.HttpServletResponse;

public ? class ?TestServlet? extends ?HttpServlet? ... {
??@Override
??
public ? void ?doGet(HttpServletRequest?request,?HttpServletResponse?response)? throws ?IOException,?ServletException? ... {
????response.setCharacterEncoding(
" UTF-8 " );? // ?先指定輸出流的編碼
????PrintWriter?out? = ?response.getWriter();? // ?再拿到輸出對象
????response.setContentType( " text/html;charset=UTF-8 " );
????RequestDispatcher?requestDispatcher?
= ?request.getRequestDispatcher( " /test/test2.jsp " );
????requestDispatcher.forward(request,?response);
??}

}

看來,response.getWriter() 在內部的實現上,影響了輸出流的編碼集。必須先指定編碼集,再調用Writer才可以。

?

附test2.jsp的代碼

<% @?page?language = " java " ?contentType = " text/html;?charset=UTF-8 " ?pageEncoding = " UTF-8 " %>
< pre > 中文
<%= " 中文2 " %>
</ pre >

web.xml, 未使用任何過濾器?

<? xml?version="1.0"?encoding="UTF-8" ?>
< web-app? id ="WebApp_ID" ?version ="2.4" ?xmlns ="http://java.sun.com/xml/ns/j2ee"
??xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
??xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee?http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
??
< display-name > www.java2000.net </ display-name >
??
< welcome-file-list >
????
< welcome-file > index.html </ welcome-file >
????
< welcome-file > index.htm </ welcome-file >
????
< welcome-file > index.jsp </ welcome-file >
????
< welcome-file > default.html </ welcome-file >
????
< welcome-file > default.htm </ welcome-file >
????
< welcome-file > default.jsp </ welcome-file >
??
</ welcome-file-list >
</ web-app >

Servlet 采用 forward 時,頁面出現漢字亂碼問題的分析


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91资源在线 | 不卡精品国产_亚洲人成在线 | 日韩在线a视频免费播放 | 中文字幕不卡在线播放 | 日本国产一区二区三区 | 热久久国产欧美一区二区精品 | 国产精品亚洲二区在线 | 久久这里只有精品免费视频 | 天天操丝袜 | 久久综合九色综合狠狠97 | 日本1区2区3区 | 夜夜躁日日躁狠狠 | 日本一区二区三区在线观看 | 成年女人黄小视频 | 国产伦精品一区二区免费 | 久99久爱精品免费观看视频 | 鲁一鲁中文字幕久久 | 99成人在线观看 | 一级做a毛片免费视频 | 九九视频在线免费观看 | 欧美成人hd | 国产片91人成在线观看 | 成人性生交大片免费看午夜a | 欧美精品久久 | 能免费看黄的网站 | 在线观看人成网站深夜免费 | 久久www免费人成看国产片 | 国产成人综合视频 | 久久久久99精品成人片三人毛片 | 国产精品欧美日韩视频一区 | 寂寞午夜影院 | 精品日韩一区二区三区 | 91精品成人福利在线播放 | 久久综合九九亚洲一区 | 精品国产网 | 国产亚洲精品麻豆一区二区 | 妖精视频在线观看网站 | 成人精品一区二区激情 | 午夜香蕉成视频人网站高清版 | 日韩在线 | 中文 | 日本成本人在线观看免费视频 |