#java #jsp #servlets #character-encoding
#java #jsp #сервлеты #кодировка символов
Вопрос:
Я создаю веб-приложение Java, и у меня возникла проблема с интернационализацией приложения.
- Когда я использую свой EncodingFilter для настройки кодировки запроса / ответа, запись в базе данных сохраняется в виде странных символов
شششش شششش
- Если я удалил настройки EncodnigFilter, записи базы данных сохраняются нормально, но текст в моих файлах JSP отображается в виде вопросов, помеченных
??????
- Я не использую никаких фреймворков, только Servlet и JSP
- Используемая база данных — Apache Derby (встроенная)
Вот мой кодировщик
@WebFilter(filterName="EncodingFilter", urlPatterns={"/*"})
public class EncodingFilter implements Filter{
private FilterConfig filterConfig=null;
private String encoding;
public void init(FilterConfig filterConfig)
{
this.filterConfig=filterConfig;
encoding = filterConfig.getInitParameter("requestEncoding");
if (encoding == null) encoding = "UTF-8";
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
if (null == request.getCharacterEncoding()) {
request.setCharacterEncoding(encoding);
}
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
public void destroy() {
this.filterConfig=null;
}
}
и это мой языковой элемент управления, который используется для изменения языка на основе запроса пользователя
@WebServlet(name="LanguageController",urlPatterns={"/Language"})
public class LanguageController extends BaseControler{
private static final long serialVersionUID = 1L;
private ResourceBundle bundle;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doExecute(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doExecute(req, resp);
}
private void doExecute(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException{
String refer = req.getHeader("referer");
if(refer == null)
refer = "index.jsp";
String param = req.getParameter("lang");
bundle = ResourceBundle.getBundle("messages",new Locale(param.toUpperCase()));
HttpSession session = req.getSession();
session.setAttribute(SessionKeys.LANGUAGE, bundle);
session.setAttribute(SessionKeys.LANGUAGE_STRING, param.toUpperCase());
resp.sendRedirect(refer);
}
}