2017-03-08 5 views
0

週にスケジュールを表示するアプリケーションがあります。すべての予定はデータベースエントリとして保存されます。私はクラス(ScheduleCells)を使ってこれらのエントリを管理し、それらをBean(ScheduleCellbean)に格納し、2次元のArrayListを返します。私のindex.jspには、このArrayListを取得してスケジュールを記入する次のコードがあります。 index.jspでは、サーブレットにリクエストを送信します。JSPを使用して遅滞なくスケジュールを読み込むための良い方法

のindex.jsp:

<script type="text/javascript"> 
    fillSchedule = function (w) { 

     var xhr = new XMLHttpRequest(); 
     xhr.open("POST", "schedule?w=" + w); 
     xhr.send(); 

     <% 
      int i; 
      int j; 
      int w = 0; 

      if (session.getAttribute("w") != null) { 
       w = (Integer) session.getAttribute("w"); 
      } 

      ScheduleCells sc = new ScheduleCells(); 

      for (i = 0; i < 9; i++) { 

       for (j = 0; j < 5; j++) { 

        ScheduleCellBean cell = sc.getCellByHDW(i + 1, j + 1, w); 

         if (cell.getExists()) { 
     %> 

     createNewAppointment(<%= j%>, <%= i%>, 
      "<%= cell.getSubject_scheduled_subjectabbr()%>", 
      "<%= cell.getUser_scheduled_userabbr()%>", 
      "<%= cell.getScheduled_groupname()%>"); 

     <% }}}%> 

    }; 

    fillSchedule(7); 

</script> 

ScheduleCellbean:

public class ScheduleCellBean extends ScheduleCells { 

    private boolean exists = false; 
    private String scheduled_id; 
    private String scheduled_date; 
    private String scheduled_hour; 
    private String user_scheduled_firstname; 
    private String user_scheduled_lastname; 
    private String user_scheduled_username; 
    private String user_scheduled_password; 
    private String user_scheduled_userabbr; 
    private String user_scheduled_subjectname; 
    private String user_scheduled_subjectabbr; 
    private String scheduled_groupname; 
    private String subject_scheduled_subjectname; 
    private String subject_scheduled_subjectabbr; 
    private String scheduled_datetimerequest; 
    private String user_request_firstname; 
    private String user_request_lastname; 
    private String user_request_username; 
    private String user_request_password; 
    private String user_request_userabbr; 
    private String user_request_subjectname; 
    private String user_request_subjectabbr; 

    //Getters And Setters. 

} 

ScheduleCellServlet.jsp:

@WebServlet(name = "ScheduleCell", urlPatterns = {"/schedule"}) 
public class ScheduleCellServlet extends HttpServlet { 

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

     HttpSession session = request.getSession(); 
     session.setAttribute("w", Integer.parseInt(request.getParameter("w"))); 

    } 

    //Default HTTP Servlet functions. 

} 

すべてがうまく動作しますが、私は、サーブレットで働いているので、あります遅延が発生し、スケジュールがロードされないように見えますが、セッション属性をリフレッシュすると適切なスケジュールがロードされます。したがって、私が行った変更(例:fillSchedule(8))は、ページをリロードするときにのみ発生します。しかし、私はインタラクティブなスケジュールが好きです。つまり、ユーザーは1週間を選択でき、その週の正しいスケジュールが即座にポップアップします。私の選択したスケジュールを見直しても、私が選んだスケジュールは不足していますが、同じ瞬間に7週目のスケジュールが再ロードされていますが、ページを再表示すると表示されます。

私の質問は次のとおりです。手動でページを更新する必要はありません。

事前にお問い合わせいただきありがとうございます。

+0

非同期にページを更新せずに取得したデータを呼び出すために使用アヤックス。 –

+0

以前にAJAXを使ったことがないので、参考にしてもらえますか? –

+0

http://mycodingtricks.com/jquery/jquery-auto-load-and-refresh-div-on-ajax-call-without-reloading-page/ urlを参考にしてください。 –

答えて

0

新しいレスポンスのために、JSPページを自動更新します。

コードスニペット:

<%@ page import="java.io.*,java.util.*" %> 
<html> 
<head> 
<title>Auto Refresh Header Example</title> 
</head> 
<body> 
<center> 
<h2>Auto Refresh Header Example</h2> 
<% 
    // Set refresh, autoload time as 5 seconds 
    response.setIntHeader("Refresh", 5); 
    // Get current time 
    Calendar calendar = new GregorianCalendar(); 
    String am_pm; 
    int hour = calendar.get(Calendar.HOUR); 
    int minute = calendar.get(Calendar.MINUTE); 
    int second = calendar.get(Calendar.SECOND); 
    if(calendar.get(Calendar.AM_PM) == 0) 
     am_pm = "AM"; 
    else 
     am_pm = "PM"; 
    String CT = hour+":"+ minute +":"+ second +" "+ am_pm; 
    out.println("Crrent Time: " + CT + "\n"); 
%> 
</center> 
</body> 
</html> 
+0

あなたの例はうまくいきますが、私はこれを実装することはできません。ページをリフレッシュすると、今週は再び7に戻り、ある間隔でリフレッシュするとブラウザが遅くなり、サーバーへの新しいリクエストがすべてひどくなります。 –

関連する問題