Я использую фильтр для проверки некоторых параметров в моем приложении. Это обычная вещь для сервлетов, поэтому я использую вместо этого фильтр.
@WebFilter("/ValidateParams")
public class ValidateParams implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession(false);
String param1 = req.getParameter("param1 ") == null ? "" : req.getParameter("param1 ").toString();
if (validation) {
chain.doFilter(request, response);
}
}
}
В одном из сервлетов вместо обычного request.getParameter()
для получения параметров я использую apache commons fileupload для получения формы полей и полей файлов (у меня неизвестное количество входящих файлов)
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
Проблема в том, что если request.getParameter()
вызывается в фильтре, parseRequest
приведет к пустому list.
Я думаю просто исключить этот сервлет из фильтра и реализовать его собственную проверку. Но есть ли способ использовать фильтры и apache загрузку обычных файлов?