Тут многое зависит от вашего приложения, я не буду давать совета, но просто выскажу мнение на счет некоторых вариантов решения.
1) Фильтрация на уровне бизнес-логики. Это самое здравое решение с точки зрения архитектуры.
2) Фильтрация на уровне сервлета. Реализовать технически можно, но уже с точки зрения архитектуры будет смотреться не очень. Сервлет (не равен) логике приложения, поэтому логику следует реализовывать в другом месте, а сервлет предназначен совсем для других целей.
3) Фильтрация на уровне Фильтра. ИМХО это жесть) Ибо фильтры задумывались для чего-то другого.(См
https://jsehelper.blogspot.com.by/2016/01/jsp-serv... пункт что вы знаете о сервлет фильтрах).
4) Реализация на "клиенте" с помощью JavaScript. Технически можно, но не нужно ибо это совсем некрасиво с точки зрения архитектуры.
Реализация алгоритма проста. Проверяете условия для занесения записи в бд, если все ок. Заносите запись в бд. Если не ок, запись в бд не попадает, вот и все)))