У меня есть фильтр сервлетов.Реакция изменения фильтра сервлета?
public class MyFilter extends BaseServletRequestFilter {
@Override
protected void afterExecutingFilterChain(final ServletRequest requset, FilterResponseWrapper response) throws ServletException {
//To do
}
@Override
protected void beforeExecutingFilterChain(final ServletRequest requset, final FilterResponseWrapper response) throws ServletException{
//Here request needs to be intercepted
//To do
}
}
У меня есть фильтр фильтрации. Мое требование - мне нужно перехватить запрос. Мне нужно проверить некоторое логическое значение в запросе. Если логическая переменная истинна, обработка запроса должна быть продолжена. Если логический variale является ложным, запрос не должен продолжаться, и мне нужно отправить какой-то пользовательский ответ, как показано ниже.
public enum CustomStatus {
OK("Ok"),
BAD_REQUEST("BadRequest");
private final String value;
CustomStatus(String v) {
value = v;
}
public String value() {
return value;
}
public static CustomStatus fromValue(String v) {
for (CustomStatus c: CustomStatus.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}
Если значение запроса булевой переменной является ложным, то я должен установить над хСтатус в ответ и вернуться без обработки запроса. Как я могу это сделать?
Спасибо!
Спасибо за ваш ответ. Могу ли я отправить свой CustomStatus в качестве ответа? – user755806
Не напрямую. Ответ будет HttpServletResponse, который содержит всю информацию, возвращенную в браузер. Вы можете сериализовать CustomStatus в ответ, используя ObjectOutputStream с HttpServletResponse.getOutputStream(), но это довольно продвинуто. Легче просто установить статус, например. response.setStatus (403). Вы также можете установить некоторый текст в заголовках (response.setHeader (имя, значение)). – NickJ