今天使用NetBeans6.1開發servlet程序,使用GreetingServlet.java提交中文表單,ResponseServlet.java接收中文表單卻顯示亂碼。我上網查亂碼的解決辦法,試了很多次都不行,先放一放。第二天,我記得jsp程序設計中的jsp提交中文表單給servlet處理顯示中文正常,於是我按照那本書上的編碼設置將GreetingServlet.java改了改,運行還是亂碼。我於是添加了一個input.jsp文件,源代碼如下:
<%@ page contentType="text/html;charset=GB2312" %>
<html> <body bgcolor="white">
<h2>您的名字叫什麼?</h2>
<form method=get>
<input type="text" name=username size="25">
<p></p>
<input type="submit" value="提交">
<input type="reset" value="重設">
<%
String username = request.getParameter("username");
if ((username != null) && (username.length() > 0)) {
RequestDispatcher dispatcher =
getServletContext()
.getRequestDispatcher("/response");
if (dispatcher != null) {
dispatcher.include(request, response);
}
}
%>
</form>
</body>
</html>
然後右鍵單擊項目-》屬性-》運行-》相對URL:/input.jsp 。再運行,還是亂碼。我記得書上的這個程序在tomcat的webapps目錄下運行正常。我把這個項目放到tomcat的webapps目錄下運行顯示中文正常,說明是NetBeans的項目編碼設置有問題,我在網上一查,很快查出來,input.jsp的編碼設置應爲
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ page contentType="text/html; charset=UTF-8" %>
然後將ResponseServlet.java的編碼改爲response.setContentType("text/html;charset=UTF-8");
然後NetBeans運行中文顯示正確,Ok!思路一定要靈活,一種思路不行,換一種思路