Ошибка кодировки JSP UTF-8 на Glassfish 3.01 - PullRequest
2 голосов
/ 21 февраля 2011

У меня довольно странная проблема. В своем веб-приложении я использую кодировку UTF_8. Это прекрасно работает, пока я не помещу страницу JSP в мою папку / Protected /. Точно такой же файл JSP прекрасно работает под моим корнем документа. Для доступа к папке / protected / я использую фильтр. Как это:

    public void doFilter(ServletRequest request, ServletResponse response,
                     FilterChain chain)
throws IOException, ServletException {

    HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse res = (HttpServletResponse) response;
    HttpSession session = req.getSession();
    PrintWriter out = res.getWriter();
    if (session.getAttribute("user") == null){
        // redirect the user to the login page and give error message
             res.sendRedirect("/myApp/login.jsp");
         }
    else {

    chain.doFilter(request, response);

    }
}

В моем файле sun-web.xml это указано:

<locale-charset-info default-locale="">
<parameter-encoding default-charset="UTF-8"/>
</locale-charset-info>

И в моих jsp файлах я указал это:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

плюс:

Любая помощь очень ценится! Заранее спасибо!

1 Ответ

0 голосов
/ 21 февраля 2011

Избавьтесь от следующей строки в фильтре.

PrintWriter out = res.getWriter();

Вам это вообще не нужно только в фильтре, но также, когда выходной поток или средство записи ответа создаются в первый раз, вы не можете больше изменять его кодировку символов позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...