TOMCAT-5.5でGETリクエスト文字化け 2009 年 2 月 15 日

ごくごく簡単なフォームを作り、GETでポストすると日本語が文字化けするので、
/conf/server.xmlのConnector要素に useBodyEncodingForURI=”true” を指定する。


Tomcatをインストールしたディレクトリ/conf/server.xml

JAVA
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
 useBodyEncodingForURI="true"/>

JSPファイル

HTML
<%@page contentType="text/html; charset=Windows-31J"%>
<html>
<body>
<h2>EchoServletの入力</h2>
<form action="../EchoServlet2">
<input type="text" name="message"/>
<input type="submit">
</form>
</body>
</html>

サーブレット

JAVA
package input;

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 EchoServlet2 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		request.setCharacterEncoding("Windows-31J");
		String msg = request.getParameter("message");

		response.setContentType("text/plain; charset=Windows-31J");
		PrintWriter out = response.getWriter();
		out.println("message=" + msg);
	}
}

関連する記事:

Leave a Reply