Как отразить изменения прослушивателя событий Firebase в элементе DIV на веб-странице

Я настроил Firebase admin sdk для java и использовал его внутри сервлета.

Я установил valueeventlistener на узле, где значение постоянно меняется. Я хочу показать измененное значение внутри элемента Div на странице HTML, которую я распечатал.

Вот код, который я пробовал: значение выводится на консоль, но значение не отображается внутри элемента DIV.

Я ничего не знаю об AJAX и имею ограниченное знание javascript. Пожалуйста, помогите мне показать значение.

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.auth.FirebaseCredentials;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

@WebServlet("/WebWaitlistViewServelet")
public class WebWaitlistViewServelet extends HttpServlet {
private static final long serialVersionUID = 1L;

public WebWaitlistViewServelet() {
    super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    PrintWriter pw = response.getWriter();

    try {

        String cityName=request.getParameter("city");

        String restId = request.getParameter("restid");

        String userId = request.getParameter("userid");

        if(cityName == null || restId == null || userId == null){
            System.out.println("Error getting values");
            return;
        }else{
            System.out.println(cityName+" "+restId+" "+userId);
        }


        pw.println("<HTML>");

            pw.println("<HEAD>");

                pw.println("<TITLE>Your current position in the waitlist is:</TITLE>");

            pw.println("</HEAD>");

            pw.println("<BODY>");

                pw.println("<DIV id=\"test\" align=\"center\">");

                pw.println("</DIV><br/>");

            pw.println("<BODY>");

        pw.println("</HTML>");

        pw.flush();


        InputStream is = getServletContext().getResourceAsStream("/WEB-INF/firebaseauth/firebase_admin_sdk_key.json");

        // Initialize the app with a service account, granting admin privileges
        FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredential(FirebaseCredentials.fromCertificate(is))
            .setDatabaseUrl("https://restaurantrepo.firebaseio.com")
            .build();
        try {
            FirebaseApp.initializeApp(options);
        } catch (Exception e) {
            //
        }



        // As an admin, the app has access to read and write all data, regardless of Security Rules
        DatabaseReference waitlistRef = FirebaseDatabase.getInstance().getReference().child(cityName).child(restId).child("waitlist");

        ValueEventListener eventListener = new ValueEventListener(){

            @Override
            public void onCancelled(DatabaseError error) {
                System.out.println("Sorry. some error occured");
            }

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {



                if(dataSnapshot.getChildrenCount()==1 || dataSnapshot.getChildrenCount() == 0 ){
                    System.out.println("You are no longer in the waitlist");
                }else
                    pw.println("<script>document.getElementById('test').innerHTML= '"+dataSnapshot.getValue(String.class)+"' </script>");

                    System.out.println("the changed value is "+dataSnapshot.getValue(String.class));

                }

            }

        };

        waitlistRef.addValueEventListener(eventListener);

    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        try {
            pw.close();
        } catch (Exception e) {
            //do nothing here
        }
    }


}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}

}

person Kushan    schedule 18.08.2017    source источник
comment
Не сообщайте о том же вопросе. Если вы не получаете помощь, обновите исходный вопрос, чтобы увеличить шансы на получение помощи. Хороший способ сделать это — сократить код до минимума, необходимого для воспроизведения проблемы. Действительно ли нужны все технологии, которые у вас есть сейчас? Или вы бы тоже застряли, если бы это было только на JavaScript? Это действительно должен быть сервлет? Или это также может быть в любой программе Java? Чем меньше код, тем легче будет помочь, и тем больше вероятность, что кто-то сможет помочь.   -  person Frank van Puffelen    schedule 18.08.2017
comment
Извините, Фрэнк, я думал, что если сделать это проще с меньшим количеством логики, это поможет людям ответить. В любом случае... Это не обязательно должен быть сервлет. Проблема в том, что я не очень разбираюсь в технологиях на стороне сервера, я разработчик Android, поэтому мало знаю о других технологиях. Сейчас я пытаюсь сделать это приложением nodejs. Так выглядит проще, но я никогда не использовал это раньше. Я попробую это.   -  person Kushan    schedule 18.08.2017
comment
Сокращение кода может помочь получить ответ. Но вы можете отредактировать свой исходный вопрос, чтобы сделать это.   -  person Frank van Puffelen    schedule 18.08.2017