新聞中心
從form表單提交信息到Servlet JSP頁面進(jìn)行處理的時(shí)候,提交的中文信息若不加處理的話就會(huì)顯示亂碼,如一串????,F(xiàn)在通過一個(gè)例子來進(jìn)行總結(jié)如下:
寫一個(gè)用戶信息提交頁面,通過這個(gè)頁面向Servlet JSP頁面提交用戶信息,代碼如下:

成都創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、虞城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為虞城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
- <%@ page language="java" contentType="text/html; charset=gbk"%>
表單提交 - 用戶名: type="text" name="username">
- 密 碼: type="password" name="password">
- 愛 好: type="radio" name="love" value="運(yùn)動(dòng)">運(yùn)動(dòng)
- type="radio" name="love" value="音樂">音樂
- type="submit" value="提交">
現(xiàn)在寫deal處理頁面,代碼如下:
- <%@ page language="java" contentType="text/html; charset=gbk"%>
顯示用戶信息 - <%
- //request.setCharacterEncoding("gb2312");
- String username = request.getParameter("username");
- //String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"gbk");
- String password = request.getParameter("password");
- //String love = new String(request.getParameter("love").getBytes("iso-8859-1"),"gbk");
- String love = request.getParameter("love");
- %>
- <%= username %>您好,你的密碼是:<%= password %>,您的愛好是:<%= love %>!
從前面的信息提交頁面提交來的信息包含中文,這時(shí)就會(huì)出現(xiàn)亂碼。如:
??????您好,你的密碼是:1234569,您的愛好是:????!
現(xiàn)在,把第8行的注釋符號(hào)去掉,重新執(zhí)行頁面(請(qǐng)確保web服務(wù)器會(huì)自動(dòng)加載更改后的頁面,否則請(qǐng)重新啟動(dòng)web服務(wù)器),這時(shí)可以看到正確的中文信息了,如:
王中玉您好,你的密碼是:9856322,您的愛好是:音樂!
也可以使用另外一種方法進(jìn)行處理,把deal.jsp的第8行注釋掉,然后把第9行、第13行也注釋掉,去掉第10行和第12行的注釋符號(hào),保存好重新執(zhí)行頁面(方法同上),同樣會(huì)顯示正常的信息。
下面通過前面的信息提交頁面向一個(gè)servlet提交信息,然后對(duì)其中的中文亂碼進(jìn)行處理。寫一個(gè)servlet程序(formdeal.java),如下:
- package org.wzhongyu;
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class formdeal extends HttpServlet {
- public void destroy() {
- super.destroy(); // Just puts "destroy" string in log
- // Put your code here
- }
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doPost(request, response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- //response.setContentType("text/html; charset=gbk");
- PrintWriter out = response.getWriter();
- //request.setCharacterEncoding("gbk");
- String username = request.getParameter("username");
- String password = request.getParameter("password");
- String love = request.getParameter("love");
- out.print("您的用戶名:" + username + "
"); //- out.print("您的密碼:" + password + "
"); //- out.print("您的愛好:" + love); //
- }
- public void init() throws ServletException {
- // Put your code here
- }
- }
該servlet的部署描述文件(web.xml)如下:
- version="1.0" encoding="UTF-8"?>
version="2.5" - xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
This is the description of my J2EE component This is the display name of my J2EE component formdeal org.wzhongyu.formdeal formdeal /servlet/formdeal
把信息提交頁面的第7行改為:
重新部署并執(zhí)行頁面,同樣看到顯示的中文信息是亂碼?,F(xiàn)在把第23行的注釋符去掉,重新執(zhí)行會(huì)看到下面的信息,提交過來的中文信息是亂碼: 您的用戶名:??????
您的密碼:123465
您的愛好:????把第25行的注釋符也去掉,重新執(zhí)行,可以看到可以顯示正常的信息了,如下: 您的用戶名:王中玉
您的密碼:5632215
您的愛好:音樂如果只去掉第25行的注釋,執(zhí)行程序則會(huì)顯示下面的信息: ?????????
?????123456 ???????
由此可見,這個(gè)兩個(gè)都不可以忽略掉,也可以從下面的方式驗(yàn)證必須寫上兩個(gè),把formdeal.java里的第29,30,31行的中文換成英文,同樣注釋掉第23行,而不要注釋掉第25行,執(zhí)行后顯示的信息如下:
- username???
- password65462458
- love??
這是由于沒有設(shè)置servlet響應(yīng)的頁面的字符編碼造成的。
在servlet里也可以這樣進(jìn)行處理,把第25行注釋掉,而不要注釋第23行,把第26行和第28行分別改為如下代碼:
- String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"gbk");
- String love = new String(request.getParameter("love").getBytes("iso-8859-1"),"gbk");
以上是Servlet JSP頁面亂碼修改方法,這樣也可以正常顯示中文信息。
【編輯推薦】
- Servlet引擎的安裝
- 配置Servlet開發(fā)環(huán)境
- 標(biāo)簽庫(kù)中JSP Servlet調(diào)用
- 學(xué)習(xí)Java Servlet時(shí)遇到的小問題
- Servlet在session中共享鏈接
分享標(biāo)題:解決Servlet JSP頁面亂碼問題
文章來源:http://m.fisionsoft.com.cn/article/dhjipci.html


咨詢
建站咨詢
