Чтобы изучить / попрактиковаться в использовании struts 2, я использую архетип maven struts2-archetype-starter.
Я столкнулся с проблемой при попытке добавить свой собственный фильтр и надеялся, что кто-то может указать мне правильное направление.
Я использую eclipse с maven для своего процесса сборки, а Tomcat 8.5 в качестве локального сервера.
Мне удалось настроить некоторые базовые c действия. Теперь я пытаюсь добавить фильтр, чтобы установить кодировку запросов, чтобы я мог обрабатывать ввод на японском языке. Для этого я сослался на этот ресурс о фильтрах, чтобы создать свой собственный фильтр, на который я ссылаюсь в Интернете. xml файл моего проекта
Справочный источник по фильтрам: https://www.oracle.com/java/technologies/filters.html
Однако, когда я пытаюсь получить доступ к URL-адресу своего проекта, я получаю ошибку 404.
Я пробовал добавлять точки останова в свой фильтр и отлаживать проект на сервере, но точка останова никогда не попадает. (В противном случае я могу отлаживать и использовать точки останова)
В мой файл xml Я добавил объявление фильтра:
<filter>
<filter-name>MyEncoder</filter-name>
<filter-class>jono_group.mav_arch_2.filters.MyChaEnFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>
и это сопоставление фильтра
<filter-mapping>
<filter-name>MyEncoder</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Они располагаются перед всеми другими фильтрами и сопоставлениями фильтров, соответственно, с намерением, чтобы они выполнялись в начале цепочки фильтров.
С указанным выше фильтром и сопоставлением фильтров, maven build (чистый пакет работает успешно, ошибок нет. Но я получаю 404. Как только я удалю их обе, ошибка 404 исчезнет, и мои действия будут работать должным образом.
Любая помощь будет очень оценен.
Мой класс фильтра следующий:
package jono_group.mav_arch_2.filters;
import java.io.IOException;
import java.nio.file.DirectoryStream.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class MyChaEnFilter implements Filter
{
private FilterConfig filterConfig = null;
private String encoding;
public void doFilter(ServletRequest request,
ServletResponse response, FilterChain chain) throws
IOException, ServletException {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws
ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
public void destroy() {
this.filterConfig = null;
}
@Override
public boolean accept(Object entry) throws IOException {
// TODO Auto-generated method stub
return false;
}
}