Cannot call sendRedirect() after the response has been committed Filter

211
25 августа 2017, 23:11

Вот код:

boolean REDIRECT = false;
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        String URI = request.getRequestURI();
        WebRequest UTILS = null;
        WebSession SESSION = null;
        WebCookies COOKIES = null;
        WebHashes HASHES = null;
        try {
            UTILS = new WebRequest(true, request, response, SITE_KEY_SALT);
            SESSION = UTILS.getSession();
            COOKIES = UTILS.getCookies();
            HASHES = UTILS.getHashes();
            //System.out.println(UTILS.getRequest().getRequestURI());
            //SESSION.set("SIGNUP_ACCESS", HASHES.generate(50));
            if(UTILS.getParams().size() > 0) {
                //if(SESSION.getString(NAME_TOKEN).equals(COOKIES.getValue(NAME_TOKEN))) {
                    String FIRSTNAME = UTILS.getParamString("firstname");
                    String EMAIL = UTILS.getParamString("email");
                    String PASSWORD1 = UTILS.getParamString("p1");
                    String PASSWORD2 = UTILS.getParamString("p2");
                    SESSION.set("firstname", FIRSTNAME);
                    SESSION.set("email", EMAIL);
                    if(!FIRSTNAME.isEmpty()) {
                        if(!EMAIL.isEmpty()) {
                            if(!PASSWORD1.isEmpty()) {
                                if(!PASSWORD2.isEmpty()) {
                                    if (EMAIL.matches(EMAIL_REGEXP) && (PASSWORD1.matches(PASSWORD_REGEXP)&&PASSWORD2.equals(PASSWORD1))) {
                                        dbUser dbUser = new dbUser();
                                        JSONObject DATA = dbUser.signUp(FIRSTNAME, EMAIL, HASHES.hashPassword(EMAIL, PASSWORD1), GetDateMySql());
                                        if(DATA.getBoolean(TYPE_STATUS)) {
                                            String TOKEN = HASHES.generateToken(UTILS.getRequest());
                                            new EmailFactory(UTILS.getRoot()).Send(EMAIL, "Registration confirming", EmailFactory.getTemplate(UTILS.getRoot(), "register"), BuildUrl(UTILS.getBaseUrl(), TOKEN));
                                            dbUser.UserConfirmEmailAdd(DATA.getInt("id"), TOKEN);
                                            //SESSION.set(TYPE_MESSAGE, "You have successfully signed up. <br> Confirm your email.");
                                            SESSION.remove("firstname");
                                            SESSION.remove("email");
                                            SESSION.remove("error-firstname");
                                            SESSION.remove("error-email");
                                            SESSION.remove("error-p1");
                                            SESSION.remove("error-p2");
                                            REDIRECT = false;
                                            UTILS.getResponse().sendRedirect("/tsignup");
                                        } else {
                                            REDIRECT = true;
                                            SESSION.set(TYPE_TEXT_ERROR, DATA.getString(TYPE_MESSAGE));
                                        }
                                    } else {
                                        REDIRECT = true;
                                        SESSION.set(TYPE_TEXT_ERROR, "E-Mail or password incorrect");
                                    }
                                } else {
                                    REDIRECT = true;
                                    SESSION.set("error-p2", "Field cannot be empty");
                                }
                            } else {
                                REDIRECT = true;
                                SESSION.set("error-p1", "Field cannot be empty");
                            }
                        } else {
                            REDIRECT = true;
                            SESSION.set("error-email", "Field cannot be empty");
                        }
                    } else {
                        REDIRECT = true;
                        SESSION.set("error-firstname", "Field cannot be empty");
                    }
                /*} else {
                    REDIRECT = true;
                    SESSION.set(TYPE_TEXT_ERROR, "Invalid token");
                }*/
            }
        } catch (Exception e) {
            REDIRECT = true;
            //e.printStackTrace();
            SESSION.set(TYPE_TEXT_ERROR, "Error. Please try again.");
        }
        if(REDIRECT) {
            //response.sendRedirect(UTILS.getRequest().getRequestURI());
            response.sendRedirect("/signup");
            return;
        } else {
            chain.doFilter(req, resp);
        }

Это фильтр он стоит на странице регистрации. если есть параметры, я их проверяю. Есть такая же форма на главной странице сайта. Я сделал что бы она делал запрос на страницу регистрации, ну и соответственно фильтр проверит параметры и вернёт если ошибка. Но получаю такую ошибку:

java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
    org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:494)
    com.test.filter.SignUp.doFilter(SignUp.java:129)
    com.test.filter.Main.doFilter(Main.java:152)
    com.test.filter.Lang.doFilter(Lang.java:86)
READ ALSO
Как написать? Где взять литературу по данному вопросу или где можно изучить материал

Как написать? Где взять литературу по данному вопросу или где можно изучить материал

Я хочу написать клиент-серверное приложение на Java - начать с простенького чатаПока что мне подходит и сервер на компьютере дома

208
Помогите доделать горизонтальное меню

Помогите доделать горизонтальное меню

Нужно убрать точку перед первым элементом, и убрать отступ у последнего элементаВозможно есть проще решение сделать такое горизонтальное...

207
Помогите реализовать section

Помогите реализовать section

Помогите решить проблему: не понимаю, как реализовать секцию на сайте, без Bootstrap

226
Возможно ли сделать трапецию на CSS без border&#39;а и сделать такую конструкцию

Возможно ли сделать трапецию на CSS без border'а и сделать такую конструкцию

Задача Местоположение – круг разделен на 8 частей + еще одна в центре итого 9Каждая эта часть указывает на район Москвы, как говорят: “Живу...

162