1

EclipseJUNOIDEとtomcat7.0を使用しています。

Webアプリケーションがあります。私が持っているアプリケーションでは:

  1. サーブレット

  2. JSPページ

  3. HTML-メインページ。

メインページには、送信ボタンがクリックされ、サーブレットが一致するjspページにリダイレクトされると、サーブレットにリダイレクトするフォームがあります(サーバーからデータを取得する必要があるため)。これで、jspページを更新すると、サーブレットはリクエストでNULLを取得します。だから私の質問は再提出する方法ですか?サーバーからの新しいデータを表示したいからです。

注:サーブレットはソケットを使用してサーバーと通信するため、ユーザーが送信ボタンを押すと、リクエストはサーブレットにリダイレクトされ、サーブレットはリクエストをサーバーにリダイレクトして必要なデータを取得します。これで、サーブレットがデータを受信すると、データがjspページに転送され、jspページにhtmlとして表示されます。

    if (request.getParameter("submit").equals("Show Taxis at Driving"))
    {
           requests.add("driving");
           to_server.writeObject(requests);
           to_server.flush();
           requests.removeAllElements();

           try{
               driving = (Vector)from_server.readObject();
               request.setAttribute("driving", driving);
               //request.getRequestDispatcher("/WEB-INF/driving_page.jsp").forward(request, response);
               RequestDispatcher disp = getServletContext().getRequestDispatcher("/WEB-INF/driving_page.jsp");
               disp.forward(request, response);
           }catch(ClassNotFoundException e)
           {
               e.printStackTrace();
           }
    }
    else if (request.getParameter("submit").equals("Add Passenger to Taxi"))
    {
        requests.add("taxis");
        requests.add("passengers");
        to_server.writeObject(requests);
        to_server.flush();
        requests.removeAllElements();

        try {
            taxis_waiting  = (Vector)from_server.readObject();
            passengers = (Vector)from_server.readObject();
            request.setAttribute("taxis", taxis_waiting);
            request.setAttribute("passengers", passengers);
            request.getRequestDispatcher("/WEB-INF/add_passenger_to_taxi.jsp").forward(request, response);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            request.getRequestDispatcher("error_page.jsp").forward(request, response);      
        }
    }
4

2 に答える 2

1

この問題は、セッションを使用して簡単に解決できます。これは代替ソリューションになります。

if(session.getAttribute("REFRESH")!=null){
    response.sendRedirect("../your_servlet");
}
else{    
session.setAttribute("REFRESH","TRUE");
}

上記のコードを jsp ページに配置できます。ページが最初にロードされると、セッション値がチェックされますが、そのようなセッションは保存されないため、コードの else 部分のようにセッションが作成されます。その後、ユーザーが更新ボタンをクリックすると、セッションに値があり、リダイレクトが発生します。

ただし、循環リダイレクトを回避するには、サーベルトでセッションを削除する必要があります。したがって、次のコードをサーブレットに配置する必要があります。

session.removeAttribute("REFRESH");
于 2015-07-04T12:10:13.400 に答える