Взял пример из книжки. Запустил тут.
С латинскими символами всё в порядке, а с кириллическими кодировка такая:
ÐÑивеÑ
Параметры получаю, вызывая функцию request.getParameter(parName), нужно, чтобы она возвращала стринги в UTF-8. ContentType выставлен в «text/html;charset=UTF-8». Не представляю, куда копать.
Читаешь доки на томкат, правишь CATALINA_OPTS в catalina.sh, перезапускаешь томкат. Затем в IDE создаешь профиль отладки, ставишь точки останова и жмешь отладку. IDE коннектится к томкату, и вуаля - отлаживайся.
Наврал, к JAVA_OPTS добавляешь строчку "-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" и после этого томкат будет на 8000-м порту принимать команды отладчика
У меня получилось. Немного поправив свои скрипты, я запустил отладчик. Он офигенен! Я даже и не мечтал о полноценной отладке, а тут такое.
Но так ничего полезного для себя я не смог обнаружить. Введённый текст я смог отловить только в уже перекодированном виде.
Брейкпойнты ставил в этой функции:
protected void processResponse(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Enumeration paramNames = request.getParameterNames();
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here. You may use following sample code. */
out.println("<!doctype html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Registration Form</title>");
out.println("</head>");
out.println("<body>");
if (!paramNames.hasMoreElements()) {
out.println("<h2>Не было передано ни одного параметра!</h2>");
} else {
out.println("<h2>Были переданы следующие параметры:</h2>");
while (paramNames.hasMoreElements()) {
String parName = (String) paramNames.nextElement();
out.println("<strong>" + parName + "</strong> : "
+ request.getParameter(parName));
out.println("<br>");
}
}
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
Да там кроме этого _метода_ там и смотреть не на что. Pastebin.
Основная часть (скелет сервлета) сгенерирован умной IDE, остальное я списал из книги. Тот самый код из книги.
Спасибо всем, кто советовал. Решение проблемы нашлось. Нужно было добавить фильтр, который бы принудительно выставлял кодировку UTF-8 (или любую другую с кириллицей).
Ссылка на решение.
Можно проверить на моём локалхосте.