Цитата(Alexandr87 @ 22.2.2006, 22:23 ) | А как сообщить серверу, что я намереваюсь передавать параметры в utf-8 |
Самый универсальный способ - использовать фильтр, примерно такой:
Код | import java.io.*; import javax.servlet.*;
public class SelectLanguageFilter implements Filter { private String encoding; public void init(FilterConfig config) throws ServletException { encoding = config.getInitParameter("requestEncoding"); if(encoding==null) encoding="koi8-r"; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain next) throws IOException, ServletException { request.setCharacterEncoding(encoding); next.doFilter(request, response); } public void destroy(){} }
|
И в web.xml описать его таким макаром:
Код | <filter> <filter-name>SelectLanguageFilter</filter-name> <filter-class>ru.esstu.entrant.filter.SelectLanguageFilter</filter-class> <init-param> <param-name>requestEncoding</param-name> <param-value>utf-8</param-value> </init-param> </filter>
<filter-mapping> <filter-name>SelectLanguageFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
|
Фильтр будет выполняться перед всеми запросами, приходящими к веб-контейнеру, и устанавливать кодировку до первого обращения к объекту HttpServletRequest.
Некоторые веб-контейнеры и веб-фреймворки дают возможность устанавливать кодировку запроса в своих настройках. В Spring есть реализация такого же фильтра, можно использовать ее. |