黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Servlet 采用 forward 時(shí),頁面出現(xiàn)漢字亂碼問題

系統(tǒng) 1958 0

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

servlet 如下,如果去掉注釋,則會(huì)出現(xiàn)亂碼

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);
??}

}

曾經(jīng)嘗試增加如下語句,問題依然存在

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);
??}

}

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

再次測試,發(fā)現(xiàn)是語句的順序有問題,需要調(diào)整為如下的代碼即可

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();? // ?再拿到輸出對(duì)象
????response.setContentType( " text/html;charset=UTF-8 " );
????RequestDispatcher?requestDispatcher?
= ?request.getRequestDispatcher( " /test/test2.jsp " );
????requestDispatcher.forward(request,?response);
??}

}

看來,response.getWriter() 在內(nèi)部的實(shí)現(xiàn)上,影響了輸出流的編碼集。必須先指定編碼集,再調(diào)用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 時(shí),頁面出現(xiàn)漢字亂碼問題的分析


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論