• ベストアンサー

サーブレットはサーバーと同期型、AJAXは非同期型の意味が分かりません

サーブレットはサーバーと同期型、AJAXは非同期型の意味が分かりません サーバーサイドjavaとか、サーブレットはクライアント側(ブラウザ側)と サーバー側とは同期型だけど、AJAXは非同期型なので軽くて、速いと参考書とかに 書いていましたが、非同期型とはどのような意味でしょうか。  クライアントの意図する情報を先読みして、その情報をバッファとしてサーバーとか に取り込んでいるとか、クライアント側に送信しているとか聞いたことがあるのですが。

  • htgo
  • お礼率33% (407/1224)
  • AJAX
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんばんは。 例えばですが・・・、 マイページの「質問履歴」と「回答履歴」がありますよね? 最初は「質問履歴」が表示されると思います。 この時に非同期で「回答履歴」を取得して、いつでも表示できるように準備しておきます。 こうする事で、現行のように「回答履歴」をクリックしてから、暫く(かなり?)待つという事がなくなります。 ここで説明されている、同期、非同期とは、そのレベルの話です。

その他の回答 (1)

回答No.1

> サーバー側とは同期型だけど、AJAXは非同期型なので軽くて、速いと参考書とかに 書いていましたが、 サーバーとクライアント(Ajax)の同期/非同期を別々にすると言うことは不可能です。 > クライアントの意図する情報を先読みして、その情報をバッファとしてサーバーとか に取り込んでいるとか、 とのことですのが、 「先読みして」というのは『凄速』( http://www.sourcenext.com/products/seisv/ )の説明をされていると思います。 「その情報をバッファとしてサーバーに取り込む」というのは何かわかりません。 プロクシサーバーのキャッシュ機能と混同されているような気がしますが。。。 いずれにしても、本当にそんな説明であれば、Ajaxとは全く関係ない説明だと思います。 --------------------------- 同期と非同期の違いは、「ページの移動」を思い浮かべればわかりやすいと思います。 アンカー(リンク)をクリックして、次のページが表示されるまでの間、訪問者はページが表示されるまで待たされることになります。 たとえば、ブログパーツにあるゲームをしながらページが表示されるのを待つ、などと言うことが出来ません。 Ajaxは同期、非同期の両方をサポートしていますので、どちらの方法で作られているかで違いますが、 非同期で作られている場合、 たとえばブログの「続きを読む」などであれば、「続きを読む」をクリックしてから他の記事リストを読んだり(スクロールしたり)、ブログパーツのゲームをしながら待つと言うことも出来ます。 コメントを読んでいる途中であれば、コメントの続きを表示されるまでの間に自分のコメントを投稿する、などのことも可能です。 (ゲームやコメントの表示と投稿の両方がAjax非同期になっている場合。通常は表示までの時間が短すぎて投稿する暇はないと思います。) 同期で作られていれば、そういう他のことをしながら待つ、ということが出来ません。 殆どのブログ訪問者が「続きを読む」をクリックした後は何もせずにひたすら待っていると思いますので、 非同期と同期の「感覚的な違い」がありませんから、非同期と同期の違いがわからないという一因になっていると思います。 「表示まで待つ」というのは非同期/同期の両方で同じです。 「待っている間、何が出来るか」という違いがあります。

関連するQ&A

  • 自宅でサーバを立てる際、JAVA、AJAXが動くためにすることは?

    WEBアプリはまったくの初心者ですが、日々精進しています。今、自宅でWEBサーバを立てようとしています。PHPならPHPのインストールをサーバに行い、PEARならライブラリをしかるべきところに置く必要があります。ではJAVAでできたWEBアプリケーションを動かすには、サーバで何かインストールすることはあるのでしょうか?また、同様にAJAXはどうでしょうか?それとも、JAVAはクライアント側に入っていればよくてサーバ側では何もすることはない、という認識で間違いないでしょうか?

    • ベストアンサー
    • Java
  • サーブレットでチャットサーバー

    JAVAでネットワークプログラミングを勉強したので、サーブレットでチャットを作ってみようと思いました。 そこで質問なのですが、今までにJ2SDKで作ったクライアントプログラムはそのまま使い、 サーバープログラムの部分はサーブレットで処理を行うといったことができるのでしょうか? 通信にはsocketを使用しています。 ご教授お願いします。

    • ベストアンサー
    • Java
  • jqueryMobileがAjax?

    Ajaxという単語の意味がわからなくなりました… jqueryMobileの様々な解説をみているとページ切り替え時とかにAjaxによってとかいう表現が出てきますが、jqueryMobileは既にサーバーから取得したHTMLをjavascriptで表示切り替えしてるだけで、各ページの情報を適宜サーバーから取得しているというわけじゃないと思います。 Ajaxの定義はjavascriptを用いてページ遷移をすることなくサーバーと通信すること、と思っていたので、このjqueryMobileのAjaxという単語の使い方に違和感を覚えます。 jqueryMobileの解説でのAjaxって単語の使われ方は正しいんでしょうか? それともjqueryMobileは実際はクライアントサイドでの表示切り替えだけでなくサーバーとの通信を行ってるんでしょうか? 参考 http://dev.screw-axis.com/doc/jquery_mobile/components/pages_dialogs/page_links/

  • ajaxの使いどころ

    現在、会員制のWebサービスを作成しています。 まだ初期段階ですが、今は管理者用のユーザー管理ページに着手しており、サーバーサイド、クライアントサイド合わせて、およそ7割程度完成しているいるところです。 このページの現時点での実装では、ユーザーの削除、復活、パスワードリセット、登録情報の変更、新規ユーザーの登録といった全機能でajaxを使っています。 また、処理対象のユーザーは一覧のテーブルをクリックして選択するのですが、このクリック時にサーバーからユーザーの詳細情報を取得しており、ここでもajaxを使っています。 要するに、1ページ取得したあと、そのページ内でサーバーと通信を行う必要が生じたら、それはすべてajaxを使うという決まりです。 そこで、ajaxの運用についていくつかわからない点があり、質問させて頂きます。 (1) 会員専用ページという性質を考えると、ajaxでリクエストを送信した際にも、サーバーサイドではそのリクエストに対するセッションが有効かどうかをチェックする必要がありますよね? 一般的な会員向けWEBサービスでは、"ページ遷移毎"だけでなく、"ajaxでの通信毎"でもセッションのチェックを行うものなのでしょうか。 (2) ajaxでの通信時にセッションの有効性をチェックした結果、すでにタイムアウト等でセッションが無効な場合、一般的にはどうするべきなのでしょうか。 個人的にはlogoutページにリロードしたいと考えているのですが、このようにするには、サーバー側がレスポンスを返すときに、{error:{code:'1',message:'session_out'}}のようなJSONを返して、それをjavascript側で確認し、location.hrefを書き換える、というような流れで処理を行うことになるのでしょうか。 (3) そもそも、今回のように「1ページ内で生じるサーバー間通信は全てajaxで補う」という考え方は、一般的なものなのでしょうか。 なにが言いたいかというと、"セキュリティ等を考慮してajaxを使うべきではない処理"と"ajaxを積極的に使うべき処理"(もしくは、"ajaxを使っても差し支えない処理")の判断の仕方、つまり、ajaxの使いドコロがよく分かっていません。 以上3点につきまして、ご教授いただければ幸いです。

    • ベストアンサー
    • AJAX
  • サーブレットコンテキストの意味がわからなくて困っています。

    やさしいJava活用編で勉強しているのですが、 サーブレットコンテキストの説明が書いてなく、ネットで調べても意味不明です。 サーブレットコンテキストは、 javax.servlet.ServletContextインタフェースを実装するクラスのインスタンスで、そのアプリケーションに一つあるとのことですが、 そのサーブレットコンテキストの意味がわからなくて困っています。 HttpSessionのようなもので、クライアントではなく、そのアプリケーションに対して1つあるということですが... ServletContextオブジェクトは、具体的に何の情報を持っているのですか? また以下のソースですが、 なぜ指定されたパスにあるリソースを、ラッパーとして機能するRequestDispatcherオブジェクトを返してから、 forwardで転送するのですか? ServletContext sc = getServletContext(); sc.getRequestDispatcher("/thanks.html").forward(request, response);

    • ベストアンサー
    • Java
  • AjaxとJava

    私はAjaxの勉強をしようと思っています。 そのため、簡単なサーバ側はJavaのアプリケーションを作って学ぼうと思ったのですが、どうやって通信すればよいかよくわかりません。 一応わからないなりにいろいろ方法を考えてみたのですが、どれも疑問点があります。 (1)、サーバをJavaで作成して、Ajaxと通信する方法 (2)、JSPを使って、Ajaxと通信する方法 どちらの方法も、 (1)どうやってAjaxからの(正確にはJavaScriptからの)リクエストを受け取って、値を取り出したらいいか (2)どうやってサーバからJavaScriptにデータを送るのか がわかりません(送るパケットは極めてシンプルなもの、たとえば数字とか文字列がいいです)。 入門サイトはほとんどのサーバ側はPHPで作っているので、あまり参考にならないと考えています。 なにか参考になるようなサイトなどはないでしょうか? お返事お待ちしております。

  • ASP.NET MVCのAjaxフォーム検証

    いつも大変にお世話になります。 今回ご相談させていただきたいのは、AJAXフォーム送信と、検証の仕方ついてです。 画面遷移なしでフォーム内容を送信し、データベースを更新したく思っています。 通常のフォーム検証と送信はできていますが、Ajaxになるとさっぱりわかりません。 欲しい挙動は、 1.Ajaxでフォーム内容を送信(その前に内容の検証 2.サーバサイドでフォーム内容を受け、DBを更新して、結果をjsonで返却 3.クライアント側で結果を受け、画面の一部を書き換え、 この「3」なのですが、書き換える内容がいくつかあるので、ASP.NET AJAXのような"UpdatePanel"は使えません。 あくまでjsonを読む必要がある感じです。 質問なのですが、ここにあるような、「フォームを送信」して、「結果をjsonでもらう」処理は可能なのでしょうか? 結果の取得は非同期?になるような感じですが、Ajaxは対応できるでしょうか? コード例があれば最高ですが、どんな些細なご意見でも構いませんので、拝聴させていただけないでしょうか? 今すぐにコードを完成させなければいけない訳ではないので、若干の余裕がありますが、基本設計や画面設計に関わる部分なので、少し急いでおります。 なにとぞ皆様のお知恵をお貸しください。

  • AJAXとSEO。同期通信とPHP送信の違い

    「AJAX」「SEO」「同期通信」「PHPでPOST送信」について、幾つか分からないことがあるので教えてください ■質問1 ・AJAX通信すると、SEO的に不利なのでしょうか? 例えば、AJAXでCSVファイルを読み込む場合はどうなるでしょうか? もしかして、実装方法による? 下記例で、何か違いはあるでしょうか? ・例1 … 非同期。ページ読込後にCSV読込(そもそもこの実装は可能?) ・例2 … 非同期。ページ読込前にCSV読込 ・例3 … 同期。ページ読込後にCSV読込 ・例4 … 同期。ページ読込前にCSV読込 ■質問2 ・AJAX通信で検索ボタンを押したページ結果は、クローラーされることはあるのでしょうか? サーバからデータを取得しているから反映される? 非同期だったら、反映されない? 同期だったらされる? ■質問3 ・AJAX通信の同期処理の意味が分かりません(jQueryのasyncをfalseなど)。非同期通信がAJAXだと思うのですが、AJAX通信の同期処理というのは、何なのでしょうか? 例えば、「PHPでPOST送信」するのと、原理的には全く同じということになるのでしょうか?(PHPで実装するか、js実装するかの違いだけ?) 最終的に、SEOを重視する場合は(非同期の操作性を捨て)同期処理で実装した方が良い、ということになるのでしょうか?

    • ベストアンサー
    • AJAX
  • Ajax&CGI

    Ajax勉強中の者です。 勉強のために簡単なAjaxプログラムを作成しているのですが、早速上手くいかず困っているので質問させて頂きます。 ※ソース等は手元にないのであまり詳しい状況は説明できないかもしれませんが・・。 実現したいことはテキストボックスがあり、そこにIPアドレスを入力しボタンを押すとサーバへ入力した値を送信し、サーバ側では送信された値を受け取りいろいろ処理をした後にクライアントへレスポンスし、クライアントで表示する みたいなことをやりたいのですが(説明下手ですみません・・)。 サーバ側はCGI(Perl)で作成しており、処理は簡単に説明するとクライアントから受け取ったIPアドレスでPingを打ってその結果をクライアントへ返すみたいな感じなのですが、上手く動作せず困っています。 PerlではNet::Pingモジュールを使ってIPアドへPingを実行しています。エラーの内容ですがXMLHttpRequestのstatusは500(サーバー内部エラー)となっており、”エラーを特定できません”と表示されます。 使用しているWebサーバはApacheですがこれは自分がテスト用PC(Linux)へインストールしたもので、もしかしたらサーバ構築に問題があるのかなぁ~なんて不安にもなっています。 テキストボックスに入力したIPアドをサーバで受信し、ブラウザにAjaxで”入力されたアドレスは~です”と表示させたりは動作したのですが・・。 また、Apacheの設定で拡張子.plをCGIとして扱わないようにすると(httpd.confファイルのAddHandlerへ.plを追記しない)サーバの処理結果でなくソースが丸ごと表示されてしまい困っています・・。 ただ拡張子.plをCGIとして扱うと処理結果がレスポンスされます。 この現象についてもどなたか原因を説明して頂けると感謝です。 原因&解決方法など分かる方はぜひご教授ください。 よろしくお願い致します。

  • jspとサーブレット

    jspはサーブレットに比べるとソースファイルを生成しなければならない分、処理速度が遅くなると書かれてたのですが、ソースファイルを生成とはどういうことなのかわかりません。htmlに埋め込まれたJAVAを取り出すということでしょうか? またサーブレットもJSPもクライアントから要求がきてからプログラムをコンパイルしてるのでしょうか?すなわちコンパイルされてないままWEBサーバに保管されてるのですか? 2点よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう